smart_app_launch_test_kit 0.6.3 → 0.6.4

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 (63) hide show
  1. checksums.yaml +4 -4
  2. data/lib/smart_app_launch/app_redirect_test.rb +3 -0
  3. data/lib/smart_app_launch/backend_services_authorization_request_success_test.rb +1 -0
  4. data/lib/smart_app_launch/backend_services_authorization_response_body_test.rb +11 -0
  5. data/lib/smart_app_launch/backend_services_invalid_client_assertion_test.rb +1 -0
  6. data/lib/smart_app_launch/backend_services_invalid_grant_type_test.rb +1 -0
  7. data/lib/smart_app_launch/client_stu2_2_suite.rb +8 -0
  8. data/lib/smart_app_launch/client_suite/access_alca_interaction_test.rb +5 -0
  9. data/lib/smart_app_launch/client_suite/access_alcs_interaction_test.rb +5 -0
  10. data/lib/smart_app_launch/client_suite/access_alp_interaction_test.rb +4 -0
  11. data/lib/smart_app_launch/client_suite/access_bsca_interaction_test.rb +3 -0
  12. data/lib/smart_app_launch/client_suite/authorization_request_verification_test.rb +11 -0
  13. data/lib/smart_app_launch/client_suite/registration_alca_group.rb +1 -1
  14. data/lib/smart_app_launch/client_suite/registration_alca_verification_test.rb +6 -1
  15. data/lib/smart_app_launch/client_suite/registration_alcs_verification_test.rb +4 -1
  16. data/lib/smart_app_launch/client_suite/registration_alp_verification_test.rb +3 -1
  17. data/lib/smart_app_launch/client_suite/registration_bsca_verification_test.rb +4 -0
  18. data/lib/smart_app_launch/client_suite/token_request_alca_verification_test.rb +15 -0
  19. data/lib/smart_app_launch/client_suite/token_request_alcs_verification_test.rb +6 -0
  20. data/lib/smart_app_launch/client_suite/token_request_alp_verification_test.rb +9 -0
  21. data/lib/smart_app_launch/client_suite/token_request_bsca_verification_test.rb +9 -1
  22. data/lib/smart_app_launch/client_suite/token_use_verification_test.rb +2 -1
  23. data/lib/smart_app_launch/code_received_test.rb +4 -0
  24. data/lib/smart_app_launch/cors_metadata_request_test.rb +2 -0
  25. data/lib/smart_app_launch/cors_openid_fhir_user_claim_test.rb +2 -0
  26. data/lib/smart_app_launch/cors_token_exchange_test.rb +2 -0
  27. data/lib/smart_app_launch/cors_well_known_endpoint_test.rb +2 -0
  28. data/lib/smart_app_launch/ehr_launch_group.rb +4 -0
  29. data/lib/smart_app_launch/openid_connect_group_stu2_2.rb +1 -0
  30. data/lib/smart_app_launch/openid_decode_id_token_test.rb +2 -1
  31. data/lib/smart_app_launch/openid_fhir_user_claim_test.rb +1 -0
  32. data/lib/smart_app_launch/openid_required_configuration_fields_test.rb +2 -0
  33. data/lib/smart_app_launch/openid_retrieve_configuration_test.rb +1 -1
  34. data/lib/smart_app_launch/openid_retrieve_jwks_test.rb +3 -1
  35. data/lib/smart_app_launch/openid_token_header_test.rb +2 -0
  36. data/lib/smart_app_launch/openid_token_payload_test.rb +2 -0
  37. data/lib/smart_app_launch/requirements/generated/smart_access_brands_requirements_coverage.csv +1 -0
  38. data/lib/smart_app_launch/requirements/generated/smart_client_stu2_2_requirements_coverage.csv +193 -0
  39. data/lib/smart_app_launch/requirements/generated/smart_requirements_coverage.csv +1 -0
  40. data/lib/smart_app_launch/requirements/generated/smart_stu2_2_requirements_coverage.csv +305 -0
  41. data/lib/smart_app_launch/requirements/generated/smart_stu2_requirements_coverage.csv +1 -0
  42. data/lib/smart_app_launch/requirements/hl7.fhir.uv.smart-app-launch_2.0.0_Requirements.xlsx +0 -0
  43. data/lib/smart_app_launch/requirements/hl7.fhir.uv.smart-app-launch_2.2.0_Requirements.xlsx +0 -0
  44. data/lib/smart_app_launch/requirements/smart_app_launch_test_kit_requirements.csv +1017 -0
  45. data/lib/smart_app_launch/smart_access_brands_group.rb +1 -0
  46. data/lib/smart_app_launch/smart_access_brands_retrieve_bundle_test.rb +4 -1
  47. data/lib/smart_app_launch/smart_access_brands_validate_brands_test.rb +2 -0
  48. data/lib/smart_app_launch/smart_access_brands_validate_bundle_test.rb +5 -1
  49. data/lib/smart_app_launch/smart_access_brands_validate_endpoint_urls_test.rb +1 -0
  50. data/lib/smart_app_launch/smart_access_brands_validate_endpoints_test.rb +3 -1
  51. data/lib/smart_app_launch/smart_stu2_2_suite.rb +8 -0
  52. data/lib/smart_app_launch/standalone_launch_group.rb +4 -0
  53. data/lib/smart_app_launch/token_introspection_group_stu2_2.rb +1 -0
  54. data/lib/smart_app_launch/token_introspection_response_group.rb +9 -2
  55. data/lib/smart_app_launch/token_refresh_body_test.rb +6 -0
  56. data/lib/smart_app_launch/token_refresh_stu2_test.rb +2 -1
  57. data/lib/smart_app_launch/token_refresh_test.rb +1 -1
  58. data/lib/smart_app_launch/token_response_body_test_stu2_2.rb +8 -0
  59. data/lib/smart_app_launch/token_response_headers_test.rb +2 -0
  60. data/lib/smart_app_launch/version.rb +2 -2
  61. data/lib/smart_app_launch/well_known_capabilities_stu2_test.rb +9 -1
  62. data/lib/smart_app_launch/well_known_endpoint_test.rb +5 -0
  63. metadata +26 -4
