authing_ruby 1.0.6 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (125) hide show
  1. checksums.yaml +4 -4
  2. data/lib/authing_ruby/GraphQLAPI.rb +14 -3
  3. data/lib/authing_ruby/authentication/AuthenticationClient.rb +71 -60
  4. data/lib/authing_ruby/common/GraphqlClient.rb +42 -4
  5. data/lib/authing_ruby/graphql/mutations/updatePhone.gql +63 -0
  6. data/lib/authing_ruby/management/ManagementClient.rb +1 -1
  7. data/lib/authing_ruby/management/ManagementTokenProvider.rb +7 -3
  8. data/lib/authing_ruby/test/js_sdk_test/2.registerByPhoneCode.js +130 -0
  9. data/lib/authing_ruby/test/js_sdk_test/3.sendSMS.js +23 -0
  10. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/browser/index.min.js +1 -1
  11. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/lib/authentication/AuthenticationClient.d.ts +41 -1
  12. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/lib/authentication/AuthenticationClient.js +60 -2
  13. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/lib/authentication/QrCodeAuthenticationClient.js +6 -3
  14. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/lib/authentication/SocialAuthenticationClient.d.ts +4 -0
  15. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/lib/authentication/SocialAuthenticationClient.js +6 -5
  16. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/lib/authentication/types.d.ts +10 -0
  17. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/lib/authentication/types.js +1 -1
  18. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/lib/common/GraphqlClient.js +10 -8
  19. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/lib/common/HttpClient.js +17 -15
  20. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/lib/graphqlapi.d.ts +12 -1
  21. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/lib/graphqlapi.js +192 -2
  22. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/lib/management/ApplicationsManagementClient.js +5 -3
  23. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/lib/management/GroupsManagementClient.d.ts +5 -1
  24. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/lib/management/GroupsManagementClient.js +29 -11
  25. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/lib/management/ManagementClient.d.ts +5 -0
  26. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/lib/management/ManagementClient.js +15 -2
  27. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/lib/management/OrgManagementClient.d.ts +34 -1
  28. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/lib/management/OrgManagementClient.js +71 -3
  29. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/lib/management/RolesManagementClient.d.ts +6 -1
  30. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/lib/management/RolesManagementClient.js +45 -10
  31. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/lib/management/UsersManagementClient.d.ts +34 -3
  32. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/lib/management/UsersManagementClient.js +189 -52
  33. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/lib/management/types.d.ts +10 -0
  34. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/lib/management/types.js +1 -1
  35. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/lib/utils.d.ts +1 -1
  36. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/lib/utils.js +1 -1
  37. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/lib/version.d.ts +1 -1
  38. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/lib/version.js +2 -2
  39. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/types/graphql.v2.d.ts +661 -32
  40. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/main/types/graphql.v2.js +30 -19
  41. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/lib/authentication/AuthenticationClient.d.ts +41 -1
  42. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/lib/authentication/AuthenticationClient.js +61 -3
  43. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/lib/authentication/QrCodeAuthenticationClient.js +6 -3
  44. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/lib/authentication/SocialAuthenticationClient.d.ts +4 -0
  45. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/lib/authentication/SocialAuthenticationClient.js +6 -5
  46. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/lib/authentication/types.d.ts +10 -0
  47. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/lib/authentication/types.js +1 -1
  48. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/lib/common/GraphqlClient.js +10 -8
  49. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/lib/common/HttpClient.js +17 -15
  50. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/lib/graphqlapi.d.ts +12 -1
  51. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/lib/graphqlapi.js +192 -2
  52. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/lib/management/ApplicationsManagementClient.js +5 -3
  53. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/lib/management/GroupsManagementClient.d.ts +5 -1
  54. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/lib/management/GroupsManagementClient.js +30 -12
  55. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/lib/management/ManagementClient.d.ts +5 -0
  56. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/lib/management/ManagementClient.js +15 -2
  57. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/lib/management/OrgManagementClient.d.ts +34 -1
  58. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/lib/management/OrgManagementClient.js +72 -4
  59. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/lib/management/RolesManagementClient.d.ts +6 -1
  60. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/lib/management/RolesManagementClient.js +46 -11
  61. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/lib/management/UsersManagementClient.d.ts +34 -3
  62. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/lib/management/UsersManagementClient.js +190 -53
  63. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/lib/management/types.d.ts +10 -0
  64. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/lib/management/types.js +1 -1
  65. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/lib/utils.d.ts +1 -1
  66. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/lib/utils.js +1 -1
  67. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/lib/version.d.ts +1 -1
  68. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/lib/version.js +2 -2
  69. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/types/graphql.v2.d.ts +661 -32
  70. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/module/types/graphql.v2.js +29 -18
  71. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/lib/authentication/AuthenticationClient.d.ts +41 -1
  72. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/lib/authentication/AuthenticationClient.js +60 -2
  73. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/lib/authentication/QrCodeAuthenticationClient.js +6 -3
  74. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/lib/authentication/SocialAuthenticationClient.d.ts +4 -0
  75. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/lib/authentication/SocialAuthenticationClient.js +6 -5
  76. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/lib/authentication/types.d.ts +10 -0
  77. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/lib/authentication/types.js +1 -1
  78. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/lib/common/GraphqlClient.js +10 -8
  79. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/lib/common/HttpClient.js +17 -15
  80. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/lib/graphqlapi.d.ts +12 -1
  81. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/lib/graphqlapi.js +192 -2
  82. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/lib/management/ApplicationsManagementClient.js +5 -3
  83. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/lib/management/GroupsManagementClient.d.ts +5 -1
  84. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/lib/management/GroupsManagementClient.js +29 -11
  85. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/lib/management/ManagementClient.d.ts +5 -0
  86. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/lib/management/ManagementClient.js +15 -2
  87. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/lib/management/OrgManagementClient.d.ts +34 -1
  88. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/lib/management/OrgManagementClient.js +71 -3
  89. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/lib/management/RolesManagementClient.d.ts +6 -1
  90. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/lib/management/RolesManagementClient.js +45 -10
  91. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/lib/management/UsersManagementClient.d.ts +34 -3
  92. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/lib/management/UsersManagementClient.js +189 -52
  93. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/lib/management/types.d.ts +10 -0
  94. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/lib/management/types.js +1 -1
  95. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/lib/utils.d.ts +1 -1
  96. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/lib/utils.js +1 -1
  97. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/lib/version.d.ts +1 -1
  98. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/lib/version.js +2 -2
  99. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/types/graphql.v2.d.ts +661 -32
  100. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/build/umd/types/graphql.v2.js +30 -19
  101. data/lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/package.json +1 -1
  102. data/lib/authing_ruby/test/js_sdk_test/node_modules/dotenv/CHANGELOG.md +210 -0
  103. data/lib/authing_ruby/test/js_sdk_test/node_modules/dotenv/LICENSE +23 -0
  104. data/lib/authing_ruby/test/js_sdk_test/node_modules/dotenv/README.md +275 -0
  105. data/lib/authing_ruby/test/js_sdk_test/node_modules/dotenv/config.js +11 -0
  106. data/lib/authing_ruby/test/js_sdk_test/node_modules/dotenv/lib/cli-options.js +13 -0
  107. data/lib/authing_ruby/test/js_sdk_test/node_modules/dotenv/lib/env-options.js +18 -0
  108. data/lib/authing_ruby/test/js_sdk_test/node_modules/dotenv/lib/main.js +118 -0
  109. data/lib/authing_ruby/test/js_sdk_test/node_modules/dotenv/package.json +57 -0
  110. data/lib/authing_ruby/test/js_sdk_test/node_modules/dotenv/types/index.d.ts +59 -0
  111. data/lib/authing_ruby/test/js_sdk_test/node_modules/dotenv/types/test.ts +19 -0
  112. data/lib/authing_ruby/test/js_sdk_test/node_modules/dotenv/types/tsconfig.json +15 -0
  113. data/lib/authing_ruby/test/js_sdk_test/node_modules/dotenv/types/tslint.json +6 -0
  114. data/lib/authing_ruby/test/js_sdk_test/node_modules/follow-redirects/index.js +0 -4
  115. data/lib/authing_ruby/test/js_sdk_test/node_modules/follow-redirects/package.json +1 -1
  116. data/lib/authing_ruby/test/js_sdk_test/package-lock.json +7 -7
  117. data/lib/authing_ruby/test/js_sdk_test/package.json +3 -2
  118. data/lib/authing_ruby/test/js_sdk_test/yarn.lock +71 -0
  119. data/lib/authing_ruby/test/mini_test/TestAuthenticationClient.rb +36 -22
  120. data/lib/authing_ruby/test/mini_test/TestManagementClient.rb +3 -2
  121. data/lib/authing_ruby/test/mini_test/TestSMSandEmail.rb +46 -3
  122. data/lib/authing_ruby/test/sms.rb +18 -0
  123. data/lib/authing_ruby/utils/utils.rb +68 -0
  124. data/lib/authing_ruby/version.rb +1 -1
  125. metadata +19 -2
