smart_app_launch_test_kit 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 758773637de38a995aa7943da1291685f655e97f829c2e11d7adfc54d129ad42
|
4
|
+
data.tar.gz: b0c2adfcf695418617999e414a0d85766e440e943787d811ffb54218810fee2c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9b9aabc2d05bf3b3a3fe49f35fe0be2e634f7c774d86d3d6a0129aa1cd424f1c5cebd03c84c24855445a0baf95ac23c730d614e9f628a946b5ac8d5ca0b6f8fa
|
7
|
+
data.tar.gz: b287eaf62940d60d904af996c0cbbd90d59ba68ce79cdbe6400a20515b9eccb6aa0ff6c094bd07cfd86b928a11c3b6e7e740c896d125c62f5da65a857450ed38
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'uri'
|
2
|
+
|
1
3
|
module SMARTAppLaunch
|
2
4
|
class AppRedirectTest < Inferno::Test
|
3
5
|
title 'OAuth server redirects client browser to app redirect URI'
|
@@ -63,6 +65,17 @@ module SMARTAppLaunch
|
|
63
65
|
)
|
64
66
|
end
|
65
67
|
|
68
|
+
def authorization_url_builder(url, params)
|
69
|
+
uri = URI(url)
|
70
|
+
|
71
|
+
# because the URL might have paramters on it
|
72
|
+
original_parameters = Hash[URI.decode_www_form(uri.query || '')]
|
73
|
+
new_params = original_parameters.merge(params)
|
74
|
+
|
75
|
+
uri.query = URI.encode_www_form(new_params)
|
76
|
+
uri.to_s
|
77
|
+
end
|
78
|
+
|
66
79
|
run do
|
67
80
|
assert_valid_http_uri(
|
68
81
|
smart_authorization_url,
|
@@ -101,20 +114,10 @@ module SMARTAppLaunch
|
|
101
114
|
oauth2_params.merge!('code_challenge' => code_challenge, 'code_challenge_method' => pkce_code_challenge_method)
|
102
115
|
end
|
103
116
|
|
104
|
-
authorization_url =
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
'&'
|
109
|
-
else
|
110
|
-
'?'
|
111
|
-
end
|
112
|
-
|
113
|
-
oauth2_params.each do |key, value|
|
114
|
-
authorization_url += "#{key}=#{CGI.escape(value)}&"
|
115
|
-
end
|
116
|
-
|
117
|
-
authorization_url.chomp!('&')
|
117
|
+
authorization_url = authorization_url_builder(
|
118
|
+
smart_authorization_url,
|
119
|
+
oauth2_params
|
120
|
+
)
|
118
121
|
|
119
122
|
wait(
|
120
123
|
identifier: state,
|
@@ -13,6 +13,7 @@ module SMARTAppLaunch
|
|
13
13
|
configuration
|
14
14
|
- `aud` must match the client ID
|
15
15
|
- `exp` must represent a time in the future
|
16
|
+
- `sub` must be a non-blank string not exceeding 255 characters in length
|
16
17
|
)
|
17
18
|
|
18
19
|
REQUIRED_CLAIMS = ['iss', 'sub', 'aud', 'exp', 'iat'].freeze
|
@@ -47,7 +48,7 @@ module SMARTAppLaunch
|
|
47
48
|
verify_not_before: false,
|
48
49
|
verify_iat: false,
|
49
50
|
verify_jti: false,
|
50
|
-
verify_sub:
|
51
|
+
verify_sub: true,
|
51
52
|
verify_iss: true,
|
52
53
|
verify_aud: true
|
53
54
|
)
|
@@ -55,6 +56,10 @@ module SMARTAppLaunch
|
|
55
56
|
assert false, "Token validation error: #{e.message}"
|
56
57
|
end
|
57
58
|
|
59
|
+
sub_value = payload['sub']
|
60
|
+
assert !sub_value.blank?, "ID token `sub` claim is blank"
|
61
|
+
assert sub_value.length < 256, "ID token `sub` claim exceeds 255 characters in length"
|
62
|
+
|
58
63
|
missing_claims = required_claims - payload.keys
|
59
64
|
missing_claims_string = missing_claims.map { |claim| "`#{claim}`" }.join(', ')
|
60
65
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smart_app_launch_test_kit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen MacVicar
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-05-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: inferno_core
|