smart_app_launch_test_kit 0.4.6 → 0.5.0

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: af89139a6750969a3efa3731229c4ff2a8754738f75024b10aa986cb69325dbb
4
- data.tar.gz: 8b412a1bb5601e932bc149f0de5e5dc59aaf5a7dc5be962a98a575a378fb297e
3
+ metadata.gz: 047dcb8643e2524e9bdcd7653db652640f08e672085d18fd589d4a50e717cd08
4
+ data.tar.gz: cf7fe4c64a2e9c9bb9e50bcc2176e7ee5a8c5cac6a970376fb29b8d31e50ca96
5
5
  SHA512:
6
- metadata.gz: c67c07a022b652ab979b1d5f1d857d2ffb44b63030e00f11f0d1ed5b0cede5a1371abef7263ea8e6c517acb617c33e3698bf74686fdec407eac5d37a48ceedc6
7
- data.tar.gz: cef63d441dfd3f5b1cc2d0c902bab6632006f447b494ba39ebbb2a4c8b87d82cf457c60f0108a22f752c5ac525a94b69d962622b234901805aaf72a8f750e53f
6
+ metadata.gz: 4b0bd4cfc4a2d2db72017cf433482edb59aeb22ea4d538a03a44f14664631d86e9426a4b1b521175673275c7464a0b3f33f673fc488a1b2b9581c5df6a97e7bf
7
+ data.tar.gz: a99702f36d6b8501102cadfca039b0f7b6e46e65e19068da1a52971afee24758228fa59f0c3273c6bad730b47f107d80074e5b222bb9dfd5921c35473e423f1e
@@ -0,0 +1,103 @@
1
+ {
2
+ "title": "Inferno Reference Server",
3
+ "id": "smart_stu1_reference_server",
4
+ "test_suite_id": "smart",
5
+ "inputs": [
6
+ {
7
+ "name": "url",
8
+ "type": "text",
9
+ "value": "https://inferno.healthit.gov/reference-server/r4"
10
+ },
11
+ {
12
+ "name": "standalone_client_id",
13
+ "type": "text",
14
+ "value": "SAMPLE_PUBLIC_CLIENT_ID"
15
+ },
16
+ {
17
+ "name": "standalone_requested_scopes",
18
+ "type": "text",
19
+ "value": "launch/patient openid fhirUser offline_access patient/*.read"
20
+ },
21
+ {
22
+ "name": "use_pkce",
23
+ "type": "radio",
24
+ "title": "Proof Key for Code Exchange (PKCE)",
25
+ "options": {
26
+ "list_options": [
27
+ {
28
+ "label": "Enabled",
29
+ "value": "true"
30
+ },
31
+ {
32
+ "label": "Disabled",
33
+ "value": "false"
34
+ }
35
+ ]
36
+ },
37
+ "value": "false"
38
+ },
39
+ {
40
+ "name": "pkce_code_challenge_method",
41
+ "type": "radio",
42
+ "optional": true,
43
+ "title": "PKCE Code Challenge Method",
44
+ "options": {
45
+ "list_options": [
46
+ {
47
+ "label": "S256",
48
+ "value": "S256"
49
+ },
50
+ {
51
+ "label": "plain",
52
+ "value": "plain"
53
+ }
54
+ ]
55
+ },
56
+ "value": "S256"
57
+ },
58
+ {
59
+ "name": "client_auth_type",
60
+ "value": "public",
61
+ "_title": "Client Authentication Method",
62
+ "_type": "radio",
63
+ "_options": {
64
+ "list_options": [
65
+ {
66
+ "label": "Public",
67
+ "value": "public"
68
+ },
69
+ {
70
+ "label": "Confidential Symmetric",
71
+ "value": "confidential_symmetric"
72
+ },
73
+ {
74
+ "label": "Confidential Asymmetric",
75
+ "value": "confidential_asymmetric"
76
+ }
77
+ ]
78
+ }
79
+ },
80
+ {
81
+ "name": "standalone_client_secret",
82
+ "type": "text",
83
+ "optional": true,
84
+ "value": null
85
+ },
86
+ {
87
+ "name": "ehr_client_id",
88
+ "type": "text",
89
+ "value": "SAMPLE_PUBLIC_CLIENT_ID"
90
+ },
91
+ {
92
+ "name": "ehr_requested_scopes",
93
+ "type": "text",
94
+ "value": "launch openid fhirUser offline_access user/*.read"
95
+ },
96
+ {
97
+ "name": "ehr_client_secret",
98
+ "type": "text",
99
+ "optional": true,
100
+ "value": null
101
+ }
102
+ ]
103
+ }
@@ -0,0 +1,89 @@
1
+ {
2
+ "title": "Inferno Reference Server",
3
+ "id": "smart_stu2_2_reference_server",
4
+ "test_suite_id": "smart_stu2_2",
5
+ "inputs": [
6
+ {
7
+ "name": "url",
8
+ "type": "text",
9
+ "value": "https://inferno.healthit.gov/reference-server/r4"
10
+ },
11
+ {
12
+ "name": "standalone_client_id",
13
+ "type": "text",
14
+ "value": "SAMPLE_PUBLIC_CLIENT_ID"
15
+ },
16
+ {
17
+ "name": "standalone_requested_scopes",
18
+ "type": "text",
19
+ "value": "launch/patient openid fhirUser offline_access patient/*.read"
20
+ },
21
+ {
22
+ "name": "standalone_client_secret",
23
+ "type": "text",
24
+ "optional": true,
25
+ "value": null
26
+ },
27
+ {
28
+ "name": "ehr_client_id",
29
+ "type": "text",
30
+ "value": "SAMPLE_PUBLIC_CLIENT_ID"
31
+ },
32
+ {
33
+ "name": "ehr_requested_scopes",
34
+ "type": "text",
35
+ "value": "launch openid fhirUser offline_access user/*.read"
36
+ },
37
+ {
38
+ "name": "ehr_client_secret",
39
+ "type": "text",
40
+ "optional": true,
41
+ "value": null
42
+ },
43
+ {
44
+ "name": "client_auth_encryption_method",
45
+ "value": "ES384",
46
+ "_title": "Encryption Method (Confidential Asymmetric Client Auth Only)",
47
+ "_type": "radio",
48
+ "_options": {
49
+ "list_options": [
50
+ {
51
+ "label": "ES384",
52
+ "value": "ES384"
53
+ },
54
+ {
55
+ "label": "RS384",
56
+ "value": "RS384"
57
+ }
58
+ ]
59
+ }
60
+ },
61
+ {
62
+ "name": "client_auth_type",
63
+ "value": "public",
64
+ "_title": "Client Authentication Method",
65
+ "_type": "radio",
66
+ "_options": {
67
+ "list_options": [
68
+ {
69
+ "label": "Public",
70
+ "value": "public"
71
+ },
72
+ {
73
+ "label": "Confidential Symmetric",
74
+ "value": "confidential_symmetric"
75
+ },
76
+ {
77
+ "label": "Confidential Asymmetric",
78
+ "value": "confidential_asymmetric"
79
+ }
80
+ ]
81
+ }
82
+ },
83
+ {
84
+ "name": "backend_services_client_id",
85
+ "type": "text",
86
+ "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InJlZ2lzdHJhdGlvbi10b2tlbiJ9.eyJqd2tzX3VybCI6Imh0dHA6Ly8xMC4xNS4yNTIuNzMvaW5mZXJuby8ud2VsbC1rbm93bi9qd2tzLmpzb24iLCJhY2Nlc3NUb2tlbnNFeHBpcmVJbiI6MTUsImlhdCI6MTU5NzQxMzE5NX0.q4v4Msc74kN506KTZ0q_minyapJw0gwlT6M_uiL73S4"
87
+ }
88
+ ]
89
+ }
@@ -0,0 +1,89 @@
1
+ {
2
+ "title": "Inferno Reference Server",
3
+ "id": "smart_stu2_reference_server",
4
+ "test_suite_id": "smart_stu2",
5
+ "inputs": [
6
+ {
7
+ "name": "url",
8
+ "type": "text",
9
+ "value": "https://inferno.healthit.gov/reference-server/r4"
10
+ },
11
+ {
12
+ "name": "standalone_client_id",
13
+ "type": "text",
14
+ "value": "SAMPLE_PUBLIC_CLIENT_ID"
15
+ },
16
+ {
17
+ "name": "standalone_requested_scopes",
18
+ "type": "text",
19
+ "value": "launch/patient openid fhirUser offline_access patient/*.read"
20
+ },
21
+ {
22
+ "name": "standalone_client_secret",
23
+ "type": "text",
24
+ "optional": true,
25
+ "value": null
26
+ },
27
+ {
28
+ "name": "ehr_client_id",
29
+ "type": "text",
30
+ "value": "SAMPLE_PUBLIC_CLIENT_ID"
31
+ },
32
+ {
33
+ "name": "ehr_requested_scopes",
34
+ "type": "text",
35
+ "value": "launch openid fhirUser offline_access user/*.read"
36
+ },
37
+ {
38
+ "name": "ehr_client_secret",
39
+ "type": "text",
40
+ "optional": true,
41
+ "value": null
42
+ },
43
+ {
44
+ "name": "client_auth_encryption_method",
45
+ "value": "ES384",
46
+ "_title": "Encryption Method (Confidential Asymmetric Client Auth Only)",
47
+ "_type": "radio",
48
+ "_options": {
49
+ "list_options": [
50
+ {
51
+ "label": "ES384",
52
+ "value": "ES384"
53
+ },
54
+ {
55
+ "label": "RS384",
56
+ "value": "RS384"
57
+ }
58
+ ]
59
+ }
60
+ },
61
+ {
62
+ "name": "client_auth_type",
63
+ "value": "public",
64
+ "_title": "Client Authentication Method",
65
+ "_type": "radio",
66
+ "_options": {
67
+ "list_options": [
68
+ {
69
+ "label": "Public",
70
+ "value": "public"
71
+ },
72
+ {
73
+ "label": "Confidential Symmetric",
74
+ "value": "confidential_symmetric"
75
+ },
76
+ {
77
+ "label": "Confidential Asymmetric",
78
+ "value": "confidential_asymmetric"
79
+ }
80
+ ]
81
+ }
82
+ },
83
+ {
84
+ "name": "backend_services_client_id",
85
+ "type": "text",
86
+ "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InJlZ2lzdHJhdGlvbi10b2tlbiJ9.eyJqd2tzX3VybCI6Imh0dHA6Ly8xMC4xNS4yNTIuNzMvaW5mZXJuby8ud2VsbC1rbm93bi9qd2tzLmpzb24iLCJhY2Nlc3NUb2tlbnNFeHBpcmVJbiI6MTUsImlhdCI6MTU5NzQxMzE5NX0.q4v4Msc74kN506KTZ0q_minyapJw0gwlT6M_uiL73S4"
87
+ }
88
+ ]
89
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "title": "Inferno Example SMART Access Brands Bundle",
3
+ "id": "smart_access_brands_bundle_example_inferno",
4
+ "test_suite_id": "smart_access_brands",
5
+ "inputs": [
6
+ {
7
+ "name": "smart_access_brands_publication_url",
8
+ "value": "<%= Inferno::Application['base_url'] %>/custom/smart_access_brands/examples/smart_access_brands_example.json",
9
+ "title": "SMART Access Brands Bundle URL",
10
+ "type": "text"
11
+ }
12
+ ]
13
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "title": "Labs with Locations Nationwide IG Example SMART Access Brands Bundle",
3
+ "id": "smart_access_brands_bundle_example_1",
4
+ "test_suite_id": "smart_access_brands",
5
+ "inputs": [
6
+ {
7
+ "name": "user_access_brands_publication_url",
8
+ "value": "https://hl7.org/fhir/smart-app-launch/STU2.2/Bundle-example1.json",
9
+ "title": "User Access Brands Publication URL",
10
+ "type": "text"
11
+ },
12
+ {
13
+ "name": "endpoint_availability_success_rate",
14
+ "default": "all",
15
+ "description": "Select an option to choose how many Endpoints have to be available and send back a valid capability statement for the Endpoint validation test to pass.",
16
+ "options": {
17
+ "list_options": [
18
+ {
19
+ "label": "All",
20
+ "value": "all"
21
+ },
22
+ {
23
+ "label": "At Least 1",
24
+ "value": "at_least_1"
25
+ },
26
+ {
27
+ "label": "None",
28
+ "value": "none"
29
+ }
30
+ ]
31
+ },
32
+ "title": "Endpoint Availability Success Rate",
33
+ "type": "radio",
34
+ "value": "none"
35
+ }
36
+ ]
37
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "title": "Regional Health System IG Example SMART Access Brands Bundle",
3
+ "id": "smart_access_brands_bundle_example_2",
4
+ "test_suite_id": "smart_access_brands",
5
+ "inputs": [
6
+ {
7
+ "name": "user_access_brands_publication_url",
8
+ "value": "https://hl7.org/fhir/smart-app-launch/STU2.2/Bundle-example2.json",
9
+ "title": "User Access Brands Publication URL",
10
+ "type": "text"
11
+ },
12
+ {
13
+ "name": "endpoint_availability_success_rate",
14
+ "default": "all",
15
+ "description": "Select an option to choose how many Endpoints have to be available and send back a valid capability statement for the Endpoint validation test to pass.",
16
+ "options": {
17
+ "list_options": [
18
+ {
19
+ "label": "All",
20
+ "value": "all"
21
+ },
22
+ {
23
+ "label": "At Least 1",
24
+ "value": "at_least_1"
25
+ },
26
+ {
27
+ "label": "None",
28
+ "value": "none"
29
+ }
30
+ ]
31
+ },
32
+ "title": "Endpoint Availability Success Rate",
33
+ "type": "radio",
34
+ "value": "none"
35
+ }
36
+ ]
37
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "title": "Different EHRs IG Example SMART Access Brands Bundle",
3
+ "id": "smart_access_brands_bundle_example_3",
4
+ "test_suite_id": "smart_access_brands",
5
+ "inputs": [
6
+ {
7
+ "name": "user_access_brands_publication_url",
8
+ "value": "https://hl7.org/fhir/smart-app-launch/STU2.2/Bundle-example3.json",
9
+ "title": "User Access Brands Publication URL",
10
+ "type": "text"
11
+ },
12
+ {
13
+ "name": "endpoint_availability_success_rate",
14
+ "default": "all",
15
+ "description": "Select an option to choose how many Endpoints have to be available and send back a valid capability statement for the Endpoint validation test to pass.",
16
+ "options": {
17
+ "list_options": [
18
+ {
19
+ "label": "All",
20
+ "value": "all"
21
+ },
22
+ {
23
+ "label": "At Least 1",
24
+ "value": "at_least_1"
25
+ },
26
+ {
27
+ "label": "None",
28
+ "value": "none"
29
+ }
30
+ ]
31
+ },
32
+ "title": "Endpoint Availability Success Rate",
33
+ "type": "radio",
34
+ "value": "none"
35
+ }
36
+ ]
37
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "title": "Co-equal Brands IG Example SMART Access Brands Bundle",
3
+ "id": "smart_access_brands_bundle_example_4",
4
+ "test_suite_id": "smart_access_brands",
5
+ "inputs": [
6
+ {
7
+ "name": "user_access_brands_publication_url",
8
+ "value": "https://hl7.org/fhir/smart-app-launch/STU2.2/Bundle-example4.json",
9
+ "title": "User Access Brands Publication URL",
10
+ "type": "text"
11
+ },
12
+ {
13
+ "name": "endpoint_availability_success_rate",
14
+ "default": "all",
15
+ "description": "Select an option to choose how many Endpoints have to be available and send back a valid capability statement for the Endpoint validation test to pass.",
16
+ "options": {
17
+ "list_options": [
18
+ {
19
+ "label": "All",
20
+ "value": "all"
21
+ },
22
+ {
23
+ "label": "At Least 1",
24
+ "value": "at_least_1"
25
+ },
26
+ {
27
+ "label": "None",
28
+ "value": "none"
29
+ }
30
+ ]
31
+ },
32
+ "title": "Endpoint Availability Success Rate",
33
+ "type": "radio",
34
+ "value": "none"
35
+ }
36
+ ]
37
+ }
@@ -0,0 +1,75 @@
1
+ require_relative 'version'
2
+
3
+ module SMARTAppLaunch
4
+ class Metadata < Inferno::TestKit
5
+ id :smart_app_launch_test_kit
6
+ title 'SMART App Launch Test Kit'
7
+ description <<~DESCRIPTION
8
+ The SMART App Launch Test Kit primarily validates the conformance of an
9
+ authorization server implementation to a specified version of the [SMART
10
+ Application Launch Framework Implementation
11
+ Guide](http://hl7.org/fhir/smart-app-launch/index.html). This Test Kit also
12
+ provides Brand Bundle Publisher testing for the User-access Brands and Endpoints
13
+ specification. This Test Kit supports following versions of the SMART App
14
+ Launch IG: [STU1](https://hl7.org/fhir/smart-app-launch/1.0.0/),
15
+ [STU2](http://hl7.org/fhir/smart-app-launch/STU2/), and
16
+ [STU2.2](http://hl7.org/fhir/smart-app-launch/STU2.2/).
17
+ <!-- break -->
18
+
19
+ This Test Kit is [open
20
+ source](https://github.com/inferno-framework/smart-app-launch-test-kit#license)
21
+ and freely available for use or adoption by the health IT community including
22
+ EHR vendors, health app developers, and testing labs. It is built using the
23
+ [Inferno Framework](https://inferno-framework.github.io/inferno-core/). The
24
+ Inferno Framework is designed for reuse and aims to make it easier to build test
25
+ kits for any FHIR-based data exchange.
26
+
27
+ To run tests for a SMART App Launch authorization server, select one of the
28
+ "SMART App Launch" suites. To run tests for a Brand Bundle Publisher, select
29
+ the "SMART User-access Brands and Endpoints" suite.
30
+
31
+ ## Status
32
+
33
+ The SMART App Launch Test Kit primarily verifies that systems correctly
34
+ implement the SMART App Launch IG for providing authorization and/or
35
+ authentication services to client applications accessing HL7 FHIR APIs.
36
+
37
+ The test kit currently tests the following requirements:
38
+ - Standalone Launch
39
+ - EHR Launch
40
+
41
+ It also tests the ability of a Brand Bundle Publisher to publish a valid brand
42
+ bundle as described in the User-access Brands and Endpoints specification.
43
+
44
+ See the test descriptions within the test kit for detail on the specific
45
+ validations performed as part of testing these requirements.
46
+
47
+ ## Repository
48
+
49
+ The SMART App Launch Test Kit GitHub repository can be [found
50
+ here](https://github.com/inferno-framework/smart-app-launch-test-kit).
51
+
52
+ ## Providing Feedback and Reporting Issues
53
+
54
+ We welcome feedback on the tests, including but not limited to the following
55
+ areas:
56
+
57
+ - Validation logic, such as potential bugs, lax checks, and unexpected failures.
58
+ - Requirements coverage, such as requirements that have been missed, tests that
59
+ necessitate features that the IG does not require, or other issues with the
60
+ interpretation of the IG's requirements.
61
+ - User experience, such as confusing or missing information in the test UI.
62
+
63
+ Please report any issues with this set of tests in the [issues
64
+ section](https://github.com/inferno-framework/smart-app-launch-test-kit/issues)
65
+ of the repository.
66
+ DESCRIPTION
67
+ suite_ids [:smart, :smart_stu2, :smart_stu2_2, :smart_access_brands]
68
+ tags ['SMART App Launch', 'Endpoint Publication']
69
+ last_updated LAST_UPDATED
70
+ version VERSION
71
+ maturity 'Medium'
72
+ authors ['Stephen MacVicar']
73
+ repo 'https://github.com/inferno-framework/smart-app-launch-test-kit'
74
+ end
75
+ end
@@ -0,0 +1,198 @@
1
+ {
2
+ "resourceType" : "Bundle",
3
+ "id" : "example3",
4
+ "type" : "collection",
5
+ "timestamp" : "2023-09-05T20:23:42.723178-07:00",
6
+ "entry" : [
7
+ {
8
+ "fullUrl" : "https://examplehospital.fhirserver.org/Organization/examplehospital",
9
+ "resource" : {
10
+ "resourceType" : "Organization",
11
+ "id" : "examplehospital",
12
+ "extension" : [
13
+ {
14
+ "extension" : [
15
+ {
16
+ "url" : "brandLogo",
17
+ "valueUrl" : "https://fhirserver.org/examplehospital-ehr1/themes/custom/logo.svg"
18
+ }
19
+ ],
20
+ "url" : "http://hl7.org/fhir/StructureDefinition/organization-brand"
21
+ },
22
+ {
23
+ "extension" : [
24
+ {
25
+ "url" : "portalName",
26
+ "valueString" : "ExampleHospital Patient Gateway"
27
+ },
28
+ {
29
+ "url" : "portalUrl",
30
+ "valueUrl" : "https://patientgateway.examplehospital.ehr1.fhirserver.org"
31
+ },
32
+ {
33
+ "url" : "portalDescription",
34
+ "valueMarkdown" : "Patient Gateway is an online tool to help adult patients connect with health care providers, manage appointments, and refill prescriptions.\n"
35
+ },
36
+ {
37
+ "url" : "portalEndpoint",
38
+ "valueReference" : {
39
+ "reference" : "https://ehr1.fhirserver.com/Endpoint/examplehospital-ehr1",
40
+ "display" : "FHIR R4 Endpoint for EHR1"
41
+ }
42
+ }
43
+ ],
44
+ "url" : "http://hl7.org/fhir/StructureDefinition/organization-portal"
45
+ },
46
+ {
47
+ "extension" : [
48
+ {
49
+ "url" : "portalName",
50
+ "valueString" : "ExampleHospital Pediatric Portal"
51
+ },
52
+ {
53
+ "url" : "portalUrl",
54
+ "valueUrl" : "https://pediatrics.examplehospital.ehr2.fhirserver.org"
55
+ },
56
+ {
57
+ "url" : "portalDescription",
58
+ "valueMarkdown" : "Pediatric Portal is the entrypoint for pediatric patients."
59
+ },
60
+ {
61
+ "url" : "portalEndpoint",
62
+ "valueReference" : {
63
+ "reference" : "https://ehr2.fhirserver.com/Endpoint/examplehospital-ehr2",
64
+ "display" : "FHIR R4 Endpoint for EHR2"
65
+ }
66
+ }
67
+ ],
68
+ "url" : "http://hl7.org/fhir/StructureDefinition/organization-portal"
69
+ }
70
+ ],
71
+ "identifier" : [
72
+ {
73
+ "system" : "urn:ietf:rfc:3986",
74
+ "value" : "https://examplehospital.fhirserver.org"
75
+ }
76
+ ],
77
+ "active" : true,
78
+ "type" : [
79
+ {
80
+ "coding" : [
81
+ {
82
+ "system" : "http://terminology.hl7.org/CodeSystem/organization-type",
83
+ "code" : "prov",
84
+ "display" : "Healthcare Provider"
85
+ }
86
+ ]
87
+ }
88
+ ],
89
+ "name" : "ExampleHospital",
90
+ "alias" : [
91
+ "GoodHealth Healthcare"
92
+ ],
93
+ "telecom" : [
94
+ {
95
+ "system" : "url",
96
+ "value" : "https://examplehospital.fhirserver.org/contact"
97
+ }
98
+ ],
99
+ "address" : [
100
+ {
101
+ "city" : "Boston",
102
+ "state" : "MA"
103
+ },
104
+ {
105
+ "city" : "Newton",
106
+ "state" : "MA"
107
+ },
108
+ {
109
+ "city" : "Waltham",
110
+ "state" : "MA"
111
+ }
112
+ ],
113
+ "endpoint" : [
114
+ {
115
+ "reference" : "https://ehr1.fhirserver.com/Endpoint/examplehospital-ehr1",
116
+ "display" : "FHIR R4 Endpoint for EHR1"
117
+ },
118
+ {
119
+ "reference" : "https://ehr2.fhirserver.com/Endpoint/examplehospital-ehr2",
120
+ "display" : "FHIR R4 Endpoint for EHR2"
121
+ }
122
+ ]
123
+ }
124
+ },
125
+ {
126
+ "fullUrl" : "https://ehr1.fhirserver.com/Endpoint/examplehospital-ehr1",
127
+ "resource" : {
128
+ "resourceType" : "Endpoint",
129
+ "id" : "examplehospital-ehr1",
130
+ "extension" : [
131
+ {
132
+ "url" : "http://hl7.org/fhir/StructureDefinition/endpoint-fhir-version",
133
+ "valueCode" : "4.0.1"
134
+ }
135
+ ],
136
+ "status" : "active",
137
+ "connectionType" : {
138
+ "system" : "http://terminology.hl7.org/CodeSystem/endpoint-connection-type",
139
+ "code" : "hl7-fhir-rest"
140
+ },
141
+ "name" : "FHIR R4 Endpoint for ExampleHospital's EHR1 Patient Gateway",
142
+ "contact" : [
143
+ {
144
+ "system" : "url",
145
+ "value" : "https://open.ehr1.fhirserver.com"
146
+ }
147
+ ],
148
+ "payloadType" : [
149
+ {
150
+ "coding" : [
151
+ {
152
+ "system" : "http://terminology.hl7.org/CodeSystem/endpoint-payload-type",
153
+ "code" : "none"
154
+ }
155
+ ]
156
+ }
157
+ ],
158
+ "address" : "<%= Inferno::Application['base_url'] %>/custom/smart_access_brands/examples/r4_capability_statement"
159
+ }
160
+ },
161
+ {
162
+ "fullUrl" : "https://ehr2.fhirserver.com/Endpoint/examplehospital-ehr2",
163
+ "resource" : {
164
+ "resourceType" : "Endpoint",
165
+ "id" : "examplehospital-ehr2",
166
+ "extension" : [
167
+ {
168
+ "url" : "http://hl7.org/fhir/StructureDefinition/endpoint-fhir-version",
169
+ "valueCode" : "4.0.1"
170
+ }
171
+ ],
172
+ "status" : "active",
173
+ "connectionType" : {
174
+ "system" : "http://terminology.hl7.org/CodeSystem/endpoint-connection-type",
175
+ "code" : "hl7-fhir-rest"
176
+ },
177
+ "name" : "FHIR R4 Endpoint for ExampleHospital's EHR2 Pediatric Portal",
178
+ "contact" : [
179
+ {
180
+ "system" : "url",
181
+ "value" : "https://open.ehr2.fhirserver.com"
182
+ }
183
+ ],
184
+ "payloadType" : [
185
+ {
186
+ "coding" : [
187
+ {
188
+ "system" : "http://terminology.hl7.org/CodeSystem/endpoint-payload-type",
189
+ "code" : "none"
190
+ }
191
+ ]
192
+ }
193
+ ],
194
+ "address" : "<%= Inferno::Application['base_url'] %>/custom/smart_access_brands/examples/r4_capability_statement"
195
+ }
196
+ }
197
+ ]
198
+ }
@@ -5,7 +5,6 @@ module SMARTAppLaunch
5
5
  id 'smart_access_brands'
6
6
  title 'SMART User-access Brands and Endpoints STU2.2'
7
7
  short_title 'SMART User-access Brands'
8
- version VERSION
9
8
 
10
9
  description <<~DESCRIPTION
11
10
  The SMART User-access Brands Test Suite verifies that Brand Bundle Publishers publish valid User-access
@@ -34,6 +33,10 @@ module SMARTAppLaunch
34
33
  Bundle as an input and leaving the User Access Brand Publication URL input blank.
35
34
  INSTRUCTIONS
36
35
 
36
+ source_code_url('https://github.com/inferno-framework/smart-app-launch-test-kit')
37
+ download_url('https://github.com/inferno-framework/smart-app-launch-test-kit/releases')
38
+ report_issue_url('https://github.com/inferno-framework/smart-app-launch-test-kit/issues')
39
+
37
40
  VALIDATION_MESSAGE_FILTERS = [
38
41
  /\A\S+: \S+: URL value '.*' does not resolve/,
39
42
  %r{\A\S+: \S+: Bundled or contained reference not found within the bundle/resource} # Validator issue with Brand profile: https://chat.fhir.org/#narrow/stream/291844-FHIR-Validator/topic/SMART.20v2.2E2.20User.20Access.20Brands.3A.20Brand.20validation.20error.3F/near/466321024
@@ -1,7 +1,6 @@
1
1
  require 'tls_test_kit'
2
2
 
3
3
  require_relative 'jwks'
4
- require_relative 'version'
5
4
  require_relative 'discovery_stu1_group'
6
5
  require_relative 'standalone_launch_group'
7
6
  require_relative 'ehr_launch_group'
@@ -12,7 +11,6 @@ module SMARTAppLaunch
12
11
  class SMARTSTU1Suite < Inferno::TestSuite
13
12
  id 'smart'
14
13
  title 'SMART App Launch STU1'
15
- version VERSION
16
14
 
17
15
  resume_test_route :get, '/launch' do |request|
18
16
  request.query_parameters['iss']
@@ -34,15 +32,18 @@ module SMARTAppLaunch
34
32
  }
35
33
 
36
34
  description <<~DESCRIPTION
37
- The SMART App Launch Test Suite verifies that systems correctly implement
38
- the [SMART App Launch IG](http://hl7.org/fhir/smart-app-launch/1.0.0/)
39
- for providing authorization and/or authentication services to client
40
- applications accessing HL7® FHIR® APIs. To get started, please first register
35
+ The SMART App Launch Test Suite verifies that systems correctly implement
36
+ the [SMART App Launch IG](http://hl7.org/fhir/smart-app-launch/1.0.0/)
37
+ for providing authorization and/or authentication services to client
38
+ applications accessing HL7® FHIR® APIs. To get started, please first register
41
39
  the Inferno client as a SMART App with the following information:
42
40
 
43
41
  * SMART Launch URI: `#{config.options[:launch_uri]}`
44
42
  * OAuth Redirect URI: `#{config.options[:redirect_uri]}`
45
43
  DESCRIPTION
44
+ source_code_url('https://github.com/inferno-framework/smart-app-launch-test-kit')
45
+ download_url('https://github.com/inferno-framework/smart-app-launch-test-kit/releases')
46
+ report_issue_url('https://github.com/inferno-framework/smart-app-launch-test-kit/issues')
46
47
 
47
48
  group do
48
49
  title 'Standalone Launch'
@@ -1,7 +1,6 @@
1
1
  require 'tls_test_kit'
2
2
 
3
3
  require_relative 'jwks'
4
- require_relative 'version'
5
4
  require_relative 'discovery_stu2_2_group'
6
5
  require_relative 'standalone_launch_group_stu2_2'
7
6
  require_relative 'ehr_launch_group_stu2_2'
@@ -13,7 +12,6 @@ module SMARTAppLaunch
13
12
  class SMARTSTU22Suite < Inferno::TestSuite
14
13
  id 'smart_stu2_2'
15
14
  title 'SMART App Launch STU2.2'
16
- version VERSION
17
15
 
18
16
  resume_test_route :get, '/launch' do |request|
19
17
  request.query_parameters['iss']
@@ -72,6 +70,9 @@ module SMARTAppLaunch
72
70
  If the token introspection endpoint of the system under test is NOT available at .well-known/smart-configuration,
73
71
  please run the test groups individually and group 3 Token Introspection will include the introspection endpoint as a manual input.
74
72
  )
73
+ source_code_url('https://github.com/inferno-framework/smart-app-launch-test-kit')
74
+ download_url('https://github.com/inferno-framework/smart-app-launch-test-kit/releases')
75
+ report_issue_url('https://github.com/inferno-framework/smart-app-launch-test-kit/issues')
75
76
 
76
77
  group do
77
78
  title 'Standalone Launch'
@@ -1,7 +1,6 @@
1
1
  require 'tls_test_kit'
2
2
 
3
3
  require_relative 'jwks'
4
- require_relative 'version'
5
4
  require_relative 'discovery_stu2_group'
6
5
  require_relative 'standalone_launch_group_stu2'
7
6
  require_relative 'ehr_launch_group_stu2'
@@ -14,7 +13,6 @@ module SMARTAppLaunch
14
13
  class SMARTSTU2Suite < Inferno::TestSuite
15
14
  id 'smart_stu2'
16
15
  title 'SMART App Launch STU2'
17
- version VERSION
18
16
 
19
17
  resume_test_route :get, '/launch' do |request|
20
18
  request.query_parameters['iss']
@@ -42,10 +40,10 @@ module SMARTAppLaunch
42
40
  }
43
41
 
44
42
  description <<~DESCRIPTION
45
- The SMART App Launch Test Suite verifies that systems correctly implement
46
- the [SMART App Launch IG](http://hl7.org/fhir/smart-app-launch/STU2/)
47
- for providing authorization and/or authentication services to client
48
- applications accessing HL7® FHIR® APIs. To get started, please first register
43
+ The SMART App Launch Test Suite verifies that systems correctly implement
44
+ the [SMART App Launch IG](http://hl7.org/fhir/smart-app-launch/STU2/)
45
+ for providing authorization and/or authentication services to client
46
+ applications accessing HL7® FHIR® APIs. To get started, please first register
49
47
  the Inferno client as a SMART App with the following information:
50
48
 
51
49
  * SMART Launch URI: `#{config.options[:launch_uri]}`
@@ -59,17 +57,20 @@ module SMARTAppLaunch
59
57
 
60
58
  input_instructions %(
61
59
  When running tests at this level, the token introspection endpoint is not available as a manual input.
62
- Instead, group 3 Token Introspection will assume the token introspection endpoint
60
+ Instead, group 3 Token Introspection will assume the token introspection endpoint
63
61
  will be output from group 1 Standalone Launch tests, specifically the SMART On FHIR Discovery tests that query
64
62
  the .well-known/smart-configuration endpoint. However, including the token introspection
65
63
  endpoint as part of the well-known ouput is NOT required and is not formally checked in the SMART On FHIR Discovery
66
64
  tests. RFC-7662 on Token Introspection says that "The means by which the protected resource discovers the location of the introspection
67
65
  endpoint are outside the scope of this specification" and the Token Introspection IG does not add any further
68
- requirements to this.
66
+ requirements to this.
69
67
 
70
- If the token introspection endpoint of the system under test is NOT available at .well-known/smart-configuration,
71
- please run the test groups individually and group 3 Token Introspection will include the introspection endpoint as a manual input.
68
+ If the token introspection endpoint of the system under test is NOT available at .well-known/smart-configuration,
69
+ please run the test groups individually and group 3 Token Introspection will include the introspection endpoint as a manual input.
72
70
  )
71
+ source_code_url('https://github.com/inferno-framework/smart-app-launch-test-kit')
72
+ download_url('https://github.com/inferno-framework/smart-app-launch-test-kit/releases')
73
+ report_issue_url('https://github.com/inferno-framework/smart-app-launch-test-kit/issues')
73
74
 
74
75
  group do
75
76
  title 'Standalone Launch'
@@ -1,3 +1,4 @@
1
1
  module SMARTAppLaunch
2
- VERSION = '0.4.6'.freeze
2
+ VERSION = '0.5.0'.freeze
3
+ LAST_UPDATED = '2025-02-10'.freeze # TODO: update next release
3
4
  end
@@ -1,5 +1,6 @@
1
1
  require 'tls_test_kit'
2
2
 
3
+ require_relative 'smart_app_launch/metadata'
3
4
  require_relative 'smart_app_launch/smart_stu1_suite'
4
5
  require_relative 'smart_app_launch/smart_stu2_suite'
5
6
  require_relative 'smart_app_launch/smart_stu2_2_suite'
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.4.6
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen MacVicar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-10-31 00:00:00.000000000 Z
11
+ date: 2025-02-10 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.4.2
19
+ version: 0.6.2
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.4.2
26
+ version: 0.6.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: json-jwt
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.2.0
61
+ version: 0.3.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.2.0
68
+ version: 0.3.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: database_cleaner-sequel
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -145,6 +145,14 @@ extensions: []
145
145
  extra_rdoc_files: []
146
146
  files:
147
147
  - LICENSE
148
+ - config/presets/inferno_reference_server_preset.json
149
+ - config/presets/inferno_reference_server_stu2_2_preset.json
150
+ - config/presets/inferno_reference_server_stu2_preset.json
151
+ - config/presets/smart_access_brands.json.erb
152
+ - config/presets/smart_access_brands_example_1.json
153
+ - config/presets/smart_access_brands_example_2.json
154
+ - config/presets/smart_access_brands_example_3.json
155
+ - config/presets/smart_access_brands_example_4.json
148
156
  - lib/smart_app_launch/app_launch_test.rb
149
157
  - lib/smart_app_launch/app_redirect_test.rb
150
158
  - lib/smart_app_launch/app_redirect_test_stu2.rb
@@ -169,6 +177,7 @@ files:
169
177
  - lib/smart_app_launch/ehr_launch_group_stu2_2.rb
170
178
  - lib/smart_app_launch/jwks.rb
171
179
  - lib/smart_app_launch/launch_received_test.rb
180
+ - lib/smart_app_launch/metadata.rb
172
181
  - lib/smart_app_launch/openid_connect_group.rb
173
182
  - lib/smart_app_launch/openid_connect_group_stu2_2.rb
174
183
  - lib/smart_app_launch/openid_decode_id_token_test.rb
@@ -180,6 +189,7 @@ files:
180
189
  - lib/smart_app_launch/openid_token_payload_test.rb
181
190
  - lib/smart_app_launch/post_auth.html
182
191
  - lib/smart_app_launch/smart_access_brands_examples/r4_capability_statement.json
192
+ - lib/smart_app_launch/smart_access_brands_examples/smart_access_brands_example.json.erb
183
193
  - lib/smart_app_launch/smart_access_brands_group.rb
184
194
  - lib/smart_app_launch/smart_access_brands_retrieval_group.rb
185
195
  - lib/smart_app_launch/smart_access_brands_retrieve_bundle_test.rb
@@ -224,6 +234,7 @@ homepage: https://github.com/inferno-framework/smart-app-launch-test-kit
224
234
  licenses:
225
235
  - Apache-2.0
226
236
  metadata:
237
+ inferno_test_kit: 'true'
227
238
  homepage_uri: https://github.com/inferno-framework/smart-app-launch-test-kit
228
239
  source_code_uri: https://github.com/inferno-framework/smart-app-launch-test-kit
229
240
  post_install_message:
@@ -234,14 +245,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
234
245
  requirements:
235
246
  - - ">="
236
247
  - !ruby/object:Gem::Version
237
- version: 3.1.2
248
+ version: 3.3.6
238
249
  required_rubygems_version: !ruby/object:Gem::Requirement
239
250
  requirements:
240
251
  - - ">="
241
252
  - !ruby/object:Gem::Version
242
253
  version: '0'
243
254
  requirements: []
244
- rubygems_version: 3.5.7
255
+ rubygems_version: 3.5.22
245
256
  signing_key:
246
257
  specification_version: 4
247
258
  summary: Inferno Tests for the SMART Application Launch Framework Implementation Guide