@@ -24,6 +24,7 @@ module SMARTAppLaunch
24
24
  input left blank. This will cause these group of retrieval group of tests to skip, rather than pass completely,
25
25
  as being served at an stable location is considered a requirement of the spec.
26
26
  )
27
+ verifies_requirements 'hl7.fhir.uv.smart-app-launch_2.2.0@405'
27
28
 
28
29
  input_instructions <<~INSTRUCTIONS
29
30
  For systems that make their User Access Brand Bundle available at a public endpoint, please input
@@ -5,7 +5,10 @@ module SMARTAppLaunch
5
5
  description %(
6
6
  Verify that the publisher's User Access Brands Bundle can be publicly
7
7
  accessed at the supplied URL location.
8
- )
8
+ )
9
+ verifies_requirements 'hl7.fhir.uv.smart-app-launch_2.2.0@396',
10
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@400',
11
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@423'
9
12
 
10
13
  makes_request :bundle_request
11
14
 
@@ -12,6 +12,8 @@ module SMARTAppLaunch
12
12
 
13
13
  This test does not currently validate availability or format of Brand or Portal logos.
14
14
  )
15
+ verifies_requirements 'hl7.fhir.uv.smart-app-launch_2.2.0@396',
16
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@402'
15
17
 
16
18
  input :user_access_brands_bundle,
17
19
  optional: true
@@ -7,7 +7,11 @@ module SMARTAppLaunch
7
7
  [User Access Brand Bundle Profile](https://hl7.org/fhir/smart-app-launch/STU2.2/StructureDefinition-user-access-brands-bundle.html).
8
8
 
9
9
  This test also ensures the Bundle is the 'collection' type and that it is not empty.
10
- )
10
+ )
11
+ verifies_requirements 'hl7.fhir.uv.smart-app-launch_2.2.0@396',
12
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@398',
13
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@417',
14
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@418'
11
15
 
12
16
  input :user_access_brands_bundle,
13
17
  optional: true
@@ -6,6 +6,7 @@ module SMARTAppLaunch
6
6
  Verify that User Access Brands Bundle contains Endpoints that contain URLs that are both valid
7
7
  and available.
8
8
  )
9
+ verifies_requirements 'hl7.fhir.uv.smart-app-launch_2.2.0@400'
9
10
 
10
11
  input :user_access_brands_bundle,
11
12
  optional: true
@@ -8,7 +8,9 @@ module SMARTAppLaunch
8
8
 
9
9
  Along with validating the Endpoint resources, this test also ensures that each endpoint contains a primary brand
10
10
  by checking if it is referenced by at least 1 Organization resource.
11
- )
11
+ )
12
+ verifies_requirements 'hl7.fhir.uv.smart-app-launch_2.2.0@396',
13
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@402'
12
14
 