@@ -1,9 +1,9 @@
1
1
  # 测试内容: 用户认证模块-认证核心模块
2
- # 如何运行: ruby ./lib/test/mini_test/TestAuthenticationClient.rb
2
+ # 如何运行: ruby ./lib/authing_ruby/test/mini_test/TestAuthenticationClient.rb
3
3
 
4
4
  require "minitest/autorun" # Minitest
5
5
  require "./lib/authing_ruby.rb" # 模块主文件
6
- require "./lib/test/helper.rb"
6
+ require "./lib/authing_ruby/test/helper.rb"
7
7
  require 'dotenv'
8
8
  Dotenv.load('.env.test') # 你可以编辑这个文件来修改环境变量
9
9
  # 备注: 不要用 staging 或 production 环境的用户池来测试,新建一个用户池专门做测试,因为测试期间会注册随机名字的用户
@@ -11,15 +11,34 @@ Dotenv.load('.env.test') # 你可以编辑这个文件来修改环境变量
11
11
  class TestAuthenticationClient < Minitest::Test
12
12
  def setup
13
13
  options = {
14
- appHost: ENV["appHost"], # "https://rails-demo.authing.cn",
15
- appId: ENV["appId"], # "60800b9151d040af9016d60b"
14
+ # appHost: ENV["appHost"], # "https://rails-demo.authing.cn",
15
+ # appId: ENV["appId"], # "60800b9151d040af9016d60b"
16
+ appId: "60ab26fe5be730bfc1742c68",
17
+ appHost: "https://hn-staging.authing.cn",
16
18
  }
