authlete 1.0.24 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -1
  3. data/Makefile +40 -0
  4. data/Rakefile +5 -0
  5. data/authlete.gemspec +2 -2
  6. data/lib/authlete.rb +28 -9
  7. data/lib/authlete/api.rb +146 -321
  8. data/lib/authlete/authentication-server.rb +2 -2
  9. data/lib/authlete/exception.rb +14 -15
  10. data/lib/authlete/model/base.rb +30 -0
  11. data/lib/authlete/model/client-extension.rb +17 -119
  12. data/lib/authlete/model/client.rb +196 -345
  13. data/lib/authlete/model/hashable.rb +13 -33
  14. data/lib/authlete/model/named-uri.rb +13 -74
  15. data/lib/authlete/model/pair.rb +13 -74
  16. data/lib/authlete/model/param-initializer.rb +45 -0
  17. data/lib/authlete/model/property.rb +15 -85
  18. data/lib/authlete/model/request/authentication-callback-request.rb +63 -55
  19. data/lib/authlete/model/request/authorization-fail-request.rb +14 -75
  20. data/lib/authlete/model/request/authorization-issue-request.rb +38 -119
  21. data/lib/authlete/model/request/authorization-request.rb +8 -73
  22. data/lib/authlete/model/request/backchannel-authentication-complete-request.rb +97 -0
  23. data/lib/authlete/model/request/backchannel-authentication-fail-request.rb +55 -0
  24. data/lib/authlete/model/request/backchannel-authentication-issue-request.rb +37 -0
  25. data/lib/authlete/model/request/backchannel-authentication-request.rb +63 -0
  26. data/lib/authlete/model/request/base.rb +26 -0
  27. data/lib/authlete/model/request/client-authorization-delete-request.rb +7 -93
  28. data/lib/authlete/model/request/client-authorization-get-list-request.rb +17 -89
  29. data/lib/authlete/model/request/client-authorization-update-request.rb +11 -86
  30. data/lib/authlete/model/request/client-registration-request.rb +49 -0
  31. data/lib/authlete/model/request/client-secret-update-request.rb +7 -89
  32. data/lib/authlete/model/request/developer-authentication-callback-request.rb +40 -43
  33. data/lib/authlete/model/request/device-authorization-request.rb +63 -0
  34. data/lib/authlete/model/request/device-complete-request.rb +99 -0
  35. data/lib/authlete/model/request/device-verification-request.rb +40 -0
  36. data/lib/authlete/model/request/granted-scopes-request.rb +8 -74
  37. data/lib/authlete/model/request/introspection-request.rb +24 -83
  38. data/lib/authlete/model/request/pushed-auth-req-request.rb +64 -0
  39. data/lib/authlete/model/request/revocation-request.rb +14 -88
  40. data/lib/authlete/model/request/standard-introspection-request.rb +8 -73
  41. data/lib/authlete/model/request/token-create-request.rb +52 -183
  42. data/lib/authlete/model/request/token-fail-request.rb +12 -74
  43. data/lib/authlete/model/request/token-issue-request.rb +22 -80
  44. data/lib/authlete/model/request/token-request.rb +44 -81
  45. data/lib/authlete/model/request/token-update-request.rb +35 -121
  46. data/lib/authlete/model/request/user-info-issue-request.rb +14 -80
  47. data/lib/authlete/model/request/user-info-request.rb +25 -70
  48. data/lib/authlete/model/response/access-token.rb +96 -0
  49. data/lib/authlete/model/response/authentication-callback-response.rb +24 -19
  50. data/lib/authlete/model/response/authorization-fail-response.rb +13 -15
  51. data/lib/authlete/model/response/authorization-issue-response.rb +29 -32
  52. data/lib/authlete/model/response/authorization-response.rb +97 -123
  53. data/lib/authlete/model/response/authorized-client-list-response.rb +37 -0
  54. data/lib/authlete/model/response/backchannel-authentication-complete-response.rb +143 -0
  55. data/lib/authlete/model/response/backchannel-authentication-fail-response.rb +47 -0
  56. data/lib/authlete/model/response/backchannel-authentication-issue-response.rb +63 -0
  57. data/lib/authlete/model/response/backchannel-authentication-response.rb +160 -0
  58. data/lib/authlete/model/response/client-list-response.rb +58 -0
  59. data/lib/authlete/model/response/client-registration-response.rb +50 -0
  60. data/lib/authlete/model/response/client-secret-refresh-response.rb +12 -12
  61. data/lib/authlete/model/response/client-secret-update-response.rb +12 -12
  62. data/lib/authlete/model/response/developer-authentication-callback-response.rb +24 -19
  63. data/lib/authlete/model/response/device-authorization-response.rb +134 -0
  64. data/lib/authlete/model/response/device-complete-response.rb +39 -0
  65. data/lib/authlete/model/response/device-verification-response.rb +96 -0
  66. data/lib/authlete/model/response/granted-scopes-get-response.rb +27 -19
  67. data/lib/authlete/model/response/introspection-response.rb +64 -58
  68. data/lib/authlete/model/response/pushed-auth-req-response.rb +59 -0
  69. data/lib/authlete/model/response/revocation-response.rb +12 -15
  70. data/lib/authlete/model/response/service-list-response.rb +54 -0
  71. data/lib/authlete/model/response/standard-introspection-response.rb +13 -15
  72. data/lib/authlete/model/response/token-create-response.rb +50 -55
  73. data/lib/authlete/model/response/token-fail-response.rb +14 -17
  74. data/lib/authlete/model/response/token-issue-response.rb +49 -62
  75. data/lib/authlete/model/response/token-list-response.rb +64 -0
  76. data/lib/authlete/model/response/token-response.rb +59 -79
  77. data/lib/authlete/model/response/token-update-response.rb +28 -23
  78. data/lib/authlete/model/response/user-info-issue-response.rb +16 -16
  79. data/lib/authlete/model/response/user-info-response.rb +48 -42
  80. data/lib/authlete/model/result.rb +14 -13
  81. data/lib/authlete/model/scope.rb +29 -119
  82. data/lib/authlete/model/service-owner.rb +32 -116
  83. data/lib/authlete/model/service.rb +464 -685
  84. data/lib/authlete/model/sns-credentials.rb +18 -91
  85. data/lib/authlete/model/tagged-value.rb +14 -69
  86. data/lib/authlete/utility.rb +3 -32
  87. data/lib/authlete/version.rb +3 -3
  88. data/test/authlete/model/request/test_authentication-callback-request.rb +100 -0
  89. data/test/authlete/model/request/test_authorization-fail-request.rb +67 -0
  90. data/test/authlete/model/request/test_authorization-issue-request.rb +94 -0
  91. data/test/authlete/model/request/test_authorization-request.rb +57 -0
  92. data/test/authlete/model/request/test_backchannel-authentication-complete-request.rb +102 -0
  93. data/test/authlete/model/request/test_backchannel-authentication-fail-request.rb +71 -0
  94. data/test/authlete/model/request/test_backchannel-authentication-issue-request.rb +57 -0
  95. data/test/authlete/model/request/test_backchannel-authentication-request.rb +75 -0
  96. data/test/authlete/model/request/test_client-authorization-delete-request.rb +57 -0
  97. data/test/authlete/model/request/test_client-authorization-get-list-request.rb +71 -0
  98. data/test/authlete/model/request/test_client-authorization-update-request.rb +63 -0
  99. data/test/authlete/model/request/test_client-registration-request.rb +68 -0
  100. data/test/authlete/model/request/test_device-authorization-request.rb +75 -0
  101. data/test/authlete/model/request/test_device-complete-request.rb +102 -0
  102. data/test/authlete/model/request/test_device-verification-request.rb +57 -0
  103. data/test/authlete/model/request/test_granted-scopes-request.rb +57 -0
  104. data/test/authlete/model/request/test_introspection-request.rb +79 -0
  105. data/test/authlete/model/request/test_pushed-auth-req-request.rb +75 -0
  106. data/test/authlete/model/request/test_revocation-request.rb +67 -0
  107. data/test/authlete/model/request/test_standard-introspection-request.rb +57 -0
  108. data/test/authlete/model/request/test_token-create-request.rb +110 -0
  109. data/test/authlete/model/request/test_token-fail-request.rb +63 -0
  110. data/test/authlete/model/request/test_token-issue-request.rb +70 -0
  111. data/test/authlete/model/request/test_token-request.rb +94 -0
  112. data/test/authlete/model/request/test_token-update-request.rb +82 -0
  113. data/test/authlete/model/request/test_user-info-issue-request.rb +67 -0
  114. data/test/authlete/model/request/test_user-info-request.rb +75 -0
  115. data/test/authlete/model/response/test_access-token.rb +101 -0
  116. data/test/authlete/model/response/test_authorization-fail-response.rb +68 -0
  117. data/test/authlete/model/response/test_authorization-issue-response.rb +92 -0
  118. data/test/authlete/model/response/test_authorization-response.rb +145 -0
  119. data/test/authlete/model/response/test_authorized-client-list-response.rb +83 -0
  120. data/test/authlete/model/response/test_backchannel-authentication-complete-response.rb +132 -0
  121. data/test/authlete/model/response/test_backchannel-authentication-fail-response.rb +68 -0
  122. data/test/authlete/model/response/test_backchannel-authentication-issue-response.rb +80 -0
  123. data/test/authlete/model/response/test_backchannel-authentication-response.rb +156 -0
  124. data/test/authlete/model/response/test_client-list-response.rb +79 -0
  125. data/test/authlete/model/response/test_client-secret-refresh-response.rb +68 -0
  126. data/test/authlete/model/response/test_client-secret-update-response.rb +68 -0
  127. data/test/authlete/model/response/test_device-authorization-response.rb +140 -0
  128. data/test/authlete/model/response/test_device-complete-response.rb +64 -0
  129. data/test/authlete/model/response/test_device-verification-response.rb +112 -0
  130. data/test/authlete/model/response/test_granted-scopes-get-response.rb +84 -0
  131. data/test/authlete/model/response/test_introspection-response.rb +127 -0
  132. data/test/authlete/model/response/test_pushed-auth-req-response.rb +76 -0
  133. data/test/authlete/model/response/test_revocation-response.rb +68 -0
  134. data/test/authlete/model/response/test_service-list-response.rb +72 -0
  135. data/test/authlete/model/response/test_standard-introspection-response.rb +68 -0
  136. data/test/authlete/model/response/test_token-create-response.rb +107 -0
  137. data/test/authlete/model/response/test_token-fail-response.rb +68 -0
  138. data/test/authlete/model/response/test_token-issue-response.rb +127 -0
  139. data/test/authlete/model/response/test_token-list-response.rb +84 -0
  140. data/test/authlete/model/response/test_token-response.rb +147 -0
  141. data/test/authlete/model/response/test_token-update-response.rb +87 -0
  142. data/test/authlete/model/response/test_user-info-issue-response.rb +68 -0
  143. data/test/authlete/model/response/test_user-info-response.rb +107 -0
  144. data/test/authlete/model/test_client-extension.rb +95 -0
  145. data/test/authlete/model/test_client.rb +461 -0
  146. data/test/authlete/model/test_named-uri.rb +85 -0
  147. data/test/authlete/model/test_pair.rb +85 -0
  148. data/test/authlete/model/test_property.rb +90 -0
  149. data/test/authlete/model/test_result.rb +68 -0
  150. data/test/authlete/model/test_scope.rb +106 -0
  151. data/test/authlete/model/test_service-owner.rb +80 -0
  152. data/test/authlete/model/test_service.rb +614 -0
  153. data/test/authlete/model/test_sns-credentials.rb +88 -0
  154. data/test/authlete/model/test_tagged-value.rb +83 -0
  155. data/test/authlete/test_exception.rb +70 -0
  156. metadata +169 -9
  157. data/lib/authlete/model/client-list.rb +0 -129
  158. data/lib/authlete/model/response/client-authorization-get-list-response.rb +0 -60
  159. data/lib/authlete/model/response/service-creatable-response.rb +0 -51
  160. data/lib/authlete/model/service-list.rb +0 -128
