onc_certification_g10_test_kit 7.2.3 → 7.2.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.
@@ -0,0 +1,83 @@
1
+ require_relative 'tasks/test_procedure'
2
+
3
+ module ONCCertificationG10TestKit
4
+ # @private
5
+ # This module ensures that short test ids don't change
6
+ module TestProcedureRequirementsManager
7
+ class << self
8
+ def all_children(runnable)
9
+ runnable
10
+ .children
11
+ .flat_map { |child| [child] + all_children(child) }
12
+ end
13
+
14
+ def short_id_file_path
15
+ File.join(__dir__, 'g10_certification_suite_short_id_map.yml')
16
+ end
17
+
18
+ def short_id_map
19
+ @short_id_map ||= YAML.load_file(short_id_file_path)
20
+ end
21
+
22
+ def assign_test_procedure_requirements
23
+ all_children(G10CertificationSuite).each do |runnable|
24
+ short_id = get_short_id(runnable)
25
+ test_procedure_requirements = current_procedure_requirements_map[short_id]
26
+ if test_procedure_requirements.present?
27
+ current_requirements = runnable.verifies_requirements
28
+ new_requirements = test_procedure_requirements.map do |req|
29
+ "170.315(g)(10)-test-procedure@#{req}"
30
+ end
31
+ updated_requirements = current_requirements + new_requirements
32
+ runnable.verifies_requirements(*updated_requirements)
33
+ end
34
+ rescue KeyError
35
+ Inferno::Application['logger'].warn(
36
+ "No test procedure map defined for id #{short_id} (from runnable #{runnable.id})"
37
+ )
38
+ end
39
+ rescue Errno::ENOENT
40
+ Inferno::Application['logger'].warn('No short id map found')
41
+ end
42
+
43
+ def get_short_id(runnable)
44
+ short_id_map.fetch(runnable.id)
45
+ rescue KeyError
46
+ Inferno::Application['logger'].warn("No short id defined for #{runnable.id}")
47
+ end
48
+
49
+ def current_procedure_requirements_map
50
+ @current_procedure_requirements_map ||=
51
+ all_children(G10CertificationSuite).each_with_object({}) do |runnable, hash|
52
+ short_id = get_short_id(runnable)
53
+ test_procedure_requirement_list = requirements_for_short_id(short_id)
54
+ next unless test_procedure_requirement_list.present?
55
+
56
+ hash[short_id] = test_procedure_requirement_list
57
+ end
58
+ end
59
+
60
+ def requirements_for_short_id(short_id)
61
+ test_procedure_definition.sections.each_with_object([]) do |section, requirement_list|
62
+ section.steps.each do |step|
63
+ next unless step.inferno_tests.include?(short_id)
64
+
65
+ requirement_list << step.id
66
+ end
67
+ end
68
+ end
69
+
70
+ def test_procedure_definition
71
+ @test_procedure_definition ||=
72
+ Tasks::TestProcedure.new(
73
+ YAML.load_file(
74
+ File.join(
75
+ __dir__,
76
+ 'onc_program_procedure.yml'
77
+ )
78
+ ).deep_symbolize_keys
79
+ )
80
+ end
81
+ end
82
+ end
83
+ end
@@ -1,4 +1,4 @@
1
1
  module ONCCertificationG10TestKit
2
- VERSION = '7.2.3'.freeze
3
- LAST_UPDATED = '2025-06-10'.freeze # TODO: update next release
2
+ VERSION = '7.2.4'.freeze
3
+ LAST_UPDATED = '2025-07-08'.freeze # TODO: update next release
4
4
  end
@@ -3,557 +3,4 @@ require 'smart_app_launch/smart_stu2_suite'
3
3
  require 'smart_app_launch/smart_stu2_2_suite'
4
4
  require 'us_core_test_kit'
5
5
 