17
19
  @authenticationClient = AuthingRuby::AuthenticationClient.new(options)
18
20
  @helper = Test::Helper.new
19
21
  end
20
22
 
23
+ # 测试: 手机号+验证码+密码 注册
24
+ # 需要手动测试(填验证码)
25
+ # ruby ./lib/authing_ruby/test/mini_test/TestAuthenticationClient.rb -n test_registerByPhoneCode
26
+ def test_registerByPhoneCode
27
+ phone = '13556136684'
28
+ code = '8086'
29
+ password = '1234567890'
30
+ res = @authenticationClient.registerByPhoneCode(phone, code, password)
31
+ # puts '拿到的结果是:-----'
32
+ # puts res
33
+ # {:code=>2026, :message=>"用户已存在,请直接登录!", :data=>nil}
34
+ # {:code=>2001, :message=>"验证码不正确!", :data=>nil}
35
+
36
+ # 如果成功
37
+ # {"id"=>"60ad0c49d6e166f9fe23ba4d", "arn"=>"arn:cn:authing:60ab26fe478f98290befefaa:user:60ad0c49d6e166f9fe23ba4d", "userPoolId"=>"60ab26fe478f98290befefaa", "status"=>"Activated", "username"=>nil, "email"=>nil, "emailVerified"=>false, "phone"=>"13556136684", "phoneVerified"=>true, "unionid"=>nil, "openid"=>nil, "nickname"=>nil, "registerSource"=>["basic:phone-code"], "photo"=>"default-user-avatar.png", "password"=>"0361a6088087f31edd172c4f6076c0e6", "oauth"=>nil, "token"=>nil, "tokenExpiredAt"=>nil, "loginsCount"=>0, "lastLogin"=>nil, "lastIP"=>nil, "signedUp"=>nil, "blocked"=>false, "isDeleted"=>false, "device"=>nil, "browser"=>nil, "company"=>nil, "name"=>nil, "givenName"=>nil, "familyName"=>nil, "middleName"=>nil, "profile"=>nil, "preferredUsername"=>nil, "website"=>nil, "gender"=>"U", "birthdate"=>nil, "zoneinfo"=>nil, "locale"=>nil, "address"=>nil, "formatted"=>nil, "streetAddress"=>nil, "locality"=>nil, "region"=>nil, "postalCode"=>nil, "city"=>nil, "province"=>nil, "country"=>nil, "createdAt"=>"2021-05-25T14:40:09+00:00", "updatedAt"=>"2021-05-25T14:40:09+00:00", "externalId"=>nil}
38
+ end
39
+
21
40
  # 测试邮箱+密码注册
22
- # ruby ./lib/test/mini_test/TestAuthenticationClient.rb -n test_registerByEmail
41
+ # ruby /lib/authing_ruby/test/mini_test/TestAuthenticationClient.rb -n test_registerByEmail
23
42
  def test_registerByEmail
24
43
  random_string = @helper.randomNumString()
25
44
  email = "#{random_string}@qq.com"
@@ -34,7 +53,7 @@ class TestAuthenticationClient < Minitest::Test
34
53
  end
35
54
 
36
55
  # 测试用户名+密码注册
37
- # ruby ./lib/test/mini_test/TestAuthenticationClient.rb -n test_registerByUsername
56
+ # ruby /lib/authing_ruby/test/mini_test/TestAuthenticationClient.rb -n test_registerByUsername
38
57
  def test_registerByUsername
39
58
  random_string = @helper.randomString(9)
40
59
  username = random_string
@@ -44,7 +63,7 @@ class TestAuthenticationClient < Minitest::Test
44
63
  end
45
64
 
46
65
  # 测试邮箱+密码登录
47
- # ruby ./lib/test/mini_test/TestAuthenticationClient.rb -n test_loginByEmail
66
+ # ruby /lib/authing_ruby/test/mini_test/TestAuthenticationClient.rb -n test_loginByEmail
48
67
  def test_loginByEmail
49
68
  # 第一步:先注册
