onc_certification_g10_test_kit 7.0.3 → 7.2.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/config/presets/g10_reference_server_preset.json +1467 -0
- data/lib/inferno/ext/bloomer.rb +1 -1
- data/lib/inferno/terminology/tasks/process_umls.rb +1 -1
- data/lib/onc_certification_g10_test_kit/bulk_data_authorization.rb +73 -67
- data/lib/onc_certification_g10_test_kit/bulk_data_group_export_cancel_stu1.rb +1 -2
- data/lib/onc_certification_g10_test_kit/bulk_data_group_export_cancel_stu2.rb +7 -1
- data/lib/onc_certification_g10_test_kit/bulk_data_group_export_parameters.rb +1 -1
- data/lib/onc_certification_g10_test_kit/bulk_data_group_export_stu1.rb +10 -2
- data/lib/onc_certification_g10_test_kit/bulk_data_group_export_validation.rb +6 -2
- data/lib/onc_certification_g10_test_kit/bulk_export_validation_tester.rb +7 -3
- data/lib/onc_certification_g10_test_kit/configuration_checker.rb +5 -13
- data/lib/onc_certification_g10_test_kit/encounter_context_test.rb +3 -3
- data/lib/onc_certification_g10_test_kit/export_kick_off_performer.rb +7 -3
- data/lib/onc_certification_g10_test_kit/feature.rb +5 -4
- data/lib/onc_certification_g10_test_kit/igs/01-us-core-v400.tgz +0 -0
- data/lib/onc_certification_g10_test_kit/igs/03-us-core-v311.tgz +0 -0
- data/lib/onc_certification_g10_test_kit/igs/04-us-core-610.tgz +0 -0
- data/lib/onc_certification_g10_test_kit/metadata.rb +103 -0
- data/lib/onc_certification_g10_test_kit/multi_patient_api_stu1.rb +0 -4
- data/lib/onc_certification_g10_test_kit/multi_patient_api_stu2.rb +8 -4
- data/lib/onc_certification_g10_test_kit/patient_context_test.rb +3 -3
- data/lib/onc_certification_g10_test_kit/patient_scope_test.rb +1 -1
- data/lib/onc_certification_g10_test_kit/restricted_resource_type_access_group.rb +3 -10
- data/lib/onc_certification_g10_test_kit/scope_constants.rb +52 -0
- data/lib/onc_certification_g10_test_kit/short_id_map.yml +11 -20
- data/lib/onc_certification_g10_test_kit/single_patient_api_group.rb +18 -17
- data/lib/onc_certification_g10_test_kit/single_patient_us_core_4_api_group.rb +18 -17
- data/lib/onc_certification_g10_test_kit/single_patient_us_core_5_api_group.rb +18 -17
- data/lib/onc_certification_g10_test_kit/single_patient_us_core_6_api_group.rb +20 -19
- data/lib/onc_certification_g10_test_kit/single_patient_us_core_7_api_group.rb +20 -19
- data/lib/onc_certification_g10_test_kit/smart_app_launch_invalid_aud_group.rb +108 -65
- data/lib/onc_certification_g10_test_kit/smart_asymmetric_launch_group.rb +42 -89
- data/lib/onc_certification_g10_test_kit/smart_ehr_patient_launch_group.rb +33 -43
- data/lib/onc_certification_g10_test_kit/smart_ehr_patient_launch_group_stu2.rb +32 -54
- data/lib/onc_certification_g10_test_kit/smart_ehr_patient_launch_group_stu2_2.rb +34 -55
- data/lib/onc_certification_g10_test_kit/smart_ehr_practitioner_app_group.rb +103 -146
- data/lib/onc_certification_g10_test_kit/smart_fine_grained_scopes_group.rb +17 -55
- data/lib/onc_certification_g10_test_kit/smart_fine_grained_scopes_group_stu2_2.rb +17 -55
- data/lib/onc_certification_g10_test_kit/smart_fine_grained_scopes_us_core_7_group.rb +17 -55
- data/lib/onc_certification_g10_test_kit/smart_fine_grained_scopes_us_core_7_group_stu2_2.rb +17 -55
- data/lib/onc_certification_g10_test_kit/smart_granular_scope_selection_group.rb +33 -68
- data/lib/onc_certification_g10_test_kit/smart_granular_scope_selection_test.rb +4 -3
- data/lib/onc_certification_g10_test_kit/smart_invalid_pkce_group.rb +45 -89
- data/lib/onc_certification_g10_test_kit/smart_invalid_token_group.rb +45 -89
- data/lib/onc_certification_g10_test_kit/smart_invalid_token_group_stu2.rb +53 -91
- data/lib/onc_certification_g10_test_kit/smart_invalid_token_refresh_test.rb +9 -6
- data/lib/onc_certification_g10_test_kit/smart_limited_app_group.rb +86 -278
- data/lib/onc_certification_g10_test_kit/smart_public_standalone_launch_group.rb +32 -59
- data/lib/onc_certification_g10_test_kit/smart_public_standalone_launch_group_stu2.rb +36 -75
- data/lib/onc_certification_g10_test_kit/smart_public_standalone_launch_group_stu2_2.rb +36 -75
- data/lib/onc_certification_g10_test_kit/smart_scopes_test.rb +6 -1
- data/lib/onc_certification_g10_test_kit/smart_standalone_patient_app_group.rb +90 -118
- data/lib/onc_certification_g10_test_kit/smart_v1_scopes_group.rb +62 -116
- data/lib/onc_certification_g10_test_kit/tasks/generate_matrix.rb +3 -12
- data/lib/onc_certification_g10_test_kit/token_introspection_group.rb +12 -25
- data/lib/onc_certification_g10_test_kit/token_introspection_group_stu2_2.rb +12 -14
- data/lib/onc_certification_g10_test_kit/token_revocation_group.rb +44 -33
- data/lib/onc_certification_g10_test_kit/unrestricted_resource_type_access_group.rb +3 -3
- data/lib/onc_certification_g10_test_kit/urls.rb +4 -0
- data/lib/onc_certification_g10_test_kit/version.rb +2 -1
- data/lib/onc_certification_g10_test_kit.rb +119 -65
- metadata +20 -68
@@ -6,7 +6,7 @@ module ONCCertificationG10TestKit
|
|
6
6
|
input_instructions %(
|
7
7
|
If necessary, register Inferno as a standalone application using the following information:
|
8
8
|
|
9
|
-
* Redirect URI: `#{
|
9
|
+
* Redirect URI: `#{REDIRECT_URI}`
|
10
10
|
|
11
11
|
Inferno may be registered multiple times with different `client_ids`, or this
|
12
12
|
may reuse a single registration of Inferno.`
|
@@ -92,6 +92,22 @@ module ONCCertificationG10TestKit
|
|
92
92
|
|
93
93
|
input :url
|
94
94
|
|
95
|
+
config(
|
96
|
+
inputs: {
|
97
|
+
smart_auth_info: {
|
98
|
+
options: {
|
99
|
+
components: [
|
100
|
+
Inferno::DSL::AuthInfo.default_auth_type_component_without_backend_services,
|
101
|
+
{
|
102
|
+
name: :jwks,
|
103
|
+
locked: true
|
104
|
+
}
|
105
|
+
]
|
106
|
+
}
|
107
|
+
}
|
108
|
+
}
|
109
|
+
)
|
110
|
+
|
95
111
|
children.each(&:run_as_group)
|
96
112
|
|
97
113
|
# Replace generic finer-grained scope auth group with which allows standalone or
|
@@ -125,64 +141,10 @@ module ONCCertificationG10TestKit
|
|
125
141
|
|
126
142
|
config(
|
127
143
|
inputs: {
|
128
|
-
authorization_method: {
|
129
|
-
name: :granular_scopes_authorization_method,
|
130
|
-
title: 'Granular Scopes Authorization Request Method'
|
131
|
-
},
|
132
|
-
client_auth_type: {
|
133
|
-
name: :granular_scopes_client_auth_type,
|
134
|
-
title: 'Granular Scopes Client Authentication Type'
|
135
|
-
},
|
136
144
|
received_scopes: {
|
137
145
|
name: :standalone_received_scopes
|
138
146
|
}
|
139
147
|
}
|
140
148
|
)
|
141
|
-
|
142
|
-
granular_scopes_group1.config(
|
143
|
-
inputs: {
|
144
|
-
client_id: {
|
145
|
-
name: :granular_scopes1_client_id,
|
146
|
-
title: 'Granular Scopes Group 1 Client ID'
|
147
|
-
},
|
148
|
-
client_secret: {
|
149
|
-
name: :granular_scopes1_client_secret,
|
150
|
-
title: 'Granular Scopes Group 1 Client Secret'
|
151
|
-
},
|
152
|
-
requested_scopes: {
|
153
|
-
title: 'Granular Scopes Group 1 Scopes'
|
154
|
-
}
|
155
|
-
}
|
156
|
-
)
|
157
|
-
|
158
|
-
granular_scopes_group2.config(
|
159
|
-
inputs: {
|
160
|
-
client_id: {
|
161
|
-
name: :granular_scopes2_client_id,
|
162
|
-
title: 'Granular Scopes Group 2 Client ID'
|
163
|
-
},
|
164
|
-
client_secret: {
|
165
|
-
name: :granular_scopes2_client_secret,
|
166
|
-
title: 'Granular Scopes Group 2 Client Secret'
|
167
|
-
},
|
168
|
-
requested_scopes: {
|
169
|
-
title: 'Granular Scopes Group 2 Scopes'
|
170
|
-
}
|
171
|
-
}
|
172
|
-
)
|
173
|
-
|
174
|
-
input_order :url,
|
175
|
-
:granular_scopes1_client_id,
|
176
|
-
:requested_scopes_group1,
|
177
|
-
:granular_scopes_authorization_method,
|
178
|
-
:granular_scopes_client_auth_type,
|
179
|
-
:granular_scopes1_client_secret,
|
180
|
-
:client_auth_encryption_method,
|
181
|
-
:granular_scopes2_client_id,
|
182
|
-
:requested_scopes_group2,
|
183
|
-
:granular_scopes2_client_secret,
|
184
|
-
:use_pkce,
|
185
|
-
:pkce_code_challenge_method,
|
186
|
-
:patient_ids
|
187
149
|
end
|
188
150
|
end
|
@@ -6,7 +6,7 @@ module ONCCertificationG10TestKit
|
|
6
6
|
input_instructions %(
|
7
7
|
If necessary, register Inferno as a standalone application using the following information:
|
8
8
|
|
9
|
-
* Redirect URI: `#{
|
9
|
+
* Redirect URI: `#{REDIRECT_URI}`
|
10
10
|
|
11
11
|
Inferno may be registered multiple times with different `client_ids`, or this
|
12
12
|
may reuse a single registration of Inferno.`
|
@@ -92,6 +92,22 @@ module ONCCertificationG10TestKit
|
|
92
92
|
|
93
93
|
input :url
|
94
94
|
|
95
|
+
config(
|
96
|
+
inputs: {
|
97
|
+
smart_auth_info: {
|
98
|
+
options: {
|
99
|
+
components: [
|
100
|
+
Inferno::DSL::AuthInfo.default_auth_type_component_without_backend_services,
|
101
|
+
{
|
102
|
+
name: :jwks,
|
103
|
+
locked: true
|
104
|
+
}
|
105
|
+
]
|
106
|
+
}
|
107
|
+
}
|
108
|
+
}
|
109
|
+
)
|
110
|
+
|
95
111
|
children.each(&:run_as_group)
|
96
112
|
|
97
113
|
# Replace generic finer-grained scope auth group with which allows standalone or
|
@@ -125,64 +141,10 @@ module ONCCertificationG10TestKit
|
|
125
141
|
|
126
142
|
config(
|
127
143
|
inputs: {
|
128
|
-
authorization_method: {
|
129
|
-
name: :granular_scopes_authorization_method,
|
130
|
-
title: 'Granular Scopes Authorization Request Method'
|
131
|
-
},
|
132
|
-
client_auth_type: {
|
133
|
-
name: :granular_scopes_client_auth_type,
|
134
|
-
title: 'Granular Scopes Client Authentication Type'
|
135
|
-
},
|
136
144
|
received_scopes: {
|
137
145
|
name: :standalone_received_scopes
|
138
146
|
}
|
139
147
|
}
|
140
148
|
)
|
141
|
-
|
142
|
-
granular_scopes_group1.config(
|
143
|
-
inputs: {
|
144
|
-
client_id: {
|
145
|
-
name: :granular_scopes1_client_id,
|
146
|
-
title: 'Granular Scopes Group 1 Client ID'
|
147
|
-
},
|
148
|
-
client_secret: {
|
149
|
-
name: :granular_scopes1_client_secret,
|
150
|
-
title: 'Granular Scopes Group 1 Client Secret'
|
151
|
-
},
|
152
|
-
requested_scopes: {
|
153
|
-
title: 'Granular Scopes Group 1 Scopes'
|
154
|
-
}
|
155
|
-
}
|
156
|
-
)
|
157
|
-
|
158
|
-
granular_scopes_group2.config(
|
159
|
-
inputs: {
|
160
|
-
client_id: {
|
161
|
-
name: :granular_scopes2_client_id,
|
162
|
-
title: 'Granular Scopes Group 2 Client ID'
|
163
|
-
},
|
164
|
-
client_secret: {
|
165
|
-
name: :granular_scopes2_client_secret,
|
166
|
-
title: 'Granular Scopes Group 2 Client Secret'
|
167
|
-
},
|
168
|
-
requested_scopes: {
|
169
|
-
title: 'Granular Scopes Group 2 Scopes'
|
170
|
-
}
|
171
|
-
}
|
172
|
-
)
|
173
|
-
|
174
|
-
input_order :url,
|
175
|
-
:granular_scopes1_client_id,
|
176
|
-
:requested_scopes_group1,
|
177
|
-
:granular_scopes_authorization_method,
|
178
|
-
:granular_scopes_client_auth_type,
|
179
|
-
:granular_scopes1_client_secret,
|
180
|
-
:client_auth_encryption_method,
|
181
|
-
:granular_scopes2_client_id,
|
182
|
-
:requested_scopes_group2,
|
183
|
-
:granular_scopes2_client_secret,
|
184
|
-
:use_pkce,
|
185
|
-
:pkce_code_challenge_method,
|
186
|
-
:patient_ids
|
187
149
|
end
|
188
150
|
end
|
@@ -6,7 +6,7 @@ module ONCCertificationG10TestKit
|
|
6
6
|
input_instructions %(
|
7
7
|
If necessary, register Inferno as a standalone application using the following information:
|
8
8
|
|
9
|
-
* Redirect URI: `#{
|
9
|
+
* Redirect URI: `#{REDIRECT_URI}`
|
10
10
|
|
11
11
|
Inferno may be registered multiple times with different `client_ids`, or this
|
12
12
|
may reuse a single registration of Inferno.`
|
@@ -92,6 +92,22 @@ module ONCCertificationG10TestKit
|
|
92
92
|
|
93
93
|
input :url
|
94
94
|
|
95
|
+
config(
|
96
|
+
inputs: {
|
97
|
+
smart_auth_info: {
|
98
|
+
options: {
|
99
|
+
components: [
|
100
|
+
Inferno::DSL::AuthInfo.default_auth_type_component_without_backend_services,
|
101
|
+
{
|
102
|
+
name: :jwks,
|
103
|
+
locked: true
|
104
|
+
}
|
105
|
+
]
|
106
|
+
}
|
107
|
+
}
|
108
|
+
}
|
109
|
+
)
|
110
|
+
|
95
111
|
children.each(&:run_as_group)
|
96
112
|
|
97
113
|
# Replace generic finer-grained scope auth group with which allows standalone or
|
@@ -125,64 +141,10 @@ module ONCCertificationG10TestKit
|
|
125
141
|
|
126
142
|
config(
|
127
143
|
inputs: {
|
128
|
-
authorization_method: {
|
129
|
-
name: :granular_scopes_authorization_method,
|
130
|
-
title: 'Granular Scopes Authorization Request Method'
|
131
|
-
},
|
132
|
-
client_auth_type: {
|
133
|
-
name: :granular_scopes_client_auth_type,
|
134
|
-
title: 'Granular Scopes Client Authentication Type'
|
135
|
-
},
|
136
144
|
received_scopes: {
|
137
145
|
name: :standalone_received_scopes
|
138
146
|
}
|
139
147
|
}
|
140
148
|
)
|
141
|
-
|
142
|
-
granular_scopes_group1.config(
|
143
|
-
inputs: {
|
144
|
-
client_id: {
|
145
|
-
name: :granular_scopes1_client_id,
|
146
|
-
title: 'Granular Scopes Group 1 Client ID'
|
147
|
-
},
|
148
|
-
client_secret: {
|
149
|
-
name: :granular_scopes1_client_secret,
|
150
|
-
title: 'Granular Scopes Group 1 Client Secret'
|
151
|
-
},
|
152
|
-
requested_scopes: {
|
153
|
-
title: 'Granular Scopes Group 1 Scopes'
|
154
|
-
}
|
155
|
-
}
|
156
|
-
)
|
157
|
-
|
158
|
-
granular_scopes_group2.config(
|
159
|
-
inputs: {
|
160
|
-
client_id: {
|
161
|
-
name: :granular_scopes2_client_id,
|
162
|
-
title: 'Granular Scopes Group 2 Client ID'
|
163
|
-
},
|
164
|
-
client_secret: {
|
165
|
-
name: :granular_scopes2_client_secret,
|
166
|
-
title: 'Granular Scopes Group 2 Client Secret'
|
167
|
-
},
|
168
|
-
requested_scopes: {
|
169
|
-
title: 'Granular Scopes Group 2 Scopes'
|
170
|
-
}
|
171
|
-
}
|
172
|
-
)
|
173
|
-
|
174
|
-
input_order :url,
|
175
|
-
:granular_scopes1_client_id,
|
176
|
-
:requested_scopes_group1,
|
177
|
-
:granular_scopes_authorization_method,
|
178
|
-
:granular_scopes_client_auth_type,
|
179
|
-
:granular_scopes1_client_secret,
|
180
|
-
:client_auth_encryption_method,
|
181
|
-
:granular_scopes2_client_id,
|
182
|
-
:requested_scopes_group2,
|
183
|
-
:granular_scopes2_client_secret,
|
184
|
-
:use_pkce,
|
185
|
-
:pkce_code_challenge_method,
|
186
|
-
:patient_ids
|
187
149
|
end
|
188
150
|
end
|
@@ -6,7 +6,7 @@ module ONCCertificationG10TestKit
|
|
6
6
|
input_instructions %(
|
7
7
|
If necessary, register Inferno as a standalone application using the following information:
|
8
8
|
|
9
|
-
* Redirect URI: `#{
|
9
|
+
* Redirect URI: `#{REDIRECT_URI}`
|
10
10
|
|
11
11
|
Inferno may be registered multiple times with different `client_ids`, or this
|
12
12
|
may reuse a single registration of Inferno.`
|
@@ -92,6 +92,22 @@ module ONCCertificationG10TestKit
|
|
92
92
|
|
93
93
|
input :url
|
94
94
|
|
95
|
+
config(
|
96
|
+
inputs: {
|
97
|
+
smart_auth_info: {
|
98
|
+
options: {
|
99
|
+
components: [
|
100
|
+
Inferno::DSL::AuthInfo.default_auth_type_component_without_backend_services,
|
101
|
+
{
|
102
|
+
name: :jwks,
|
103
|
+
locked: true
|
104
|
+
}
|
105
|
+
]
|
106
|
+
}
|
107
|
+
}
|
108
|
+
}
|
109
|
+
)
|
110
|
+
|
95
111
|
children.each(&:run_as_group)
|
96
112
|
|
97
113
|
# Replace generic finer-grained scope auth group with which allows standalone or
|
@@ -125,64 +141,10 @@ module ONCCertificationG10TestKit
|
|
125
141
|
|
126
142
|
config(
|
127
143
|
inputs: {
|
128
|
-
authorization_method: {
|
129
|
-
name: :granular_scopes_authorization_method,
|
130
|
-
title: 'Granular Scopes Authorization Request Method'
|
131
|
-
},
|
132
|
-
client_auth_type: {
|
133
|
-
name: :granular_scopes_client_auth_type,
|
134
|
-
title: 'Granular Scopes Client Authentication Type'
|
135
|
-
},
|
136
144
|
received_scopes: {
|
137
145
|
name: :standalone_received_scopes
|
138
146
|
}
|
139
147
|
}
|
140
148
|
)
|
141
|
-
|
142
|
-
granular_scopes_group1.config(
|
143
|
-
inputs: {
|
144
|
-
client_id: {
|
145
|
-
name: :granular_scopes1_client_id,
|
146
|
-
title: 'Granular Scopes Group 1 Client ID'
|
147
|
-
},
|
148
|
-
client_secret: {
|
149
|
-
name: :granular_scopes1_client_secret,
|
150
|
-
title: 'Granular Scopes Group 1 Client Secret'
|
151
|
-
},
|
152
|
-
requested_scopes: {
|
153
|
-
title: 'Granular Scopes Group 1 Scopes'
|
154
|
-
}
|
155
|
-
}
|
156
|
-
)
|
157
|
-
|
158
|
-
granular_scopes_group2.config(
|
159
|
-
inputs: {
|
160
|
-
client_id: {
|
161
|
-
name: :granular_scopes2_client_id,
|
162
|
-
title: 'Granular Scopes Group 2 Client ID'
|
163
|
-
},
|
164
|
-
client_secret: {
|
165
|
-
name: :granular_scopes2_client_secret,
|
166
|
-
title: 'Granular Scopes Group 2 Client Secret'
|
167
|
-
},
|
168
|
-
requested_scopes: {
|
169
|
-
title: 'Granular Scopes Group 2 Scopes'
|
170
|
-
}
|
171
|
-
}
|
172
|
-
)
|
173
|
-
|
174
|
-
input_order :url,
|
175
|
-
:granular_scopes1_client_id,
|
176
|
-
:requested_scopes_group1,
|
177
|
-
:granular_scopes_authorization_method,
|
178
|
-
:granular_scopes_client_auth_type,
|
179
|
-
:granular_scopes1_client_secret,
|
180
|
-
:client_auth_encryption_method,
|
181
|
-
:granular_scopes2_client_id,
|
182
|
-
:requested_scopes_group2,
|
183
|
-
:granular_scopes2_client_secret,
|
184
|
-
:use_pkce,
|
185
|
-
:pkce_code_challenge_method,
|
186
|
-
:patient_ids
|
187
149
|
end
|
188
150
|
end
|
@@ -10,10 +10,10 @@ module ONCCertificationG10TestKit
|
|
10
10
|
input_instructions %(
|
11
11
|
If necessary, register Inferno as a standalone application using the following information:
|
12
12
|
|
13
|
-
* Redirect URI: `#{
|
13
|
+
* Redirect URI: `#{REDIRECT_URI}`
|
14
14
|
|
15
15
|
Once the test is running, Inferno will perform a launch. The tester must grant
|
16
|
-
a sub-resource scope for each
|
16
|
+
a sub-resource scope for each Condition and Observation, instead of granting
|
17
17
|
access to all Condition and Observation resources:
|
18
18
|
|
19
19
|
* “Condition” sub-resource scopes “Encounter Diagnosis”, “Problem List”,
|
@@ -66,21 +66,36 @@ module ONCCertificationG10TestKit
|
|
66
66
|
|
67
67
|
config(
|
68
68
|
inputs: {
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
69
|
+
received_scopes: { name: :granular_scope_selection_v2_received_scopes },
|
70
|
+
smart_auth_info: {
|
71
|
+
name: :granular_scopes_selection_smart_auth_info,
|
72
|
+
title: 'Granular Scope Selection Credentials',
|
73
|
+
options: {
|
74
|
+
mode: 'auth',
|
75
|
+
components: [
|
76
|
+
Inferno::DSL::AuthInfo.default_auth_type_component_without_backend_services,
|
77
|
+
{
|
78
|
+
name: :use_discovery,
|
79
|
+
locked: true
|
80
|
+
},
|
81
|
+
{
|
82
|
+
name: :requested_scopes,
|
83
|
+
default: %(
|
84
|
+
launch/patient openid fhirUser offline_access patient/Condition.rs
|
85
|
+
patient/Observation.rs patient/Patient.rs
|
86
|
+
).gsub(/\s{2,}/, ' ').strip
|
87
|
+
},
|
88
|
+
{
|
89
|
+
name: :jwks,
|
90
|
+
locked: true
|
91
|
+
}
|
92
|
+
]
|
93
|
+
}
|
83
94
|
}
|
95
|
+
},
|
96
|
+
outputs: {
|
97
|
+
smart_auth_info: { name: :granular_scopes_selection_smart_auth_info },
|
98
|
+
received_scopes: { name: :granular_scope_selection_v2_received_scopes }
|
84
99
|
}
|
85
100
|
)
|
86
101
|
|
@@ -95,31 +110,6 @@ module ONCCertificationG10TestKit
|
|
95
110
|
title 'Granular Scope Selection with v2 Scopes'
|
96
111
|
|
97
112
|
config(
|
98
|
-
inputs: {
|
99
|
-
client_id: {
|
100
|
-
name: :granular_scope_selection_v2_client_id,
|
101
|
-
title: 'Granular Scope Selection w/v2 Scopes Client ID'
|
102
|
-
},
|
103
|
-
client_secret: {
|
104
|
-
name: :granular_scope_selection_v2_client_secret,
|
105
|
-
title: 'Granular Scope Selection w/v2 Scopes Client Secret',
|
106
|
-
default: nil,
|
107
|
-
optional: true
|
108
|
-
},
|
109
|
-
requested_scopes: {
|
110
|
-
name: :granular_scope_selection_v2_requested_scopes,
|
111
|
-
title: 'Granular Scope Selection v2 Scopes',
|
112
|
-
default: %(
|
113
|
-
launch/patient openid fhirUser offline_access patient/Condition.rs
|
114
|
-
patient/Observation.rs patient/Patient.rs
|
115
|
-
).gsub(/\s{2,}/, ' ').strip
|
116
|
-
},
|
117
|
-
received_scopes: { name: :granular_scope_selection_v2_received_scopes }
|
118
|
-
},
|
119
|
-
outputs: {
|
120
|
-
requested_scopes: { name: :granular_scope_selection_v2_requested_scopes },
|
121
|
-
received_scopes: { name: :granular_scope_selection_v2_received_scopes }
|
122
|
-
},
|
123
113
|
options: {
|
124
114
|
redirect_message_proc: proc do |auth_url|
|
125
115
|
%(
|
@@ -128,7 +118,7 @@ module ONCCertificationG10TestKit
|
|
128
118
|
[Follow this link to authorize with the SMART server](#{auth_url}).
|
129
119
|
|
130
120
|
Tests will resume once Inferno receives a request at
|
131
|
-
`#{
|
121
|
+
`#{REDIRECT_URI}` with a state of `#{state}`.
|
132
122
|
)
|
133
123
|
end,
|
134
124
|
ignore_missing_scopes_check: true
|
@@ -157,31 +147,6 @@ module ONCCertificationG10TestKit
|
|
157
147
|
title 'Granular Scope Selection with v2 Scopes'
|
158
148
|
|
159
149
|
config(
|
160
|
-
inputs: {
|
161
|
-
client_id: {
|
162
|
-
name: :granular_scope_selection_v2_client_id,
|
163
|
-
title: 'Granular Scope Selection w/v2 Scopes Client ID'
|
164
|
-
},
|
165
|
-
client_secret: {
|
166
|
-
name: :granular_scope_selection_v2_client_secret,
|
167
|
-
title: 'Granular Scope Selection w/v2 Scopes Client Secret',
|
168
|
-
default: nil,
|
169
|
-
optional: true
|
170
|
-
},
|
171
|
-
requested_scopes: {
|
172
|
-
name: :granular_scope_selection_v2_requested_scopes,
|
173
|
-
title: 'Granular Scope Selection v2 Scopes',
|
174
|
-
default: %(
|
175
|
-
launch/patient openid fhirUser offline_access patient/Condition.rs
|
176
|
-
patient/Observation.rs patient/Patient.rs
|
177
|
-
).gsub(/\s{2,}/, ' ').strip
|
178
|
-
},
|
179
|
-
received_scopes: { name: :granular_scope_selection_v2_received_scopes }
|
180
|
-
},
|
181
|
-
outputs: {
|
182
|
-
requested_scopes: { name: :granular_scope_selection_v2_requested_scopes },
|
183
|
-
received_scopes: { name: :granular_scope_selection_v2_received_scopes }
|
184
|
-
},
|
185
150
|
options: {
|
186
151
|
redirect_message_proc: proc do |auth_url|
|
187
152
|
%(
|
@@ -190,7 +155,7 @@ module ONCCertificationG10TestKit
|
|
190
155
|
[Follow this link to authorize with the SMART server](#{auth_url}).
|
191
156
|
|
192
157
|
Tests will resume once Inferno receives a request at
|
193
|
-
`#{
|
158
|
+
`#{REDIRECT_URI}` with a state of `#{state}`.
|
194
159
|
)
|
195
160
|
end,
|
196
161
|
ignore_missing_scopes_check: true
|
@@ -7,7 +7,8 @@ module ONCCertificationG10TestKit
|
|
7
7
|
Patient resource.
|
8
8
|
)
|
9
9
|
id :g10_smart_granular_scope_selection
|
10
|
-
input :
|
10
|
+
input :received_scopes
|
11
|
+
input :smart_auth_info, type: :auth_info
|
11
12
|
|
12
13
|
def resources_with_granular_scopes
|
13
14
|
['Condition', 'Observation']
|
@@ -26,8 +27,8 @@ module ONCCertificationG10TestKit
|
|
26
27
|
end
|
27
28
|
|
28
29
|
run do
|
29
|
-
assert requested_scopes.present?
|
30
|
-
requested_scopes =
|
30
|
+
assert smart_auth_info.requested_scopes.present?
|
31
|
+
requested_scopes = smart_auth_info.requested_scopes.split
|
31
32
|
(resources_with_granular_scopes + ['Patient']).each do |resource_type|
|
32
33
|
assert requested_scopes.any? { |scope| scope.match(resource_level_scope_regex(resource_type)) },
|
33
34
|
"No resource-level scope was requested for #{resource_type}"
|