6
- require_relative 'onc_certification_g10_test_kit/metadata'
7
- require_relative 'onc_certification_g10_test_kit/configuration_checker'
8
- require_relative 'onc_certification_g10_test_kit/urls'
9
-
10
- require_relative 'onc_certification_g10_test_kit/feature'
11
- require_relative 'onc_certification_g10_test_kit/g10_options'
12
- require_relative 'onc_certification_g10_test_kit/multi_patient_api_stu1'
13
- require_relative 'onc_certification_g10_test_kit/multi_patient_api_stu2'
14
- require_relative 'onc_certification_g10_test_kit/single_patient_api_group'
15
- require_relative 'onc_certification_g10_test_kit/single_patient_us_core_4_api_group'
16
- require_relative 'onc_certification_g10_test_kit/single_patient_us_core_5_api_group'
17
- require_relative 'onc_certification_g10_test_kit/single_patient_us_core_6_api_group'
18
- require_relative 'onc_certification_g10_test_kit/single_patient_us_core_7_api_group'
19
- require_relative 'onc_certification_g10_test_kit/smart_app_launch_invalid_aud_group'
20
- require_relative 'onc_certification_g10_test_kit/smart_asymmetric_launch_group'
21
- require_relative 'onc_certification_g10_test_kit/smart_granular_scope_selection_group'
22
- require_relative 'onc_certification_g10_test_kit/smart_invalid_token_group'
23
- require_relative 'onc_certification_g10_test_kit/smart_invalid_token_group_stu2'
24
- require_relative 'onc_certification_g10_test_kit/smart_invalid_pkce_group'
25
- require_relative 'onc_certification_g10_test_kit/smart_limited_app_group'
26
- require_relative 'onc_certification_g10_test_kit/smart_standalone_patient_app_group'
27
- require_relative 'onc_certification_g10_test_kit/smart_public_standalone_launch_group'
28
- require_relative 'onc_certification_g10_test_kit/smart_public_standalone_launch_group_stu2'
29
- require_relative 'onc_certification_g10_test_kit/smart_public_standalone_launch_group_stu2_2'
30
- require_relative 'onc_certification_g10_test_kit/smart_ehr_patient_launch_group'
31
- require_relative 'onc_certification_g10_test_kit/smart_ehr_patient_launch_group_stu2'
32
- require_relative 'onc_certification_g10_test_kit/smart_ehr_patient_launch_group_stu2_2'
33
- require_relative 'onc_certification_g10_test_kit/smart_ehr_practitioner_app_group'
34
- require_relative 'onc_certification_g10_test_kit/smart_fine_grained_scopes_group'
35
- require_relative 'onc_certification_g10_test_kit/smart_fine_grained_scopes_group_stu2_2'
36
- require_relative 'onc_certification_g10_test_kit/smart_fine_grained_scopes_us_core_7_group'
37
- require_relative 'onc_certification_g10_test_kit/smart_fine_grained_scopes_us_core_7_group_stu2_2'
38
- require_relative 'onc_certification_g10_test_kit/smart_v1_scopes_group'
39
- require_relative 'onc_certification_g10_test_kit/terminology_binding_validator'
40
- require_relative 'onc_certification_g10_test_kit/token_introspection_group'
41
- require_relative 'onc_certification_g10_test_kit/token_introspection_group_stu2_2'
42
- require_relative 'onc_certification_g10_test_kit/token_revocation_group'
43
- require_relative 'onc_certification_g10_test_kit/visual_inspection_and_attestations_group'
44
-
45
- require_relative 'inferno/terminology'
46
- require_relative 'onc_certification_g10_test_kit/short_id_manager'
47
-
48
- Inferno::Terminology::Loader.load_validators
49
-
50
- module ONCCertificationG10TestKit
51
- class G10CertificationSuite < Inferno::TestSuite
52
- title 'ONC Certification (g)(10) Standardized API'
53
- short_title '(g)(10) Standardized API'
54
- id :g10_certification
55
- links [
56
- {
57
- label: 'Report Issue',
58
- url: 'https://github.com/onc-healthit/onc-certification-g10-test-kit/issues/'
59
- },
60
- {
61
- label: 'Open Source',
62
- url: 'https://github.com/onc-healthit/onc-certification-g10-test-kit/'
63
- },
64
- {
65
- label: 'Download',
66
- url: 'https://github.com/onc-healthit/onc-certification-g10-test-kit/releases'
67
- }
68
- ]
69
-
70
- check_configuration do
71
- ConfigurationChecker.new.configuration_messages
72
- end
73
-
74
- WARNING_INCLUSION_FILTERS = [
75
- /Unknown CodeSystem/,
76
- /Unknown ValueSet/
77
- ].freeze
78
-
79
- ERROR_FILTERS = [
80
- /\A\S+: \S+: Unknown [Cc]ode/,
81
- /\A\S+: \S+: None of the codings provided are in the value set/,
82
- /\A\S+: \S+: The code provided \(\S*\) is not in the value set/,
83
- /\A\S+: \S+: The Coding provided \(\S*\) is not in the value set/,
84
- /\A\S+: \S+: The Coding provided \(\S*\) was not found in the value set/,
85
- /\A\S+: \S+: A definition for CodeSystem '.*' could not be found, so the code cannot be validated/,
86
- /\A\S+: \S+: URL value '.*' does not resolve/,
87
- /\A\S+: \S+: .*\[No server available\]/, # Catch-all for certain errors when TX server is disabled
88
- %r{\A\S+: \S+: .*\[Error from http://tx.fhir.org/r4:} # Catch-all for TX server errors that slip through
89
- ].freeze
90
-
91
- def self.setup_validator(us_core_version_requirement) # rubocop:disable Metrics/CyclomaticComplexity
92
- fhir_resource_validator :default, required_suite_options: us_core_version_requirement do
93
- cli_context do
94
- txServer nil
95
- displayWarnings true
96
- disableDefaultResourceFetcher true
97
- end
98
-
99
- us_core_version_num = G10Options::US_CORE_VERSION_NUMBERS[us_core_version_requirement[:us_core_version]]
100
-
101
- igs("hl7.fhir.us.core##{us_core_version_num}")
102
-
103
- us_core_message_filters =
104
- case (us_core_version_requirement[:us_core_version])
105
- when G10Options::US_CORE_3
106
- USCoreTestKit::USCoreV311::USCoreTestSuite::VALIDATION_MESSAGE_FILTERS
107
- when G10Options::US_CORE_4
108
- USCoreTestKit::USCoreV400::USCoreTestSuite::VALIDATION_MESSAGE_FILTERS
109
- when G10Options::US_CORE_5
110
- USCoreTestKit::USCoreV501::USCoreTestSuite::VALIDATION_MESSAGE_FILTERS
111
- when G10Options::US_CORE_6
112
- USCoreTestKit::USCoreV610::USCoreTestSuite::VALIDATION_MESSAGE_FILTERS
113
- when G10Options::US_CORE_7
114
- USCoreTestKit::USCoreV700::USCoreTestSuite::VALIDATION_MESSAGE_FILTERS
115
- end
116
-
117
- exclude_message do |message|
118
- if message.type == 'info' ||
119
- (message.type == 'warning' && WARNING_INCLUSION_FILTERS.none? do |filter|
120
- filter.match? message.message
121
- end) ||
122
- us_core_message_filters.any? { |filter| filter.match? message.message } ||
123
- (message.type == 'error' && ERROR_FILTERS.any? { |filter| message.message.match? filter })
124
- true
125
- else
126
- false
127
- end
128
- end
129
-
130
- perform_additional_validation do |resource, profile_url|
131
- versionless_profile_url, profile_version = profile_url.split('|')
132
- profile_version = case profile_version
133
- when '6.1.0'
134
- '610'
135
- when '4.0.0'
136
- '400'
137
- when '5.0.1'
138
- '501'
139
- else
140
- # This open-ended else is primarily for Vital Signs profiles in v3.1.1, which are tagged
141
- # with the base FHIR version (4.0.1). The profiles were migrated to US Core in later
142
- # versions.
143
- '311'
144
- end
145
-
146
- us_core_suite = USCoreTestKit.const_get("USCoreV#{profile_version}")::USCoreTestSuite
147
- metadata = us_core_suite.metadata.find do |metadata_candidate|
148
- metadata_candidate.profile_url == versionless_profile_url
149
- end
150
- next if metadata.nil?
151
-
152
- validation_messages = if resource.instance_of?(FHIR::Provenance)
153
- USCoreTestKit::ProvenanceValidator.validate(resource)
154
- else
155
- []
156
- end
157
-
158
- terminology_validation_messages = metadata.bindings
159
- .select { |binding_definition| binding_definition[:strength] == 'required' }
160
- .flat_map do |binding_definition|
161
- TerminologyBindingValidator.validate(resource, binding_definition)
162
- rescue Inferno::UnknownValueSetException, Inferno::UnknownCodeSystemException => e
163
- { type: 'warning', message: e.message }
164
- end.compact
165
-
166
- validation_messages.concat(terminology_validation_messages)
167
- validation_messages
168
- end
169
- end
170
- end
171
-
172
- [
173
- G10Options::US_CORE_3_REQUIREMENT,
174
- G10Options::US_CORE_4_REQUIREMENT,
175
- G10Options::US_CORE_5_REQUIREMENT,
176
- G10Options::US_CORE_6_REQUIREMENT,
177
- G10Options::US_CORE_7_REQUIREMENT
178
-
179
- ].each do |us_core_version_requirement|
180
- setup_validator(us_core_version_requirement)
181
- end
182
-
183
- def self.jwks_json
184
- bulk_data_jwks = JSON.parse(File.read(
185
- ENV.fetch('G10_BULK_DATA_JWKS',
186
- File.join(__dir__, 'onc_certification_g10_test_kit',
187
- 'bulk_data_jwks.json'))
188
- ))
189
- @jwks_json ||= JSON.pretty_generate(
190
- { keys: bulk_data_jwks['keys'].select { |key| key['key_ops']&.include?('verify') } }
191
- )
192
- end
193
-
194
- def self.well_known_route_handler
195
- ->(_env) { [200, { 'Content-Type' => 'application/json' }, [jwks_json]] }
196
- end
197
-
198
- route(
199
- :get,
200
- '/.well-known/jwks.json',
201
- well_known_route_handler
202
- )
203
-
204
- suite_option :us_core_version,
205
- title: 'US Core Version',
206
- list_options: [
207
- {
208
- label: 'US Core 3.1.1 / USCDI v1',
209
- value: G10Options::US_CORE_3
210
- },
211
- {
212
- label: 'US Core 4.0.0 / USCDI v1',
213
- value: G10Options::US_CORE_4
214
- },
215
- {
216
- label: 'US Core 6.1.0 / USCDI v3',
217
- value: G10Options::US_CORE_6
218
- },
219
- {
220
- label: 'US Core 7.0.0 / USCDI v4',
221
- value: G10Options::US_CORE_7
222
- }
223
- ]
224
-
225
- suite_option :smart_app_launch_version,
226
- title: 'SMART App Launch Version',
227
- list_options: [
228
- {
229
- label: 'SMART App Launch 1.0.0',
230
- value: G10Options::SMART_1
231
- },
232
- {
233
- label: 'SMART App Launch 2.0.0',
234
- value: G10Options::SMART_2
235
- },
236
- {
237
- label: 'SMART App Launch 2.2.0',
238
- value: G10Options::SMART_2_2
239
- }
240
- ]
241
-
242
- suite_option :multi_patient_version,
243
- title: 'Bulk Data Version',
244
- list_options: [
245
- {
246
- label: 'Bulk Data 1.0.1',
247
- value: G10Options::BULK_DATA_1
248
- },
249
- {
250
- label: 'Bulk Data 2.0.0',
251
- value: G10Options::BULK_DATA_2
252
- }
253
- ]
254
-
255
- config(
256
- options: {
257
- post_authorization_uri: "#{Inferno::Application['base_url']}/custom/smart_stu2/post_auth",
258
- incorrectly_permitted_tls_version_message_type: 'warning'
259
- }
260
- )
261
-
262
- description %(
263
- The ONC Certification (g)(10) Standardized API Test Suite is a testing
264
- tool for Health Level 7 (HL7®) Fast Healthcare Interoperability Resources
265
- (FHIR®) services seeking to meet the requirements of the Standardized API
266
- for Patient and Population Services criterion § 170.315(g)(10) in the ONC
267
- Certification Program.
268
-
269
- This test suite is organized into testing scenarios that in sum cover all
270
- requirements within the § 170.315(g)(10) certification criterion. The
271
- scenarios are intended to be run in order during certification, but can
272
- be run out of order to support testing during development or certification
273
- preparation. Some scenarios depend on data collected during previous
274
- scenarios to function. In these cases, the scenario description describes
275
- these dependencies.
276
-
277
- The best way to learn about how to use these tests is the
278
- [(g)(10) Standardized API Test Kit walkthrough](https://github.com/onc-healthit/onc-certification-g10-test-kit/wiki/Walkthrough),
279
- which demonstrates the tests running against a simulated system.
280
-
281
- The first three scenarios require the system under test to demonstrate
282
- basic SMART App Launch functionality. The fourth uses a valid token
283
- provided during earlier tests to verify support for the Single Patient API
284
- as described in the criterion. The fifth verifies support for the Multi
285
- Patient API, including Backend Services for authorization. Not all
286
- authorization-related requirements are verified in the first three
287
- scenarios, and the 'Additional Authorization Tests' verify these
288
- additional requirements. The last scenario contains a list of
289
- 'attestations' and 'visual inspections' for requirements that could not
290
- be verified through automated testing.
291
-
292
- To get started with the first group of scenarios, please first register the
293
- Inferno client as a SMART App with the following information:
294
-
295
- * SMART Launch URI: `#{LAUNCH_URI}`
296
- * OAuth Redirect URI: `#{REDIRECT_URI}`
297
-
298
- For the multi-patient API, register Inferno with the following JWK Set
299
- Url:
300
-
301
- * `#{Inferno::Application[:base_url]}/custom/g10_certification/.well-known/jwks.json`
302
-
303
- Systems must pass all tests to qualify for ONC certification.
304
- )
305
-
306
- suite_summary %(
307
- The ONC Certification (g)(10) Standardized API Test Kit is a testing tool
308
- for Health Level 7 (HL7®) Fast Healthcare Interoperability Resources
309
- (FHIR®) services seeking to meet the requirements of the Standardized API
310
- for Patient and Population Services criterion § 170.315(g)(10) in the ONC Certification Program.
311
-
312
- Systems may adopt later versions of standards than those named in the rule
313
- as approved by the ONC Standards Version Advancement Process (SVAP).
314
- When using US Core v7, the tester must select SMART v2 or above
315
- because SMART App Launch granular scopes are required by US Core v7
316
- and are not available in SMART v1. Please select which approved version
317
- of each standard to use, and click ‘Start Testing’ to begin testing.
318
- )
319
-
320
- input_instructions %(
321
- Register Inferno as a SMART app using the following information:
322
-
323
- * Launch URI: `#{LAUNCH_URI}`
324
- * Redirect URI: `#{REDIRECT_URI}`
325
-
326
- For the multi-patient API, register Inferno with the following JWK Set
327
- Url:
328
-
329
- * `#{Inferno::Application[:base_url]}/custom/g10_certification/.well-known/jwks.json`
330
- )
331
-
332
- group from: 'g10_smart_standalone_patient_app'
333
-
334
- group from: 'g10_smart_limited_app' do
335
- # This has to be configured here, otherwise the `smart_auth_info` config
336
- # will get clobbered and will use `standalone_smart_auth_info` instead of
337
- # `limited_smart_auth_info`
338
- groups
339
- .select { |group| group.id.include? 'smart_standalone_launch' }
340
- .flat_map(&:tests)
341
- .select { |test| test.id.include? 'g10_patient_context' }
342
- .each do |test|
343
- test
344
- .config(
345
- inputs: {
346
- patient_id: { name: :limited_patient_id },
347
- smart_auth_info: { name: :limited_smart_auth_info }
348
- }
349
- )
350
- end
351
- end
352
-
353
- group from: 'g10_smart_ehr_practitioner_app'
354
-
355
- group from: 'g10_single_patient_api',
356
- required_suite_options: G10Options::US_CORE_3_REQUIREMENT
357
- group from: 'g10_single_patient_us_core_4_api',
358
- required_suite_options: G10Options::US_CORE_4_REQUIREMENT
359
- group from: 'g10_single_patient_us_core_5_api',
360
- required_suite_options: G10Options::US_CORE_5_REQUIREMENT
361
- group from: 'g10_single_patient_us_core_6_api',
362
- required_suite_options: G10Options::US_CORE_6_REQUIREMENT
363
- group from: 'g10_single_patient_us_core_7_api',
364
- required_suite_options: G10Options::US_CORE_7_REQUIREMENT
365
-
366
- group from: 'multi_patient_api',
367
- required_suite_options: G10Options::BULK_DATA_1_REQUIREMENT
368
- group from: 'multi_patient_api_stu2',
369
- required_suite_options: G10Options::BULK_DATA_2_REQUIREMENT
370
-
371
- group do
372
- title 'Additional Authorization Tests'
373
- id 'Group06'
374
- description %(
375
- The (g)(10) Standardized Test Suite attempts to minimize effort required
376
- by testers by creating scenarios that validate as many requirements as
377
- possible with just a handful of SMART App Launches. However, not all
378
- SMART App Launch and (g)(10) Standardized API criterion requirements
379
- that need to be verified fit within the first few test scenarios in this
380
- suite.
381
-
382
- The scenarios contained in this section verify remaining testing
383
- requirements for the (g)(10) Standardized API criterion relevant to
384
- the SMART App Launch implementation specification. Each of these scenarios
385
- need to be run independently. Please read the instructions for each in
386
- the 'About' section, as they may require special setup on the part of
387
- the tester.
388
- )
389
-
390
- default_redirect_message_proc = lambda do |auth_url|
391
- %(
392
- ### #{self.class.parent.title}
393
-
394
- [Follow this link to authorize with the SMART server](#{auth_url}).
395
-
396
- Tests will resume once Inferno receives a request at
397
- `#{REDIRECT_URI}` with a state of `#{state}`.
398
- )
399
- end
400
-
401
- group from: :g10_public_standalone_launch,
402
- required_suite_options: G10Options::SMART_1_REQUIREMENT,
403
- config: { options: { redirect_message_proc: default_redirect_message_proc } }
404
- group from: :g10_public_standalone_launch_stu2,
405
- required_suite_options: G10Options::SMART_2_REQUIREMENT,
406
- config: { options: { redirect_message_proc: default_redirect_message_proc } }
407
- group from: :g10_public_standalone_launch_stu2_2, # rubocop:disable Naming/VariableNumber
408
- required_suite_options: G10Options::SMART_2_2_REQUIREMENT,
409
- config: { options: { redirect_message_proc: default_redirect_message_proc } }
410
-
411
- group from: :g10_token_revocation
412
-
413
- group from: :g10_smart_invalid_aud,
414
- config: { options: { redirect_message_proc: default_redirect_message_proc } }
415
-
416
- group from: :g10_smart_invalid_token_request,
417
- required_suite_options: G10Options::SMART_1_REQUIREMENT,
418
- config: { options: { redirect_message_proc: default_redirect_message_proc } }
419
- group from: :g10_smart_invalid_token_request_stu2,
420
- required_suite_options: G10Options::SMART_2_REQUIREMENT,
421
- config: { options: { redirect_message_proc: default_redirect_message_proc } }
422
- group from: :g10_smart_invalid_token_request_stu2,
423
- id: :g10_smart_invalid_token_request_stu2_2, # rubocop:disable Naming/VariableNumber
424
- required_suite_options: G10Options::SMART_2_2_REQUIREMENT,
425
- config: { options: { redirect_message_proc: default_redirect_message_proc } }
426
-
427
- group from: :g10_smart_invalid_pkce_code_verifier_group,
428
- required_suite_options: G10Options::SMART_2_REQUIREMENT
429
- group from: :g10_smart_invalid_pkce_code_verifier_group,
430
- id: :g10_smart_invalid_pkce_code_verifier_group_stu2_2, # rubocop:disable Naming/VariableNumber
431
- required_suite_options: G10Options::SMART_2_2_REQUIREMENT
432
-
433
- group from: :g10_ehr_patient_launch,
434
- required_suite_options: G10Options::SMART_1_REQUIREMENT
435
- group from: :g10_ehr_patient_launch_stu2,
436
- required_suite_options: G10Options::SMART_2_REQUIREMENT
437
- group from: :g10_ehr_patient_launch_stu2_2, # rubocop:disable Naming/VariableNumber
438
- required_suite_options: G10Options::SMART_2_2_REQUIREMENT
439
-
440
- group from: :g10_token_introspection,
441
- required_suite_options: G10Options::SMART_2_REQUIREMENT
442
- group from: :g10_token_introspection_stu2_2, # rubocop:disable Naming/VariableNumber
443
- required_suite_options: G10Options::SMART_2_2_REQUIREMENT
444
-
445
- group from: :g10_asymmetric_launch,
446
- required_suite_options: G10Options::SMART_2_REQUIREMENT
447
- group from: :g10_asymmetric_launch,
448
- id: :g10_asymmetric_launch_stu2_2, # rubocop:disable Naming/VariableNumber
449
- required_suite_options: G10Options::SMART_2_2_REQUIREMENT
450
-
451
- group from: :g10_smart_v1_scopes,
452
- required_suite_options: G10Options::SMART_2_REQUIREMENT
453
- group from: :g10_smart_v1_scopes,
454
- id: :g10_smart_v1_scopes_stu2_2, # rubocop:disable Naming/VariableNumber
455
- required_suite_options: G10Options::SMART_2_2_REQUIREMENT
456
-
457
- group from: :g10_smart_fine_grained_scopes, exclude_optional: true do
458
- required_suite_options G10Options::SMART_2_REQUIREMENT.merge(G10Options::US_CORE_6_REQUIREMENT)
459
- groups.first.config(
460
- inputs: {
461
- smart_auth_info: { name: :granular_scopes_1_auth_info }
462
- },
463
- outputs: {
464
- smart_auth_info: { name: :granular_scopes_1_auth_info }
465
- }
466
- )
467
-
468
- groups.last.config(
469
- inputs: {
470
- smart_auth_info: { name: :granular_scopes_2_auth_info }
471
- },
472
- outputs: {
473
- smart_auth_info: { name: :granular_scopes_2_auth_info }
474
- }
475
- )
476
- end
477
-
478
- group from: :g10_smart_fine_grained_scopes_stu2_2, exclude_optional: true do # rubocop:disable Naming/VariableNumber
479
- required_suite_options G10Options::SMART_2_2_REQUIREMENT.merge(G10Options::US_CORE_6_REQUIREMENT)
480
- groups.first.config(
481
- inputs: {
482
- smart_auth_info: { name: :granular_scopes_1_auth_info }
483
- },
484
- outputs: {
485
- smart_auth_info: { name: :granular_scopes_1_auth_info }
486
- }
487
- )
488
-
489
- groups.last.config(
490
- inputs: {
491
- smart_auth_info: { name: :granular_scopes_2_auth_info }
492
- },
493
- outputs: {
494
- smart_auth_info: { name: :granular_scopes_2_auth_info }
495
- }
496
- )
497
- end
498
-
499
- group from: :g10_us_core_7_smart_fine_grained_scopes, exclude_optional: true do
500
- required_suite_options G10Options::SMART_2_REQUIREMENT.merge(G10Options::US_CORE_7_REQUIREMENT)
501
- groups.first.config(
502
- inputs: {
503
- smart_auth_info: { name: :granular_scopes_1_auth_info }
504
- },
505
- outputs: {
506
- smart_auth_info: { name: :granular_scopes_1_auth_info }
507
- }
508
- )
509
-
510
- groups.last.config(
511
- inputs: {
512
- smart_auth_info: { name: :granular_scopes_2_auth_info }
513
- },
514
- outputs: {
515
- smart_auth_info: { name: :granular_scopes_2_auth_info }
516
- }
517
- )
518
- end
519
-
520
- group from: :g10_us_core_7_smart_fine_grained_scopes_stu2_2, exclude_optional: true do # rubocop:disable Naming/VariableNumber
521
- required_suite_options G10Options::SMART_2_2_REQUIREMENT.merge(G10Options::US_CORE_7_REQUIREMENT)
522
- groups.first.config(
523
- inputs: {
524
- smart_auth_info: { name: :granular_scopes_1_auth_info }
525
- },
526
- outputs: {
527
- smart_auth_info: { name: :granular_scopes_1_auth_info }
528
- }
529
- )
530
-
531
- groups.last.config(
532
- inputs: {
533
- smart_auth_info: { name: :granular_scopes_2_auth_info }
534
- },
535
- outputs: {
536
- smart_auth_info: { name: :granular_scopes_2_auth_info }
537
- }
538
- )
539
- end
540
-
541
- group from: :g10_smart_granular_scope_selection,
542
- required_suite_options: G10Options::SMART_2_REQUIREMENT.merge(G10Options::US_CORE_6_REQUIREMENT)
543
- group from: :g10_smart_granular_scope_selection,
544
- id: :g10_smart_granular_scope_selection_stu2_2, # rubocop:disable Naming/VariableNumber
545
- required_suite_options: G10Options::SMART_2_2_REQUIREMENT.merge(G10Options::US_CORE_6_REQUIREMENT)
546
-
547
- group from: :g10_smart_granular_scope_selection,
548
- id: :g10_us_core_7_smart_granular_scope_selection,
549
- required_suite_options: G10Options::SMART_2_REQUIREMENT.merge(G10Options::US_CORE_7_REQUIREMENT)
550
- group from: :g10_smart_granular_scope_selection,
551
- id: :g10_us_core_7_smart_granular_scope_selection_stu2_2, # rubocop:disable Naming/VariableNumber
552
- required_suite_options: G10Options::SMART_2_2_REQUIREMENT.merge(G10Options::US_CORE_7_REQUIREMENT)
553
- end
554
-
555
- group from: :g10_visual_inspection_and_attestations
556
- end
557
- end
558
-
559
- ONCCertificationG10TestKit::ShortIDManager.assign_short_ids
6
+ require_relative 'onc_certification_g10_test_kit/g10_certification_suite'