50
69
  random_string = @helper.randomString(9)
@@ -58,7 +77,7 @@ class TestAuthenticationClient < Minitest::Test
58
77
  end
59
78
 
60
79
  # 测试用户名+密码登录
61
- # ruby ./lib/test/mini_test/TestAuthenticationClient.rb -n test_loginByUsername
80
+ # ruby /lib/authing_ruby/test/mini_test/TestAuthenticationClient.rb -n test_loginByUsername
62
81
  def test_loginByUsername
63
82
  random_string = @helper.randomString(9)
64
83
  username = random_string
@@ -73,7 +92,7 @@ class TestAuthenticationClient < Minitest::Test
73
92
  # end
74
93
 
75
94
  # 测试获取当前用户
76
- # ruby ./lib/test/mini_test/TestAuthenticationClient.rb -n test_getCurrentUser
95
+ # ruby ./lib/authing_ruby/test/mini_test/TestAuthenticationClient.rb -n test_getCurrentUser
77
96
  def test_getCurrentUser
78
97
  # 注册+登录
79
98
  username = "test_getCurrentUser_#{@helper.randomString()}"
@@ -87,7 +106,7 @@ class TestAuthenticationClient < Minitest::Test
87
106
  end
88
107
 
89
108
  # 测试退出登录
90
- # ruby ./lib/test/mini_test/TestAuthenticationClient.rb -n test_logout
109
+ # ruby /lib/authing_ruby/test/mini_test/TestAuthenticationClient.rb -n test_logout
91
110
  def test_logout
92
111
  # 如何测试?
93
112
  # 1. 先登录, 用身份去做一些事情 (比如修改 nickname)
@@ -119,11 +138,13 @@ class TestAuthenticationClient < Minitest::Test
119
138
  end
120
139
 
121
140
  # 测试: 修改用户资料
122
- # ruby ./lib/test/mini_test/TestAuthenticationClient.rb -n test_updateProfile
141
+ # 需要手动测试(确保用户名+密码账号的确存在)
142
+ # ruby ./lib/authing_ruby/test/mini_test/TestAuthenticationClient.rb -n test_updateProfile
123
143
  def test_updateProfile
124
144
  # 先登录
125
145
  username = 'zhengcheng123'
126
146
  password = "123456789"
147
+ @authenticationClient.registerByUsername(username, password)
127
148
  @authenticationClient.loginByUsername(username, password)
128
149
 
129
150
  # 进行第一次修改
@@ -141,7 +162,7 @@ class TestAuthenticationClient < Minitest::Test
141
162
  end
142
163
 
143
164
  # 测试: 检查密码强度
144
- # ruby ./lib/test/mini_test/TestAuthenticationClient.rb -n test_checkPasswordStrength
165
+ # ruby /lib/authing_ruby/test/mini_test/TestAuthenticationClient.rb -n test_checkPasswordStrength
145
166
  # 注意, 在 Authing 用户池里 -> "扩展能力" -> "自定义密码加密",选的是 "用户可使用任意非空字符串作为密码"
146
167
  def test_checkPasswordStrength
147
168
  password = "123"
@@ -162,7 +183,7 @@ class TestAuthenticationClient < Minitest::Test
162
183
  end
163
184
 
164
185
  # 测试: 更新用户密码
165
- # ruby ./lib/test/mini_test/TestAuthenticationClient.rb -n test_updatePassword
186
+ # ruby /lib/authing_ruby/test/mini_test/TestAuthenticationClient.rb -n test_updatePassword
166
187
  def test_updatePassword
167
188
  # 例子1:如果不登陆,直接改,会提示尚未登录
168
189
  # oldPassword = "123456789"
@@ -188,14 +209,6 @@ class TestAuthenticationClient < Minitest::Test
188
209
  assert(result.dig('id') != nil, result)
189
210
  end
190
211
 
191
- # 测试: 解绑手机号
192
- def test_unbindPhone
193
- end
194
-
195
- # 测试: 更新用户手机号
196
- def test_updatePhone
197
- end
198
-
199
212
  # 绑定邮箱
200
213
  def test_bindEmail
201
214
  end
@@ -205,11 +218,12 @@ class TestAuthenticationClient < Minitest::Test
205
218
  end
206
219
 
207
220
  # 测试: 检测 Token 登录状态
208
- # ruby ./lib/test/mini_test/TestAuthenticationClient.rb -n test_checkLoginStatus
221
+ # ruby ./lib/authing_ruby/test/mini_test/TestAuthenticationClient.rb -n test_checkLoginStatus
209
222
  def test_checkLoginStatus
210
223
  # 第一步:先登录然后获取 token
211
224
  username = 'zhengcheng123'
212
225
  password = "123456789"
226
+ @authenticationClient.registerByUsername(username, password)
213
227
  user = @authenticationClient.loginByUsername(username, password)
214
228
  token = user.dig("token")
