authlete 1.26.1 → 1.27.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.
- checksums.yaml +4 -4
- data/authlete.gemspec +1 -1
- data/lib/authlete/model/client.rb +119 -1
- data/lib/authlete/model/service.rb +7 -1
- data/lib/authlete/types/application-type.rb +27 -0
- data/lib/authlete/types/client-auth-method.rb +32 -0
- data/lib/authlete/types/constant-utility.rb +34 -0
- data/lib/authlete/types/delivery-mode.rb +28 -0
- data/lib/authlete/types/grant-type.rb +34 -0
- data/lib/authlete/types/jwealg.rb +42 -0
- data/lib/authlete/types/jweenc.rb +31 -0
- data/lib/authlete/types/jwsalg.rb +40 -0
- data/lib/authlete/types/response-type.rb +33 -0
- data/lib/authlete/types/subject-type.rb +27 -0
- data/lib/authlete/version.rb +2 -2
- data/lib/authlete.rb +14 -1
- data/test/authlete/model/test_client.rb +83 -6
- data/test/authlete/model/test_service.rb +8 -3
- data/test/authlete/types/test_application-type.rb +44 -0
- data/test/authlete/types/test_client-auth-method.rb +64 -0
- data/test/authlete/types/test_delivery-mode.rb +48 -0
- data/test/authlete/types/test_grant-type.rb +72 -0
- data/test/authlete/types/test_jwealg.rb +104 -0
- data/test/authlete/types/test_jweenc.rb +60 -0
- data/test/authlete/types/test_jwsalg.rb +96 -0
- data/test/authlete/types/test_response-type.rb +68 -0
- data/test/authlete/types/test_subject-type.rb +44 -0
- metadata +35 -6
@@ -1,6 +1,6 @@
|
|
1
1
|
# :nodoc:
|
2
2
|
#
|
3
|
-
# Copyright (C) 2014-
|
3
|
+
# Copyright (C) 2014-2022 Authlete, Inc.
|
4
4
|
#
|
5
5
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
6
|
# you may not use this file except in compliance with the License.
|
@@ -55,7 +55,7 @@ class ClientTest < Minitest::Test
|
|
55
55
|
TOS_URI_VALUE = '<tos-uri0-value>'
|
56
56
|
TOS_URIS = [ Authlete::Model::TaggedValue.new(tag: TOS_URI_TAG, value: TOS_URI_VALUE) ]
|
57
57
|
JWKS_URI = '<jwks-uri>'
|
58
|
-
JWKS = '
|
58
|
+
JWKS = '{"keys":[]}'
|
59
59
|
DERIVED_SECTOR_IDENTIFIER = '<derived-sector-identifier>'
|
60
60
|
SECTOR_IDENTIFIER_URI = '<sector-identifier-uri>'
|
61
61
|
SUBJECT_TYPE = 'PUBLIC'
|
@@ -153,7 +153,7 @@ class ClientTest < Minitest::Test
|
|
153
153
|
"tosUri": "<tos-uri>",
|
154
154
|
"tosUris": [ { "tag": "<tos-uri0-tag>", "value": "<tos-uri0-value>" } ],
|
155
155
|
"jwksUri": "<jwks-uri>",
|
156
|
-
"jwks": "
|
156
|
+
"jwks": "{\\"keys\\":[]}",
|
157
157
|
"derivedSectorIdentifier": "<derived-sector-identifier>",
|
158
158
|
"sectorIdentifierUri": "<sector-identifier-uri>",
|
159
159
|
"subjectType": "PUBLIC",
|
@@ -216,8 +216,8 @@ class ClientTest < Minitest::Test
|
|
216
216
|
"pkceS256Required": false
|
217
217
|
}
|
218
218
|
JSON
|
219
|
-
|
220
|
-
|
219
|
+
end
|
220
|
+
|
221
221
|
|
222
222
|
def generate_hash
|
223
223
|
{
|
@@ -245,7 +245,7 @@ class ClientTest < Minitest::Test
|
|
245
245
|
tosUri: '<tos-uri>',
|
246
246
|
tosUris: [ { tag: '<tos-uri0-tag>', value: '<tos-uri0-value>' } ],
|
247
247
|
jwksUri: '<jwks-uri>',
|
248
|
-
jwks: '
|
248
|
+
jwks: '{"keys":[]}',
|
249
249
|
derivedSectorIdentifier: '<derived-sector-identifier>',
|
250
250
|
sectorIdentifierUri: '<sector-identifier-uri>',
|
251
251
|
subjectType: 'PUBLIC',
|
@@ -509,4 +509,81 @@ class ClientTest < Minitest::Test
|
|
509
509
|
|
510
510
|
assert_equal expected, actual
|
511
511
|
end
|
512
|
+
|
513
|
+
|
514
|
+
def test_standard_metadata_full
|
515
|
+
client = Authlete::Model::Client.new
|
516
|
+
set_params(client)
|
517
|
+
|
518
|
+
expected_response_types = ['none', 'code', 'token', 'id_token']
|
519
|
+
expected_grant_types = ['authorization_code', 'refresh_token']
|
520
|
+
expected_jwks = { "keys" => [] }
|
521
|
+
|
522
|
+
metadata = client.standard_metadata(false, false, false)
|
523
|
+
|
524
|
+
assert_equal "#{CLIENT_ID}", metadata[:client_id]
|
525
|
+
assert_equal REDIRECT_URIS, metadata[:redirect_uris]
|
526
|
+
assert_equal expected_response_types, metadata[:response_types]
|
527
|
+
assert_equal expected_grant_types, metadata[:grant_types]
|
528
|
+
assert_equal 'web', metadata[:application_type]
|
529
|
+
assert_equal CONTACTS, metadata[:contacts]
|
530
|
+
assert_equal CLIENT_NAME, metadata[:client_name]
|
531
|
+
assert_equal LOGO_URI, metadata[:logo_uri]
|
532
|
+
assert_equal CLIENT_URI, metadata[:client_uri]
|
533
|
+
assert_equal POLICY_URI, metadata[:policy_uri]
|
534
|
+
assert_equal TOS_URI, metadata[:tos_uri]
|
535
|
+
assert_equal JWKS_URI, metadata[:jwks_uri]
|
536
|
+
assert_equal expected_jwks, metadata[:jwks]
|
537
|
+
assert_equal SECTOR_IDENTIFIER_URI, metadata[:sector_identifier_uri]
|
538
|
+
assert_equal 'public', metadata[:subject_type]
|
539
|
+
assert_equal 'HS256', metadata[:id_token_signed_response_alg]
|
540
|
+
assert_equal 'PBES2-HS256+A128KW', metadata[:id_token_encrypted_response_alg]
|
541
|
+
assert_equal 'A128CBC-HS256', metadata[:id_token_encrypted_response_enc]
|
542
|
+
assert_equal 'HS256', metadata[:userinfo_signed_response_alg]
|
543
|
+
assert_equal 'PBES2-HS256+A128KW', metadata[:userinfo_encrypted_response_alg]
|
544
|
+
assert_equal 'A128CBC-HS256', metadata[:userinfo_encrypted_response_enc]
|
545
|
+
assert_equal 'HS256', metadata[:request_object_signing_alg]
|
546
|
+
assert_equal 'PBES2-HS256+A128KW', metadata[:request_object_encryption_alg]
|
547
|
+
assert_equal 'A128CBC-HS256', metadata[:request_object_encryption_enc]
|
548
|
+
assert_equal 'client_secret_basic', metadata[:token_endpoint_auth_method]
|
549
|
+
assert_equal 'HS256', metadata[:token_endpoint_auth_signing_alg]
|
550
|
+
assert_equal DEFAULT_MAX_AGE, metadata[:default_max_age]
|
551
|
+
assert_equal DEFAULT_ACRS, metadata[:default_acr_values]
|
552
|
+
assert_equal AUTH_TIME_REQUIRED, metadata[:require_auth_time]
|
553
|
+
assert_equal LOGIN_URI, metadata[:initiate_login_uri]
|
554
|
+
assert_equal REQUEST_URIS, metadata[:request_uris]
|
555
|
+
assert_equal TLS_CLIENT_AUTH_SUBJECT_DN, metadata[:tls_client_auth_subject_dn]
|
556
|
+
assert_equal TLS_CLIENT_AUTH_SAN_DNS, metadata[:tls_client_auth_san_dns]
|
557
|
+
assert_equal TLS_CLIENT_AUTH_SAN_URI, metadata[:tls_client_auth_san_uri]
|
558
|
+
assert_equal TLS_CLIENT_AUTH_SAN_IP, metadata[:tls_client_auth_san_ip]
|
559
|
+
assert_equal TLS_CLIENT_AUTH_SAN_EMAIL, metadata[:tls_client_auth_san_email]
|
560
|
+
assert_equal TLS_CLIENT_CERTIFICATE_BOUND_ACCESS_TOKENS, metadata[:tls_client_certificate_bound_access_tokens]
|
561
|
+
assert_equal SOFTWARE_ID, metadata[:software_id]
|
562
|
+
assert_equal SOFTWARE_VERSION, metadata[:software_version]
|
563
|
+
assert_equal 'HS256', metadata[:authorization_signed_response_alg]
|
564
|
+
assert_equal 'PBES2-HS256+A128KW', metadata[:authorization_encrypted_response_alg]
|
565
|
+
assert_equal 'A128CBC-HS256', metadata[:authorization_encrypted_response_enc]
|
566
|
+
assert_equal 'poll', metadata[:backchannel_token_delivery_mode]
|
567
|
+
assert_equal BC_NOTIFICATION_ENDPOINT, metadata[:backchannel_client_notification_endpoint]
|
568
|
+
assert_equal 'HS256', metadata[:backchannel_authentication_request_signing_alg]
|
569
|
+
assert_equal BC_USER_CODE_REQUIRED, metadata[:backchannel_user_code_parameter]
|
570
|
+
assert_equal AUTHORIZATION_DETAILS_TYPES, metadata[:authorization_details_types]
|
571
|
+
assert_equal DIGEST_ALGORITHM, metadata[:digest_algorithm]
|
572
|
+
end
|
573
|
+
|
574
|
+
|
575
|
+
def test_standard_metadata_minimum
|
576
|
+
client = Authlete::Model::Client.new
|
577
|
+
set_params(client)
|
578
|
+
|
579
|
+
client.default_max_age = 0
|
580
|
+
client.auth_time_required = false
|
581
|
+
client.login_uri = nil
|
582
|
+
|
583
|
+
metadata = client.standard_metadata
|
584
|
+
|
585
|
+
assert_nil metadata[:default_max_age]
|
586
|
+
assert_nil metadata[:require_auth_time]
|
587
|
+
assert_nil metadata[:initiate_login_uri]
|
588
|
+
end
|
512
589
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# :nodoc:
|
2
2
|
#
|
3
|
-
# Copyright (C) 2014-
|
3
|
+
# Copyright (C) 2014-2022 Authlete, Inc.
|
4
4
|
#
|
5
5
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
6
|
# you may not use this file except in compliance with the License.
|
@@ -194,6 +194,7 @@ class ServiceTest < Minitest::Test
|
|
194
194
|
FEDERATION_SIGNATURE_KEY_ID = '<federation-signature-key-id>'
|
195
195
|
FEDERATION_CONFIGURATION_DURATION = 100
|
196
196
|
DCR_DUPLICATE_SOFTWARE_ID_BLOCKED = false
|
197
|
+
OPENID_DROPPED_ON_REFRESH_WITHOUT_OFFLINE_ACCESS = false
|
197
198
|
|
198
199
|
def generate_json
|
199
200
|
return <<~JSON
|
@@ -347,7 +348,8 @@ class ServiceTest < Minitest::Test
|
|
347
348
|
"jwtGrantUnsignedJwtRejected": false,
|
348
349
|
"federationSignatureKeyId": "<federation-signature-key-id>",
|
349
350
|
"federationConfigurationDuration": 100,
|
350
|
-
"dcrDuplicateSoftwareIdBlocked": false
|
351
|
+
"dcrDuplicateSoftwareIdBlocked": false,
|
352
|
+
"openidDroppedOnRefreshWithoutOfflineAccess": false
|
351
353
|
}
|
352
354
|
JSON
|
353
355
|
|
@@ -505,7 +507,8 @@ class ServiceTest < Minitest::Test
|
|
505
507
|
jwtGrantUnsignedJwtRejected: false,
|
506
508
|
federationSignatureKeyId: '<federation-signature-key-id>',
|
507
509
|
federationConfigurationDuration: 100,
|
508
|
-
dcrDuplicateSoftwareIdBlocked: false
|
510
|
+
dcrDuplicateSoftwareIdBlocked: false,
|
511
|
+
openidDroppedOnRefreshWithoutOfflineAccess: false
|
509
512
|
}
|
510
513
|
end
|
511
514
|
|
@@ -659,6 +662,7 @@ class ServiceTest < Minitest::Test
|
|
659
662
|
obj.federation_signature_key_id = FEDERATION_SIGNATURE_KEY_ID
|
660
663
|
obj.federation_configuration_duration = FEDERATION_CONFIGURATION_DURATION
|
661
664
|
obj.dcr_duplicate_software_id_blocked = DCR_DUPLICATE_SOFTWARE_ID_BLOCKED
|
665
|
+
obj.openidDroppedOnRefreshWithoutOfflineAccess = OPENID_DROPPED_ON_REFRESH_WITHOUT_OFFLINE_ACCESS
|
662
666
|
end
|
663
667
|
|
664
668
|
def match(obj)
|
@@ -827,6 +831,7 @@ class ServiceTest < Minitest::Test
|
|
827
831
|
assert_equal FEDERATION_SIGNATURE_KEY_ID, obj.federationSignatureKeyId
|
828
832
|
assert_equal FEDERATION_CONFIGURATION_DURATION, obj.federationConfigurationDuration
|
829
833
|
assert_equal DCR_DUPLICATE_SOFTWARE_ID_BLOCKED, obj.dcrDuplicateSoftwareIdBlocked
|
834
|
+
assert_equal OPENID_DROPPED_ON_REFRESH_WITHOUT_OFFLINE_ACCESS, obj.openidDroppedOnRefreshWithoutOfflineAccess
|
830
835
|
end
|
831
836
|
|
832
837
|
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# :nodoc:
|
2
|
+
#
|
3
|
+
# Copyright (C) 2022 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 'minitest/autorun'
|
20
|
+
|
21
|
+
|
22
|
+
class ApplicationTypeTest < Minitest::Test
|
23
|
+
def do_test(input, expected)
|
24
|
+
output = Authlete::Types::ApplicationType::constant_get(input)
|
25
|
+
|
26
|
+
if expected.nil?
|
27
|
+
assert_nil output
|
28
|
+
else
|
29
|
+
assert_equal expected, output
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_unknown
|
34
|
+
do_test('UNKNOWN', nil)
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_web
|
38
|
+
do_test('WEB', 'web')
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_native
|
42
|
+
do_test('NATIVE', 'native')
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# :nodoc:
|
2
|
+
#
|
3
|
+
# Copyright (C) 2022 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 'minitest/autorun'
|
20
|
+
|
21
|
+
|
22
|
+
class ClientAuthMethodTest < Minitest::Test
|
23
|
+
def do_test(input, expected)
|
24
|
+
output = Authlete::Types::ClientAuthMethod::constant_get(input)
|
25
|
+
|
26
|
+
if expected.nil?
|
27
|
+
assert_nil output
|
28
|
+
else
|
29
|
+
assert_equal expected, output
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_unknown
|
34
|
+
do_test('UNKNOWN', nil)
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_none
|
38
|
+
do_test('NONE', 'none')
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_client_secret_basic
|
42
|
+
do_test('CLIENT_SECRET_BASIC', 'client_secret_basic')
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_client_secret_post
|
46
|
+
do_test('CLIENT_SECRET_POST', 'client_secret_post')
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_client_secret_jwt
|
50
|
+
do_test('CLIENT_SECRET_JWT', 'client_secret_jwt')
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_private_key_jwt
|
54
|
+
do_test('PRIVATE_KEY_JWT', 'private_key_jwt')
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_tls_client_auth
|
58
|
+
do_test('TLS_CLIENT_AUTH', 'tls_client_auth')
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_self_signed_tls_client_auth
|
62
|
+
do_test('SELF_SIGNED_TLS_CLIENT_AUTH', 'self_signed_tls_client_auth')
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# :nodoc:
|
2
|
+
#
|
3
|
+
# Copyright (C) 2022 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 'minitest/autorun'
|
20
|
+
|
21
|
+
|
22
|
+
class DeliveryModeTest < Minitest::Test
|
23
|
+
def do_test(input, expected)
|
24
|
+
output = Authlete::Types::DeliveryMode::constant_get(input)
|
25
|
+
|
26
|
+
if expected.nil?
|
27
|
+
assert_nil output
|
28
|
+
else
|
29
|
+
assert_equal expected, output
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_unknown
|
34
|
+
do_test('UNKNOWN', nil)
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_poll
|
38
|
+
do_test('POLL', 'poll')
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_ping
|
42
|
+
do_test('PING', 'ping')
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_push
|
46
|
+
do_test('PUSH', 'push')
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# :nodoc:
|
2
|
+
#
|
3
|
+
# Copyright (C) 2022 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 'minitest/autorun'
|
20
|
+
|
21
|
+
|
22
|
+
class GrantTypeTest < Minitest::Test
|
23
|
+
def do_test(input, expected)
|
24
|
+
output = Authlete::Types::GrantType::constant_get(input)
|
25
|
+
|
26
|
+
if expected.nil?
|
27
|
+
assert_nil output
|
28
|
+
else
|
29
|
+
assert_equal expected, output
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_unknown
|
34
|
+
do_test('UNKNOWN', nil)
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_authorization_code
|
38
|
+
do_test('AUTHORIZATION_CODE', 'authorization_code')
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_implicit
|
42
|
+
do_test('IMPLICIT', 'implicit')
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_password
|
46
|
+
do_test('PASSWORD', 'password')
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_client_credentials
|
50
|
+
do_test('CLIENT_CREDENTIALS', 'client_credentials')
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_refresh_token
|
54
|
+
do_test('REFRESH_TOKEN', 'refresh_token')
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_ciba
|
58
|
+
do_test('CIBA', 'urn:openid:params:grant-type:ciba')
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_device_code
|
62
|
+
do_test('DEVICE_CODE', 'urn:ietf:params:oauth:grant-type:device_code')
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_token_exchange
|
66
|
+
do_test('TOKEN_EXCHANGE', 'urn:ietf:params:oauth:grant-type:token-exchange')
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_jwt_bearer
|
70
|
+
do_test('JWT_BEARER', 'urn:ietf:params:oauth:grant-type:jwt-bearer')
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,104 @@
|
|
1
|
+
# :nodoc:
|
2
|
+
#
|
3
|
+
# Copyright (C) 2022 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 'minitest/autorun'
|
20
|
+
|
21
|
+
|
22
|
+
class JWEAlgTest < Minitest::Test
|
23
|
+
def do_test(input, expected)
|
24
|
+
output = Authlete::Types::JWEAlg::constant_get(input)
|
25
|
+
|
26
|
+
if expected.nil?
|
27
|
+
assert_nil output
|
28
|
+
else
|
29
|
+
assert_equal expected, output
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_unknown
|
34
|
+
do_test('UNKNOWN', nil)
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_rsa1_5
|
38
|
+
do_test('RSA1_5', 'RSA1_5')
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_oaep
|
42
|
+
do_test('RSA_OAEP', 'RSA-OAEP')
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_oaep_256
|
46
|
+
do_test('RSA_OAEP_256', 'RSA-OAEP-256')
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_a128kw
|
50
|
+
do_test('A128KW', 'A128KW')
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_a192kw
|
54
|
+
do_test('A192KW', 'A192KW')
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_a256kw
|
58
|
+
do_test('A256KW', 'A256KW')
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_dir
|
62
|
+
do_test('DIR', 'dir')
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_ecdh_es
|
66
|
+
do_test('ECDH_ES', 'ECDH-ES')
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_ecdh_es_a128kw
|
70
|
+
do_test('ECDH_ES_A128KW', 'ECDH-ES+A128KW')
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_ecdh_es_a192kw
|
74
|
+
do_test('ECDH_ES_A192KW', 'ECDH-ES+A192KW')
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_ecdh_es_a256kw
|
78
|
+
do_test('ECDH_ES_A256KW', 'ECDH-ES+A256KW')
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_a128gcmkw
|
82
|
+
do_test('A128GCMKW', 'A128GCMKW')
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_a192gcmkw
|
86
|
+
do_test('A192GCMKW', 'A192GCMKW')
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_a256gcmkw
|
90
|
+
do_test('A256GCMKW', 'A256GCMKW')
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_pbes2_hs256_a128kw
|
94
|
+
do_test('PBES2_HS256_A128KW', 'PBES2-HS256+A128KW')
|
95
|
+
end
|
96
|
+
|
97
|
+
def test_pbes2_hs384_a192kw
|
98
|
+
do_test('PBES2_HS384_A192KW', 'PBES2-HS384+A192KW')
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_pbes2_hs512_a256kw
|
102
|
+
do_test('PBES2_HS512_A256KW', 'PBES2-HS512+A256KW')
|
103
|
+
end
|
104
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# :nodoc:
|
2
|
+
#
|
3
|
+
# Copyright (C) 2022 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 'minitest/autorun'
|
20
|
+
|
21
|
+
|
22
|
+
class JWEEncTest < Minitest::Test
|
23
|
+
def do_test(input, expected)
|
24
|
+
output = Authlete::Types::JWEEnc::constant_get(input)
|
25
|
+
|
26
|
+
if expected.nil?
|
27
|
+
assert_nil output
|
28
|
+
else
|
29
|
+
assert_equal expected, output
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_unknown
|
34
|
+
do_test('UNKNOWN', nil)
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_a128cbc_hs256
|
38
|
+
do_test('A128CBC_HS256', 'A128CBC-HS256')
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_a192cbc_hs384
|
42
|
+
do_test('A192CBC_HS384', 'A192CBC-HS384')
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_a256cbc_hs512
|
46
|
+
do_test('A256CBC_HS512', 'A256CBC-HS512')
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_a128gcm
|
50
|
+
do_test('A128GCM', 'A128GCM')
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_a192gcm
|
54
|
+
do_test('A192GCM', 'A192GCM')
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_a256gcm
|
58
|
+
do_test('A256GCM', 'A256GCM')
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,96 @@
|
|
1
|
+
# :nodoc:
|
2
|
+
#
|
3
|
+
# Copyright (C) 2022 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 'minitest/autorun'
|
20
|
+
|
21
|
+
|
22
|
+
class JWSAlgTest < Minitest::Test
|
23
|
+
def do_test(input, expected)
|
24
|
+
output = Authlete::Types::JWSAlg::constant_get(input)
|
25
|
+
|
26
|
+
if expected.nil?
|
27
|
+
assert_nil output
|
28
|
+
else
|
29
|
+
assert_equal expected, output
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_unknown
|
34
|
+
do_test('UNKNOWN', nil)
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_none
|
38
|
+
do_test('NONE', 'none')
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_hs256
|
42
|
+
do_test('HS256', 'HS256')
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_hs384
|
46
|
+
do_test('HS384', 'HS384')
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_hs512
|
50
|
+
do_test('HS512', 'HS512')
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_rs256
|
54
|
+
do_test('RS256', 'RS256')
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_rs384
|
58
|
+
do_test('RS384', 'RS384')
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_rs512
|
62
|
+
do_test('RS512', 'RS512')
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_es256
|
66
|
+
do_test('ES256', 'ES256')
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_es384
|
70
|
+
do_test('ES384', 'ES384')
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_es512
|
74
|
+
do_test('ES512', 'ES512')
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_ps256
|
78
|
+
do_test('PS256', 'PS256')
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_ps384
|
82
|
+
do_test('PS384', 'PS384')
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_ps512
|
86
|
+
do_test('PS512', 'PS512')
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_es256k
|
90
|
+
do_test('ES256K', 'ES256K')
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_eddsa
|
94
|
+
do_test('EdDSA', 'EdDSA')
|
95
|
+
end
|
96
|
+
end
|