Class: TestSMSandEmail
- Inherits:
-
Minitest::Test
- Object
- Minitest::Test
- TestSMSandEmail
- Defined in:
- lib/authing_ruby/test/mini_test/TestSMSandEmail.rb
Instance Method Summary collapse
-
#manual_send_SMS(phone) ⇒ Object
手动发送短信.
- #setup ⇒ Object
-
#test_bindPhone ⇒ Object
测试: 绑定手机号 ruby ./lib/test/mini_test/TestSMSandEmail.rb -n test_bindPhone.
-
#test_resetPasswordByPhoneCode ⇒ Object
通过短信验证码重置密码 ruby ./lib/test/mini_test/TestSMSandEmail.rb -n test_resetPasswordByPhoneCode.
-
#test_updatePhone ⇒ Object
测试: 更新用户手机号 ruby ./lib/authing_ruby/test/mini_test/TestSMSandEmail.rb -n test_updatePhone 文档: 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.
Instance Method Details
#manual_send_SMS(phone) ⇒ Object
手动发送短信
42 43 44 45 46 47 |
# File 'lib/authing_ruby/test/mini_test/TestSMSandEmail.rb', line 42 def manual_send_SMS(phone) sms_result = @authenticationClient.sendSmsCode(phone) return sms_result # {"code":200,"message":"发送成功"} #【Authing】验证码7326,该验证码5分钟内有效,请勿泄漏于他人。 end |
#setup ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/authing_ruby/test/mini_test/TestSMSandEmail.rb', line 20 def setup # 新建一个用户侧的 = { appHost: ENV["appHost"], # "https://rails-demo.authing.cn", appId: ENV["appId"], # "60800b9151d040af9016d60b" } @authenticationClient = AuthingRuby::AuthenticationClient.new() # 新建一个管理侧的 = { host: 'https://core.authing.cn', userPoolId: ENV["userPoolId"], secret: ENV["secret"], } @managementClient = AuthingRuby::ManagementClient.new() @helper = Test::Helper.new @phone = '13556136684' # 测发短信时需要改一下这里, 填你自己的手机号,这样才能收到短信 end |
#test_bindPhone ⇒ Object
测试: 绑定手机号 ruby ./lib/test/mini_test/TestSMSandEmail.rb -n test_bindPhone
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/authing_ruby/test/mini_test/TestSMSandEmail.rb', line 75 def test_bindPhone # 第一步:用户名注册用户 username = "test_bindPhone_#{@helper.randomString()}" password = "123456789" user = @authenticationClient.registerByUsername(username, password) # 第二步:登录用户 @authenticationClient.loginByUsername(username, password) # 第三步 phoneCode = nil # 先保持为 nil 运行一次, 触发 manual_send_SMS 发个短信,然后自己填一下 phoneCode 为手机短信收到的验证码 if phoneCode == nil # manual_send_SMS(@phone) # 取消这行的注释 else res = @authenticationClient.bindPhone(@phone, phoneCode) assert(res.dig('id') != nil) # 错误情况 # puts res # {"errors":[{"message":{"code":500,"message":"该手机号已被绑定"},"locations":[{"line":2,"column":3}],"path":["bindPhone"],"extensions":{"code":"INTERNAL_SERVER_ERROR"}}],"data":null} end # 清理工作:测完了删除第一步注册的用户 user_id = user['id'] @managementClient.users.delete(user_id) end |
#test_resetPasswordByPhoneCode ⇒ Object
通过短信验证码重置密码 ruby ./lib/test/mini_test/TestSMSandEmail.rb -n test_resetPasswordByPhoneCode
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/authing_ruby/test/mini_test/TestSMSandEmail.rb', line 51 def test_resetPasswordByPhoneCode # 前提条件:先确保有一个用户是自己的手机号,可以直接进 Authing 手工新建一个用户。 phone = @phone # 手机号 phoneCode = nil # 先保持为 nil 运行一次, 触发 manual_send_SMS 发个短信,然后自己填一下 phoneCode 为手机短信收到的验证码 if phoneCode == nil # manual_send_SMS(phone) # 取消这行的注释 else newPassword = '123456789' res = @authenticationClient.resetPasswordByPhoneCode(phone, phoneCode, newPassword) assert(res.dig("code") == 200, res) end # 如果成功 # {"message":"重置密码成功!","code":200} # 错误可能1 # {"errors":[{"message":{"code":2004,"message":"用户不存在"},"locations":[{"line":2,"column":5}],"path":["resetPassword"],"extensions":{"code":"INTERNAL_SERVER_ERROR"}}],"data":{"resetPassword":null}} # 错误可能2 # {"errors":[{"message":{"code":2001,"message":"验证码不正确!"},"locations":[{"line":2,"column":5}],"path":["resetPassword"],"extensions":{"code":"INTERNAL_SERVER_ERROR"}}],"data":{"resetPassword":null}} end |
#test_updatePhone ⇒ Object
测试: 更新用户手机号 ruby ./lib/authing_ruby/test/mini_test/TestSMSandEmail.rb -n test_updatePhone 文档: 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 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/authing_ruby/test/mini_test/TestSMSandEmail.rb', line 105 def test_updatePhone # 前提条件:先确保有一个现有用户,可以进 Authing 手工新建一个,新建时设定手机号和密码,手机号随便填如 13511112222 密码 123456789 # 先登录: phone = '13511112222' password = '123456789' user = @authenticationClient.loginByPhonePassword(phone, password) # 填写要绑定的新手机号(可以填你自己的,这样才能收到短信) phone = '13556136684' # 给新手机号发送短信验证码 (把下面这行先取消注释, 收到短信后再注释上) # puts manual_send_SMS(phone); return; # 填写收到的短信验证码 code = '4874' # 默认情况下,如果用户当前已经绑定了手机号,需要同时验证原有手机号 # 开发者也可以选择不开启 “验证原有手机号“ ,可以在 Authing 控制台 的 设置目录下的安全信息模块进行关闭。 # 单个用户池 -> 设置 -> 安全信息 -> 用户池安全设置 -> 修改手机号时是否验证旧手机号 -> 点击开关,切换为关闭 -> 右上角"保存" # 由于没有2个手机号,这里是关闭后再测试 oldPhone = nil oldPhoneCode = nil updatePhoneResult = @authenticationClient.updatePhone(phone, code, oldPhone, oldPhoneCode) puts updatePhoneResult assert(updatePhoneResult.dig('id') != nil) # 错误: # {:code=>2020, :message=>"尚未登录,无访问权限", :data=>nil} # {:code=>500, :message=>"该手机号已被绑定", :data=>nil} # {:code=>2230, :message=>"新手机号和旧手机号一样", :data=>nil} # {:code=>500, :message=>"修改手机号必须验证原来的手机号。", :data=>nil} # {:code=>500, :message=>"验证码已过期", :data=>nil} # {:code=>500, :message=>"验证码不正确!", :data=>nil} # 成功会返回 User # {"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"} end |