215
229
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  require "minitest/autorun"
4
4
  require "./lib/authing_ruby.rb"
5
- require "./lib/test/helper.rb"
5
+ require "./lib/authing_ruby/test/helper.rb"
6
6
  require 'dotenv'
7
7
  Dotenv.load('.env.test')
8
8
 
@@ -10,6 +10,7 @@ class TestManagementClient < Minitest::Test
10
10
  def setup
11
11
  @options = {
12
12
  host: 'https://core.authing.cn',
13
+ # host: 'https://core.authing.co', # 2021-5-13 他们临时使用 .co,过几天等他们恢复了 .cn 这里就改回 .cn
13
14
  userPoolId: ENV["userPoolId"],
14
15
  secret: ENV["secret"],
15
16
  }
@@ -93,7 +94,7 @@ class TestManagementClient < Minitest::Test
93
94
  end
94
95
 
95
96
  # 测试通过 ID 获取用户信息
96
- # ruby ./lib/test/mini_test/TestManagementClient.rb -n test_detail
97
+ # ruby ./lib/authing_ruby/test/mini_test/TestManagementClient.rb -n test_detail
97
98
  def test_detail
98
99
  user = create_random_user()
99
100
  user_id = user.dig("id")
@@ -12,7 +12,7 @@
12
12
 
13
13
  require "minitest/autorun"
14
14
  require "./lib/authing_ruby.rb"
15
- require "./lib/test/helper.rb"
15
+ require "./lib/authing_ruby/test/helper.rb"
16
16
  require 'dotenv'
17
17
  Dotenv.load('.env.test')
18
18
 
@@ -97,5 +97,48 @@ class TestSMSandEmail < Minitest::Test
97
97
  # 清理工作:测完了删除第一步注册的用户
98
98
  user_id = user['id']
99
99
  @managementClient.users.delete(user_id)