@@ -0,0 +1,101 @@
1
+ # :nodoc:
2
+ #
3
+ # Copyright (C) 2014-2020 Authlete, Inc.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+
18
+ require 'authlete'
19
+ require 'json'
20
+ require 'minitest/autorun'
21
+
22
+
23
+ class AccessTokenTest < Minitest::Test
24
+ ACCESS_TOKEN_HASH = '<access-token-hash>'
25
+ REFRESH_TOKEN_HASH = '<refresh-token-hash>'
26
+ CLIENT_ID = 12345
27
+ SUBJECT = '<subject>'
28
+ GRANT_TYPE = 'AUTHORIZATION_CODE'
29
+ SCOPES = [ 'scope0', 'scope1' ]
30
+ ACCESS_TOKEN_EXPIRES_AT = 1000
31
+ REFRESH_TOKEN_EXPIRES_AT = 1000
32
+ CREATED_AT = 10000
33
+ LAST_REFRESHED_AT = 10000
34
+ PROPERTY_KEY = '<property0-key>'
35
+ PROPERTY_VALUE = '<property0-value>'
36
+ PROPERTY_HIDDEN = true
37
+ PROPERTIES = [ Authlete::Model::Property.new(key: PROPERTY_KEY, value: PROPERTY_VALUE, hidden: PROPERTY_HIDDEN) ]
38
+
39
+
40
+ def generate_json
41
+ return <<~JSON
42
+ {
43
+ "accessTokenHash": "<access-token-hash>",
44
+ "refreshTokenHash": "<refresh-token-hash>",
45
+ "clientId": 12345,
46
+ "subject": "<subject>",
47
+ "grantType": "AUTHORIZATION_CODE",
48
+ "scopes": [ "scope0", "scope1" ],
49
+ "accessTokenExpiresAt": 1000,
50
+ "refreshTokenExpiresAt": 1000,
51
+ "createdAt": 10000,
52
+ "lastRefreshedAt": 10000,
53
+ "properties": [ { "key": "<property0-key>", "value": "<property0-value>", "hidden": true } ]
54
+ }
55
+ JSON
56
+ end
57
+
58
+
59
+ def match(obj)
60
+ assert_equal ACCESS_TOKEN_HASH, obj.accessTokenHash
61
+ assert_equal REFRESH_TOKEN_HASH, obj.refreshTokenHash
62
+ assert_equal CLIENT_ID, obj.clientId
63
+ assert_equal SUBJECT, obj.subject
64
+ assert_equal GRANT_TYPE, obj.grantType
65
+ assert_equal SCOPES, obj.scopes
66
+ assert_equal ACCESS_TOKEN_EXPIRES_AT, obj.accessTokenExpiresAt
67
+ assert_equal REFRESH_TOKEN_EXPIRES_AT, obj.refreshTokenExpiresAt
68
+ assert_equal CREATED_AT, obj.createdAt
69
+ assert_equal LAST_REFRESHED_AT, obj.lastRefreshedAt
70
+ assert_equal PROPERTY_KEY, obj.properties[0].key
71
+ assert_equal PROPERTY_VALUE, obj.properties[0].value
72
+ assert_equal PROPERTY_HIDDEN, obj.properties[0].hidden
73
+ end
74
+
75
+
76
+ def test_from_json
77
+ jsn = generate_json
78
+ hsh = JSON.parse(jsn)
79
+ actual = Authlete::Model::Response::AccessToken.new(hsh)
80
+
81
+ match(actual)
82
+ end
83
+
84
+
85
+ def test_setters
86
+ actual = Authlete::Model::Response::AccessToken.new
87
+ actual.access_token_hash = ACCESS_TOKEN_HASH
88
+ actual.refresh_token_hash = REFRESH_TOKEN_HASH
89
+ actual.client_id = CLIENT_ID
90
+ actual.subject = SUBJECT
91
+ actual.grant_type = GRANT_TYPE
92
+ actual.scopes = SCOPES
93
+ actual.access_token_expires_at = ACCESS_TOKEN_EXPIRES_AT
94
+ actual.refresh_token_expires_at = REFRESH_TOKEN_EXPIRES_AT
95
+ actual.created_at = CREATED_AT
96
+ actual.last_refreshed_at = LAST_REFRESHED_AT
97
+ actual.properties = PROPERTIES
98
+
99
+ match(actual)
100
+ end
101
+ end
@@ -0,0 +1,68 @@
1
+ # :nodoc:
2
+ #
3
+ # Copyright (C) 2014-2020 Authlete, Inc.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+
18
+ require 'authlete'
19
+ require 'json'
20
+ require 'minitest/autorun'
21
+
22
+
23
+ class AuthorizationFailResponseTest < Minitest::Test
24
+ RESULT_CODE = '<result-code>'
25
+ RESULT_MESSAGE = '<result-message>'
26
+ ACTION = 'LOCATION'
27
+ RESPONSE_CONTENT = '<response-content>'
28
+
29
+
30
+ def generate_json
31
+ return <<~JSON
32
+ {
33
+ "resultCode": "<result-code>",
34
+ "resultMessage": "<result-message>",
35
+ "action": "LOCATION",
36
+ "responseContent": "<response-content>"
37
+ }
38
+ JSON
39
+ end
40
+
41
+
42
+ def match(obj)
43
+ assert_equal RESULT_CODE, obj.resultCode
44
+ assert_equal RESULT_MESSAGE, obj.resultMessage
45
+ assert_equal ACTION, obj.action
46
+ assert_equal RESPONSE_CONTENT, obj.responseContent
47
+ end
48
+
49
+
50
+ def test_from_json
51
+ jsn = generate_json
52
+ hsh = JSON.parse(jsn)
53
+ actual = Authlete::Model::Response::AuthorizationFailResponse.new(hsh)
54
+
55
+ match(actual)
56
+ end
57
+
58
+
59
+ def test_setters
60
+ actual = Authlete::Model::Response::AuthorizationFailResponse.new
61
+ actual.result_code = RESULT_CODE
62
+ actual.result_message = RESULT_MESSAGE
63
+ actual.action = ACTION
64
+ actual.response_content = RESPONSE_CONTENT
65
+
66
+ match(actual)
67
+ end
68
+ end
@@ -0,0 +1,92 @@
1
+ # :nodoc:
2
+ #
3
+ # Copyright (C) 2014-2020 Authlete, Inc.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+
18
+ require 'authlete'
19
+ require 'json'
20
+ require 'minitest/autorun'
21
+
22
+
23
+ class AuthorizationIssueResponseTest < Minitest::Test
24
+ RESULT_CODE = '<result-code>'
25
+ RESULT_MESSAGE = '<result-message>'
26
+ ACTION = 'LOCATION'
27
+ RESPONSE_CONTENT = '<response-content>'
28
+ ACCESS_TOKEN = '<access-token>'
29
+ ACCESS_TOKEN_EXPIRES_AT = 1000
30
+ ACCESS_TOKEN_DURATION = 300
31
+ ID_TOKEN = '<id-token>'
32
+ AUTHORIZATION_CODE = '<authorization-code>'
33
+ JWT_ACCESS_TOKEN = '<jwt-access-token>'
34
+
35
+
36
+ def generate_json
37
+ return <<~JSON
38
+ {
39
+ "resultCode": "<result-code>",
40
+ "resultMessage": "<result-message>",
41
+ "action": "LOCATION",
42
+ "responseContent": "<response-content>",
43
+ "accessToken": "<access-token>",
44
+ "accessTokenExpiresAt": 1000,
45
+ "accessTokenDuration": 300,
46
+ "idToken": "<id-token>",
47
+ "authorizationCode": "<authorization-code>",
48
+ "jwtAccessToken": "<jwt-access-token>"
49
+ }
50
+ JSON
51
+ end
52
+
53
+
54
+ def match(obj)
55
+ assert_equal RESULT_CODE, obj.resultCode
56
+ assert_equal RESULT_MESSAGE, obj.resultMessage
57
+ assert_equal ACTION, obj.action
58
+ assert_equal RESPONSE_CONTENT, obj.responseContent
59
+ assert_equal ACCESS_TOKEN, obj.accessToken
60
+ assert_equal ACCESS_TOKEN_EXPIRES_AT, obj.accessTokenExpiresAt
61
+ assert_equal ACCESS_TOKEN_DURATION, obj.accessTokenDuration
62
+ assert_equal ID_TOKEN, obj.idToken
63
+ assert_equal AUTHORIZATION_CODE, obj.authorizationCode
64
+ assert_equal JWT_ACCESS_TOKEN, obj.jwtAccessToken
65
+ end
66
+
67
+
68
+ def test_from_json
69
+ jsn = generate_json
70
+ hsh = JSON.parse(jsn)
71
+ actual = Authlete::Model::Response::AuthorizationIssueResponse.new(hsh)
72
+
73
+ match(actual)
74
+ end
75
+
76
+
77
+ def test_setters
78
+ actual = Authlete::Model::Response::AuthorizationIssueResponse.new
79
+ actual.result_code = RESULT_CODE
80
+ actual.result_message = RESULT_MESSAGE
81
+ actual.action = ACTION
82
+ actual.response_content = RESPONSE_CONTENT
83
+ actual.access_token = ACCESS_TOKEN
84
+ actual.access_token_expires_at = ACCESS_TOKEN_EXPIRES_AT
85
+ actual.access_token_duration = ACCESS_TOKEN_DURATION
86
+ actual.id_token = ID_TOKEN
87
+ actual.authorization_code = AUTHORIZATION_CODE
88
+ actual.jwt_access_token = JWT_ACCESS_TOKEN
89
+
90
+ match(actual)
91
+ end
92
+ end
@@ -0,0 +1,145 @@
1
+ # :nodoc:
2
+ #
3
+ # Copyright (C) 2014-2020 Authlete, Inc.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+
18
+ require 'authlete'
19
+ require 'json'
20
+ require 'minitest/autorun'
21
+
22
+
23
+ class AuthorizationResponseTest < Minitest::Test
24
+ RESULT_CODE = '<result-code>'
25
+ RESULT_MESSAGE = '<result-message>'
26
+ ACRS = [ 'acr0', 'acr1' ]
27
+ ACTION = 'FORM'
28
+ CLAIMS_LOCALES = [ 'en', 'ja' ]
29
+ CLAIMS = [ 'claim0', 'claim1' ]
30
+ DISPLAY = 'PAGE'
31
+ ID_TOKEN_CLAIMS = '<id-token-claims>'
32
+ LOGIN_HINT = '<login-hint>'
33
+ MAX_AGE = 100
34
+ PROMPTS = [ 'CONSENT', 'LOGIN' ]
35
+ PURPOSE = '<purpose>'
36
+ REQUEST_OBJECT_PAYLOAD = '<request-object-payload>'
37
+ RESOURCES = [ 'resource0', 'resource1' ]
38
+ RESPONSE_CONTENT = '<response-content>'
39
+ SERVICE_NAME = '<service-name>'
40
+ SERVICE = Authlete::Model::Service.new({serviceName: SERVICE_NAME})
41
+ SCOPE_NAME = 'scope0'
42
+ SCOPE_DESCRIPTION = '<scope0-description>'
43
+ SCOPES = [ Authlete::Model::Scope.new({ name: SCOPE_NAME, description: SCOPE_DESCRIPTION }) ]
44
+ SUBJECT = '<subject>'
45
+ TICKET = '<ticket>'
46
+ UI_LOCALES = [ 'de', 'fr' ]
47
+ USER_INFO_CLAIMS = '<user-info-claims>'
48
+
49
+
50
+ def generate_json
51
+ return <<~JSON
52
+ {
53
+ "resultCode": "<result-code>",
54
+ "resultMessage": "<result-message>",
55
+ "acrs": [ "acr0", "acr1" ],
56
+ "action": "FORM",
57
+ "claimsLocales": [ "en", "ja" ],
58
+ "claims": [ "claim0", "claim1" ],
59
+ "display": "PAGE",
60
+ "idTokenClaims": "<id-token-claims>",
61
+ "loginHint": "<login-hint>",
62
+ "maxAge": 100,
63
+ "prompts": [ "CONSENT", "LOGIN" ],
64
+ "purpose": "<purpose>",
65
+ "requestObjectPayload": "<request-object-payload>",
66
+ "resources": [ "resource0", "resource1" ],
67
+ "responseContent": "<response-content>",
68
+ "service": {
69
+ "serviceName": "<service-name>"
70
+ },
71
+ "scopes": [
72
+ {
73
+ "name": "scope0",
74
+ "description": "<scope0-description>"
75
+ }
76
+ ],
77
+ "subject": "<subject>",
78
+ "ticket": "<ticket>",
79
+ "uiLocales": [ "de", "fr" ],
80
+ "userInfoClaims": "<user-info-claims>"
81
+ }
82
+ JSON
83
+ end
84
+
85
+
86
+ def match(obj)
87
+ assert_equal RESULT_CODE, obj.resultCode
88
+ assert_equal RESULT_MESSAGE, obj.resultMessage
89
+ assert_equal ACTION, obj.action
90
+ assert_equal ACRS, obj.acrs
91
+ assert_equal CLAIMS_LOCALES, obj.claimsLocales
92
+ assert_equal CLAIMS, obj.claims
93
+ assert_equal DISPLAY, obj.display
94
+ assert_equal ID_TOKEN_CLAIMS, obj.idTokenClaims
95
+ assert_equal MAX_AGE, obj.maxAge
96
+ assert_equal PROMPTS, obj.prompts
97
+ assert_equal PURPOSE, obj.purpose
98
+ assert_equal REQUEST_OBJECT_PAYLOAD, obj.requestObjectPayload
99
+ assert_equal RESOURCES, obj.resources
100
+ assert_equal RESPONSE_CONTENT, obj.responseContent
101
+ assert_equal SERVICE_NAME, obj.service.serviceName
102
+ assert_equal SCOPE_NAME, obj.scopes[0].name
103
+ assert_equal SCOPE_DESCRIPTION, obj.scopes[0].description
104
+ assert_equal SUBJECT, obj.subject
105
+ assert_equal TICKET, obj.ticket
106
+ assert_equal UI_LOCALES, obj.uiLocales
107
+ assert_equal USER_INFO_CLAIMS, obj.userInfoClaims
108
+ end
109
+
110
+
111
+ def test_from_json
112
+ jsn = generate_json
113
+ hsh = JSON.parse(jsn)
114
+ actual = Authlete::Model::Response::AuthorizationResponse.new(hsh)
115
+
116
+ match(actual)
117
+ end
118
+
119
+
120
+ def test_setters
121
+ actual = Authlete::Model::Response::AuthorizationResponse.new
122
+ actual.result_code = RESULT_CODE
123
+ actual.result_message = RESULT_MESSAGE
124
+ actual.acrs = ACRS
125
+ actual.action = ACTION
126
+ actual.claims_locales = CLAIMS_LOCALES
127
+ actual.claims = CLAIMS
128
+ actual.display = DISPLAY
129
+ actual.id_token_claims = ID_TOKEN_CLAIMS
130
+ actual.max_age = MAX_AGE
131
+ actual.prompts = PROMPTS
132
+ actual.purpose = PURPOSE
133
+ actual.request_object_payload = REQUEST_OBJECT_PAYLOAD
134
+ actual.resources = RESOURCES
135
+ actual.response_content = RESPONSE_CONTENT
136
+ actual.service = SERVICE
137
+ actual.scopes = SCOPES
138
+ actual.subject = SUBJECT
139
+ actual.ticket = TICKET
140
+ actual.ui_locales = UI_LOCALES
141
+ actual.user_info_claims = USER_INFO_CLAIMS
142
+
143
+ match(actual)
144
+ end
145
+ end
@@ -0,0 +1,83 @@
1
+ # :nodoc:
2
+ #
3
+ # Copyright (C) 2014-2020 Authlete, Inc.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+
18
+ require 'authlete'
19
+ require 'json'
20
+ require 'minitest/autorun'
21
+
22
+
23
+ class AuthorizedClientListResponseTest < Minitest::Test
24
+ START_PARAM = 0
25
+ END_PARAM = 2
26
+ DEVELOPER = '<developer>'
27
+ TOTAL_COUNT = 2
28
+ CLIENT0_NAME = 'client0'
29
+ CLIENT1_NAME = 'client1'
30
+ CLIENTS = [ Authlete::Model::Client.new(clientName: CLIENT0_NAME, developer: DEVELOPER),
31
+ Authlete::Model::Client.new(clientName: CLIENT1_NAME, developer: DEVELOPER) ]
32
+ SUBJECT = '<subject>'
33
+
34
+
35
+ def generate_json
36
+ return <<~JSON
37
+ {
38
+ "start": 0,
39
+ "end": 2,
40
+ "developer": "<developer>",
41
+ "totalCount": 2,
42
+ "clients": [ { "clientName": "client0", "developer": "<developer>" },
43
+ { "clientName": "client1", "developer": "<developer>" } ],
44
+ "subject": "<subject>"
45
+ }
46
+ JSON
47
+ end
48
+
49
+
50
+ def match(obj)
51
+ assert_equal START_PARAM, obj.start
52
+ assert_equal END_PARAM, obj.end
53
+ assert_equal DEVELOPER, obj.developer
54
+ assert_equal TOTAL_COUNT, obj.totalCount
55
+ assert_equal CLIENT0_NAME, obj.clients[0].clientName
56
+ assert_equal DEVELOPER, obj.clients[0].developer
57
+ assert_equal CLIENT1_NAME, obj.clients[1].clientName
58
+ assert_equal DEVELOPER, obj.clients[1].developer
59
+ assert_equal SUBJECT, obj.subject
60
+ end
61
+
62
+
63
+ def test_from_json
64
+ jsn = generate_json
65
+ hsh = JSON.parse(jsn)
66
+ actual = Authlete::Model::Response::AuthorizedClientListResponse.new(hsh)
67
+
68
+ match(actual)
69
+ end
70
+
71
+
72
+ def test_setters
73
+ actual = Authlete::Model::Response::AuthorizedClientListResponse.new
74
+ actual.start = START_PARAM
75
+ actual.end = END_PARAM
76
+ actual.developer = DEVELOPER
77
+ actual.total_count = TOTAL_COUNT
78
+ actual.clients = CLIENTS
79
+ actual.subject = SUBJECT
80
+
81
+ match(actual)
82
+ end
83
+ end