13
15
  def find_referenced_org(bundle_resource, endpoint_id)
14
16
  bundle_resource
@@ -38,6 +38,14 @@ module SMARTAppLaunch
38
38
  post_authorization_uri: "#{Inferno::Application['base_url']}/custom/smart_stu2_2/post_auth"
39
39
  }
40
40
 
41
+ requirement_sets(
42
+ {
43
+ identifier: 'hl7.fhir.uv.smart-app-launch_2.2.0',
44
+ title: 'SMART App Launch',
45
+ actor: 'Server'
46
+ }
47
+ )
48
+
41
49
  description <<~DESCRIPTION
42
50
  The SMART App Launch Test Suite verifies that systems correctly implement
43
51
  the [SMART App Launch IG](http://hl7.org/fhir/smart-app-launch/STU2.2/)
@@ -63,6 +63,10 @@ module SMARTAppLaunch
63
63
  name: :auth_request_method,
64
64
  default: 'GET',
65
65
  locked: true
66
+ },
67
+ {
68
+ name: :pkce_support,
69
+ default: 'disabled'
66
70
  }
67
71
  ]
68
72
  }
@@ -39,6 +39,7 @@ module SMARTAppLaunch
39
39
 
40
40
  See the individual test groups for more details and guidance.
41
41
  )
42
+
42
43
  group from: :smart_token_introspection_access_token_group_stu2_2
43
44
 
44
45
  access_token_group_index = children.find_index { |child| child.id.to_s.end_with? 'access_token_group' }
@@ -28,7 +28,6 @@ module SMARTAppLaunch
28
28
 
29
29
  test do
30
30
  title 'Token introspection response for an active token contains required fields'
31
-
32
31
  description %(
33
32
  This test will check whether the metadata in the token introspection response is correct for an active token and
34
33
  that the response data matches the data in the original access token and/or access token response from the
@@ -46,12 +45,20 @@ module SMARTAppLaunch
46
45
  launch context parameter(s)
47
46
  * Parameters checked for are `patient` and `encounter`
48
47
  * IF identity token was included as part of access token response, `iss` and `sub` claims are present in the
49
- introspection response and match those of the orignal ID token
48
+ introspection response and match those of the original ID token
50
49
 
51
50
  Optional but Recommended:
52
51
  * IF identity token was included as part of access token response, `fhirUser` claim SHOULD be present in
53
52
  introspection response and should match the claim in the ID token
54
53
  )
54
+ verifies_requirements 'hl7.fhir.uv.smart-app-launch_2.2.0@95',
55
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@273',
56
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@274',
57
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@275',
58
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@276',
59
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@277',
60
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@278',
61
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@279'
55
62
 
56
63
  input :standalone_smart_auth_info, type: :auth_info, options: { mode: 'access' }
57
64
 
@@ -14,6 +14,12 @@ module SMARTAppLaunch
14
14
 
15
15
  Scopes returned must be a strict subset of the scopes granted in the original launch.
16
16
  )
17
+ verifies_requirements 'hl7.fhir.uv.smart-app-launch_2.2.0@110',
18
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@111',
19
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@112',
20
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@113',
21
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@114'
22
+
17
23
  input :received_scopes
18
24
  input :smart_auth_info, type: :auth_info, options: { mode: 'auth' }
19
25
  output :refresh_token, :access_token, :token_retrieval_time, :expires_in, :received_scopes, :smart_auth_info
@@ -14,8 +14,9 @@ module SMARTAppLaunch
14
14
  Launch Guide, the token refresh response should include the HTTP
15
15
  Cache-Control response header field with a value of no-store, as well as
16
16
  the Pragma response header field with a value of no-cache to be
17
- consistent with the requirements of the inital access token exchange.
17
+ consistent with the requirements of the initial access token exchange.
18
18
  )
19
+ verifies_requirements 'hl7.fhir.uv.smart-app-launch_2.2.0@109'
19
20
 
20
21
  input :smart_auth_info, type: :auth_info, options: { mode: 'auth' }
21
22
 
@@ -14,7 +14,7 @@ module SMARTAppLaunch
14
14
  Launch Guide, the token refresh response should include the HTTP
15
15
  Cache-Control response header field with a value of no-store, as well as
16
16
  the Pragma response header field with a value of no-cache to be
17
- consistent with the requirements of the inital access token exchange.
17
+ consistent with the requirements of the initial access token exchange.
18
18
  )
19
19
  input :received_scopes