100
- end
101
- end
100
+ end
101
+
102
+ # 测试: 更新用户手机号
103
+ # ruby ./lib/authing_ruby/test/mini_test/TestSMSandEmail.rb -n test_updatePhone
104
+ # 文档: https://docs.authing.cn/v2/reference/sdk-for-node/authentication/AuthenticationClient.html#%E6%9B%B4%E6%96%B0%E7%94%A8%E6%88%B7%E6%89%8B%E6%9C%BA%E5%8F%B7
105
+ def test_updatePhone
106
+ # 前提条件:先确保有一个用户是自己的手机号,可以直接进 Authing 手工新建一个用户。新建时给设定手机号和密码,手机号可以随便填比如13511112222
107
+ # 填写对应手机号, 以及密码
108
+ phone = '13511112222'
109
+ password = '123456789'
110
+ # 登录
111
+ user = @authenticationClient.loginByPhonePassword(phone, password)
112
+ # 填写另一个要绑定的新手机号(可以填你自己的,这样才能收到短信)
113
+ phone = '13556136684'
114
+
115
+ # 发送验证码 (把下面发短信这一行先取消注释, 收到短信后再注释上)
116
+ # puts manual_send_SMS(phone); return;
117
+
118
+ # 填写收到的短信验证码
119
+ code = '4874'
120
+
121
+ # 默认情况下,如果用户当前已经绑定了手机号,需要同时验证原有手机号
122
+ # 开发者也可以选择不开启 “验证原有手机号“ ,可以在 Authing 控制台 的 设置目录下的安全信息模块进行关闭。
123
+ # 单个用户池 -> 设置 -> 安全信息 -> 用户池安全设置 -> 修改手机号时是否验证旧手机号 -> 点击开关,切换为关闭 -> 右上角"保存"
124
+ # 由于没有2个手机号,这里是关闭后再测试
125
+ oldPhone = nil
126
+ oldPhoneCode = nil
127
+
128
+ updatePhoneResult = @authenticationClient.updatePhone(phone, code, oldPhone, oldPhoneCode)
129
+ puts updatePhoneResult
130
+ assert(updatePhoneResult.dig('id') != nil)
131
+
132
+ # 错误:
133
+ # {:code=>2020, :message=>"尚未登录,无访问权限", :data=>nil}
134
+ # {:code=>500, :message=>"该手机号已被绑定", :data=>nil}
135
+ # {:code=>2230, :message=>"新手机号和旧手机号一样", :data=>nil}
136
+ # {:code=>500, :message=>"修改手机号必须验证原来的手机号。", :data=>nil}
137
+ # {:code=>500, :message=>"验证码已过期", :data=>nil}
138
+ # {:code=>500, :message=>"验证码不正确!", :data=>nil}
139
+
140
+ # 成功会返回 User
141
+ # {"id"=>"60b5b17a9cf59b23b2bcbccb", "arn"=>"arn:cn:authing:60800b8ee5b66b23128b4980:user:60b5b17a9cf59b23b2bcbccb", "userPoolId"=>"60800b8ee5b66b23128b4980", "status"=>"Activated", "username"=>"测试更新手机号", "email"=>nil, "emailVerified"=>false, "phone"=>"13556136684", "phoneVerified"=>true, "unionid"=>nil, "openid"=>nil, "nickname"=>nil, "registerSource"=>["import:manual"], "photo"=>"https://files.authing.co/authing-console/default-user-avatar.png", "password"=>"871fde109c2f0f463cc35e0c3e840932", "oauth"=>nil, "token"=>"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI2MGI1YjE3YTljZjU5YjIzYjJiY2JjY2IiLCJiaXJ0aGRhdGUiOm51bGwsImZhbWlseV9uYW1lIjpudWxsLCJnZW5kZXIiOiJVIiwiZ2l2ZW5fbmFtZSI6bnVsbCwibG9jYWxlIjpudWxsLCJtaWRkbGVfbmFtZSI6bnVsbCwibmFtZSI6bnVsbCwibmlja25hbWUiOm51bGwsInBpY3R1cmUiOiJodHRwczovL2ZpbGVzLmF1dGhpbmcuY28vYXV0aGluZy1jb25zb2xlL2RlZmF1bHQtdXNlci1hdmF0YXIucG5nIiwicHJlZmVycmVkX3VzZXJuYW1lIjpudWxsLCJwcm9maWxlIjpudWxsLCJ1cGRhdGVkX2F0IjoiMjAyMS0wNi0wMVQwNDoxNjo1MS41NDBaIiwid2Vic2l0ZSI6bnVsbCwiem9uZWluZm8iOm51bGwsImFkZHJlc3MiOnsiY291bnRyeSI6bnVsbCwicG9zdGFsX2NvZGUiOm51bGwsInJlZ2lvbiI6bnVsbCwiZm9ybWF0dGVkIjpudWxsfSwicGhvbmVfbnVtYmVyIjoiMTM1MTExMTIyMjIiLCJwaG9uZV9udW1iZXJfdmVyaWZpZWQiOmZhbHNlLCJlbWFpbCI6bnVsbCwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJleHRlcm5hbF9pZCI6bnVsbCwidW5pb25pZCI6bnVsbCwiZGF0YSI6eyJ0eXBlIjoidXNlciIsInVzZXJQb29sSWQiOiI2MDgwMGI4ZWU1YjY2YjIzMTI4YjQ5ODAiLCJhcHBJZCI6IjYwYjViMjFiZTMxMjkwNjI2ZmY2ZDgyZiIsImlkIjoiNjBiNWIxN2E5Y2Y1OWIyM2IyYmNiY2NiIiwidXNlcklkIjoiNjBiNWIxN2E5Y2Y1OWIyM2IyYmNiY2NiIiwiX2lkIjoiNjBiNWIxN2E5Y2Y1OWIyM2IyYmNiY2NiIiwicGhvbmUiOiIxMzUxMTExMjIyMiIsImVtYWlsIjpudWxsLCJ1c2VybmFtZSI6Iua1i-ivleabtOaWsOaJi-acuuWPtyIsInVuaW9uaWQiOm51bGwsIm9wZW5pZCI6bnVsbCwiY2xpZW50SWQiOiI2MDgwMGI4ZWU1YjY2YjIzMTI4YjQ5ODAifSwidXNlcnBvb2xfaWQiOiI2MDgwMGI4ZWU1YjY2YjIzMTI4YjQ5ODAiLCJhdWQiOiI2MGI1YjIxYmUzMTI5MDYyNmZmNmQ4MmYiLCJleHAiOjE2MjM3MzA2MzEsImlhdCI6MTYyMjUyMTAzMSwiaXNzIjoiaHR0cHM6Ly9tb3Jlbi5hdXRoaW5nLmNuL29pZGMifQ.VKSB6q-DBmtKLzOh_2qjBPQCSNZUAtrw_G2ZlNjOxbs", "tokenExpiredAt"=>"2021-06-15T04:17:11+00:00", "loginsCount"=>6, "lastLogin"=>"2021-06-01T04:17:11+00:00", "lastIP"=>nil, "signedUp"=>"2021-06-01T04:03:06+00:00", "blocked"=>false, "isDeleted"=>false, "device"=>nil, "browser"=>nil, "company"=>nil, "name"=>nil, "givenName"=>nil, "familyName"=>nil, "middleName"=>nil, "profile"=>nil, "preferredUsername"=>nil, "website"=>nil, "gender"=>"U", "birthdate"=>nil, "zoneinfo"=>nil, "locale"=>nil, "address"=>nil, "formatted"=>nil, "streetAddress"=>nil, "locality"=>nil, "region"=>nil, "postalCode"=>nil, "city"=>nil, "province"=>nil, "country"=>nil, "createdAt"=>"2021-06-01T04:03:06+00:00", "updatedAt"=>"2021-06-01T04:17:12+00:00"}
142
+ end
143
+
144
+ end
@@ -0,0 +1,18 @@
1
+ # 发短信
2
+ # ruby ./lib/authing_ruby/test/sms.rb
3
+
4
+ require "./lib/authing_ruby.rb" # 模块主文件
5
+ require "./lib/authing_ruby/test/helper.rb"
6
+ require 'dotenv'
7
+ Dotenv.load('.env.test') # 你可以编辑这个文件来修改环境变量
8
+
9
+ options = {
10
+ # appHost: ENV["appHost"] || , # "https://rails-demo.authing.cn",
11
+ # appId: ENV["appId"], # "60800b9151d040af9016d60b"
12
+ appId: "60ab26fe5be730bfc1742c68",
13
+ appHost: "https://hn-staging.authing.cn",
14
+ }
15
+ @authenticationClient = AuthingRuby::AuthenticationClient.new(options)
16
+ phone = "13556136684"
17
+ sms_result = @authenticationClient.sendSmsCode(phone)
18
+ puts sms_result
@@ -1,5 +1,8 @@
1
+ # 一些工具函数放这里
2
+
1
3
  require 'openssl'
2
4
  require "base64"
5
+ require 'jwt'
3
6
 
4
7
  module AuthingRuby
5
8
  class Utils
@@ -36,5 +39,70 @@ module AuthingRuby
36
39
  return result
37
40
  end
38
41
 
42
+ # verifyIDTokenHS256 函数用于验证 HS256 id_token
43
+
44
+ # 文档:使用指南 -> 常见问题 -> 如何验证用户身份凭证(token) -> 使用应用密钥验证 HS256 算法签名的 Token
45
+ # https://docs.authing.cn/v2/guides/faqs/how-to-validate-user-token.html#%E4%BD%BF%E7%94%A8%E5%BA%94%E7%94%A8%E5%AF%86%E9%92%A5%E9%AA%8C%E8%AF%81-hs256-%E7%AE%97%E6%B3%95%E7%AD%BE%E5%90%8D%E7%9A%84-token
46
+
47
+ # 官方文档目前(2021-5-13)是让用户自己处理 HS256 的 token,自己进行验证,但这样比较麻烦,我在 Ruby SDK 这边写一个方便的方法。
48
+ # verifyIDTokenHS256 返回 Boolean, true 代表 token 有效,false 代表无效
49
+
50
+ # 注意: 可以在 "应用 -> 授权 -> id_token 签名算法" 这里看到,选的是不是 HS256
51
+ # 如果是 HS256 才应该用这个方法来验证
52
+
53
+ # 参数 id_token 就是登录返回的 "token"
54
+ # 参数 appSecret 就是 Authing 里某个应用的 appSecret
55
+ def self.verifyIDTokenHS256(id_token, appSecret)
56
+ # 如果解码出错,直接返回 false
57
+ begin
58
+ hmac_secret = appSecret
59
+ decoded = JWT.decode id_token, hmac_secret, true, { algorithm: 'HS256' }
60
+ rescue => error
61
+ # puts error.message
62
+ return false
63
+ end
64
+
65
+ payload = decoded[0]
66
+ header = decoded[1]
67
+
68
+ # 从 payload 获得过期时间,然后判断是否过期
69
+ exp = payload["exp"] # 过期时间
70
+ current_timestamp = Time.now.to_i
71
+ if current_timestamp < exp
72
+ return true # 没过期
73
+ else
74
+ return false # 过期了
75
+ end
76
+ end
77
+
78
+ # decodeIdToken 函数用于 解码 id token 得到用户信息
79
+ # 因为 id token 其实就是一个普通的 JWT,所以 payload 没有加密过,只是 base64 编码了而已,可以当做明文看待 (你可以直接把 id token 粘贴到 https://jwt.io/ 看到 payload 内容)
80
+ # 所以 payload 不可以直接相信,必须先验证后才能相信。
81
+ # 函数返回:
82
+ # 成功:返回用户信息
83
+ # 失败:返回 nil (比如解码失败 或 token 过期)
84
+ def self.decodeIdToken(id_token, appSecret)
85
+ # 如果解码出错,直接返回 false
86
+ begin
87
+ hmac_secret = appSecret
88
+ decoded = JWT.decode id_token, hmac_secret, true, { algorithm: 'HS256' }
89
+ rescue => error
90
+ # puts error.message
91
+ return nil
92
+ end
93
+
94
+ payload = decoded[0]
95
+ header = decoded[1]
96
+
97
+ # 从 payload 获得过期时间,然后判断是否过期
98
+ exp = payload["exp"] # 过期时间
99
+ current_timestamp = Time.now.to_i
100
+ if current_timestamp < exp
101
+ return payload # 没过期
102
+ else
103
+ return nil # 过期了
104
+ end
105
+ end
106
+
39
107
  end
40
108
  end