20
20
  input :smart_auth_info, type: :auth_info, options: { mode: 'auth' }
@@ -12,7 +12,15 @@ module SMARTAppLaunch
12
12
 
13
13
  The format of the optional `fhirContext` field is validated if present.
14
14
  )
15
+
15
16
  id :smart_token_response_body_stu2_2
17
+ verifies_requirements 'hl7.fhir.uv.smart-app-launch_2.2.0@73',
18
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@74',
19
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@75',
20
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@78',
21
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@84',
22
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@172',
23
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@178'
16
24
 
17
25
  input :smart_auth_info, type: :auth_info, options: { mode: 'auth' }
18
26
  output :id_token,
@@ -7,6 +7,8 @@ module SMARTAppLaunch
7
7
  response header field with a value of no-cache.
8
8
  )
9
9
  id :smart_token_response_headers
10
+ verifies_requirements 'hl7.fhir.uv.smart-app-launch_2.2.0@86',
11
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@87'
10
12
 
11
13
  uses_request :token
12
14
 
@@ -1,4 +1,4 @@
1
1
  module SMARTAppLaunch
2
- VERSION = '0.6.3'.freeze
3
- LAST_UPDATED = '2025-05-13'.freeze
2
+ VERSION = '0.6.4'.freeze
3
+ LAST_UPDATED = '2025-06-25'.freeze
4
4
  end
@@ -10,7 +10,15 @@ module SMARTAppLaunch
10
10
  If the `sso-openid-connect` capability is supported, then `issuer` and `jwks_uri` must be
11
11
  present. If `sso-openid-connect` capability is not supported, then `issuer` must be omitted.
12
12
  )
13
-
13
+ verifies_requirements 'hl7.fhir.uv.smart-app-launch_2.2.0@30',
14
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@373',
15
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@381',
16
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@382',
17
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@383',
18
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@385',
19
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@393',
20
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@394'
21
+
14
22
  def required_capabilities
15
23
  {
16
24
  'authorization_endpoint' => String,
@@ -10,6 +10,11 @@ module SMARTAppLaunch
10
10
  The authorization endpoints accepted by a FHIR resource server can
11
11
  be exposed as a Well-Known Uniform Resource Identifier
12
12
  )
13
+ verifies_requirements 'hl7.fhir.uv.smart-app-launch_2.2.0@30',
14
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@372',
15
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@374',
16
+ 'hl7.fhir.uv.smart-app-launch_2.2.0@377'
17
+
13
18
  input :url,
14
19
  title: 'FHIR Endpoint',
15
20
  description: 'URL of the FHIR endpoint used by SMART applications'
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.6.3
4
+ version: 0.6.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen MacVicar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-05-13 00:00:00.000000000 Z
11
+ date: 2025-06-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: inferno_core
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.6.3
19
+ version: 0.6.15
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 0.6.3
26
+ version: 0.6.15
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: json-jwt
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +108,20 @@ dependencies:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: 1.1.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: roo
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 2.10.1
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 2.10.1
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: rspec
113
127
  requirement: !ruby/object:Gem::Requirement
@@ -229,6 +243,14 @@ files:
229
243
  - lib/smart_app_launch/openid_token_header_test.rb
230
244
  - lib/smart_app_launch/openid_token_payload_test.rb
231
245
  - lib/smart_app_launch/post_auth.html
246
+ - lib/smart_app_launch/requirements/generated/smart_access_brands_requirements_coverage.csv
247
+ - lib/smart_app_launch/requirements/generated/smart_client_stu2_2_requirements_coverage.csv
248
+ - lib/smart_app_launch/requirements/generated/smart_requirements_coverage.csv
249
+ - lib/smart_app_launch/requirements/generated/smart_stu2_2_requirements_coverage.csv
250
+ - lib/smart_app_launch/requirements/generated/smart_stu2_requirements_coverage.csv
251
+ - lib/smart_app_launch/requirements/hl7.fhir.uv.smart-app-launch_2.0.0_Requirements.xlsx
252
+ - lib/smart_app_launch/requirements/hl7.fhir.uv.smart-app-launch_2.2.0_Requirements.xlsx
253
+ - lib/smart_app_launch/requirements/smart_app_launch_test_kit_requirements.csv
232
254
  - lib/smart_app_launch/smart_access_brands_examples/r4_capability_statement.json
233
255
  - lib/smart_app_launch/smart_access_brands_examples/smart_access_brands_example.json.erb
234
256
  - lib/smart_app_launch/smart_access_brands_group.rb