@@ -2,5 +2,5 @@
2
2
  # https://github.com/Authing/authing.js/blob/cf4757d09de3b44c3c3f4509ae8c8715c9f302a2/src/lib/version.ts
3
3
 
4
4
  module AuthingRuby
5
- VERSION = "1.0.6".freeze
5
+ VERSION = "1.1.1".freeze
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: authing_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.6
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - 郑诚(Zheng Cheng)
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-06 00:00:00.000000000 Z
11
+ date: 2021-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -189,6 +189,7 @@ files:
189
189
  - lib/authing_ruby/graphql/mutations/resetPassword.gql
190
190
  - lib/authing_ruby/graphql/mutations/sendEmail.gql
191
191
  - lib/authing_ruby/graphql/mutations/updatePassword.gql
192
+ - lib/authing_ruby/graphql/mutations/updatePhone.gql
192
193
  - lib/authing_ruby/graphql/mutations/updateUser.gql
193
194
  - lib/authing_ruby/graphql/queries/accessToken.gql
194
195
  - lib/authing_ruby/graphql/queries/checkLoginStatus.gql
@@ -209,6 +210,8 @@ files:
209
210
  - lib/authing_ruby/test/helper.rb
210
211
  - lib/authing_ruby/test/js_sdk_test/1.buildAuthorizeUrl.js
211
212
  - lib/authing_ruby/test/js_sdk_test/2.buildAuthorizeUrl_PKCE.js
213
+ - lib/authing_ruby/test/js_sdk_test/2.registerByPhoneCode.js
214
+ - lib/authing_ruby/test/js_sdk_test/3.sendSMS.js
212
215
  - lib/authing_ruby/test/js_sdk_test/README.md
213
216
  - lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/CONTRIBUTION.md
214
217
  - lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/LICENSE
@@ -591,6 +594,18 @@ files:
591
594
  - lib/authing_ruby/test/js_sdk_test/node_modules/debug/src/debug.js
592
595
  - lib/authing_ruby/test/js_sdk_test/node_modules/debug/src/index.js
593
596
  - lib/authing_ruby/test/js_sdk_test/node_modules/debug/src/node.js
597
+ - lib/authing_ruby/test/js_sdk_test/node_modules/dotenv/CHANGELOG.md
598
+ - lib/authing_ruby/test/js_sdk_test/node_modules/dotenv/LICENSE
599
+ - lib/authing_ruby/test/js_sdk_test/node_modules/dotenv/README.md
600
+ - lib/authing_ruby/test/js_sdk_test/node_modules/dotenv/config.js
601
+ - lib/authing_ruby/test/js_sdk_test/node_modules/dotenv/lib/cli-options.js
602
+ - lib/authing_ruby/test/js_sdk_test/node_modules/dotenv/lib/env-options.js
603
+ - lib/authing_ruby/test/js_sdk_test/node_modules/dotenv/lib/main.js
604
+ - lib/authing_ruby/test/js_sdk_test/node_modules/dotenv/package.json
605
+ - lib/authing_ruby/test/js_sdk_test/node_modules/dotenv/types/index.d.ts
606
+ - lib/authing_ruby/test/js_sdk_test/node_modules/dotenv/types/test.ts
607
+ - lib/authing_ruby/test/js_sdk_test/node_modules/dotenv/types/tsconfig.json
608
+ - lib/authing_ruby/test/js_sdk_test/node_modules/dotenv/types/tslint.json
594
609
  - lib/authing_ruby/test/js_sdk_test/node_modules/follow-redirects/LICENSE
595
610
  - lib/authing_ruby/test/js_sdk_test/node_modules/follow-redirects/README.md
596
611
  - lib/authing_ruby/test/js_sdk_test/node_modules/follow-redirects/debug.js
@@ -657,6 +672,7 @@ files:
657
672
  - lib/authing_ruby/test/js_sdk_test/node_modules/ms/readme.md
658
673
  - lib/authing_ruby/test/js_sdk_test/package-lock.json
659
674
  - lib/authing_ruby/test/js_sdk_test/package.json
675
+ - lib/authing_ruby/test/js_sdk_test/yarn.lock
660
676
  - lib/authing_ruby/test/mini_test/TestApplicationsManagementClient.rb
661
677
  - lib/authing_ruby/test/mini_test/TestAuthenticationClient.rb
662
678
  - lib/authing_ruby/test/mini_test/TestAuthenticationClientProtocal.rb
@@ -666,6 +682,7 @@ files:
666
682
  - lib/authing_ruby/test/mini_test/TestNaiveHttpClient.rb
667
683
  - lib/authing_ruby/test/mini_test/TestSMSandEmail.rb
668
684
  - lib/authing_ruby/test/mini_test/TestUtils.rb
685
+ - lib/authing_ruby/test/sms.rb
669
686
  - lib/authing_ruby/utils/utils.rb
670
687
  - lib/authing_ruby/version.rb
671
688
  homepage: https://github.com/1c7/authing_ruby