bulk_data_test_kit 0.13.2 → 0.14.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.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/config/presets/bulk_data_v400_submit_consumer_demo.json.erb +65 -0
  3. data/config/presets/bulk_data_v400_submit_provider_demo.json +22 -0
  4. data/lib/bulk_data_test_kit/metadata.rb +20 -4
  5. data/lib/bulk_data_test_kit/requirements/generated/bulk_data_v101_requirements_coverage.csv +1 -1
  6. data/lib/bulk_data_test_kit/requirements/generated/bulk_data_v200_client_requirements_coverage.csv +1 -1
  7. data/lib/bulk_data_test_kit/requirements/generated/bulk_data_v200_requirements_coverage.csv +1 -1
  8. data/lib/bulk_data_test_kit/requirements/generated/bulk_data_v400_submit_consumer_requirements_coverage.csv +18 -0
  9. data/lib/bulk_data_test_kit/requirements/generated/bulk_data_v400_submit_provider_requirements_coverage.csv +4 -0
  10. data/lib/bulk_data_test_kit/v1.0.1/bulk_data_test_suite.rb +3 -3
  11. data/lib/bulk_data_test_kit/v2.0.0/bulk_data_test_suite.rb +3 -3
  12. data/lib/bulk_data_test_kit/v2.0.0_client/bulk_data_client_test_suite.rb +1 -1
  13. data/lib/bulk_data_test_kit/v2.0.0_client/docs/suite_description.md +4 -4
  14. data/lib/bulk_data_test_kit/v4.0.0/submit/consumer/backend_services_group.rb +50 -0
  15. data/lib/bulk_data_test_kit/v4.0.0/submit/consumer/complete_poll_group.rb +105 -0
  16. data/lib/bulk_data_test_kit/v4.0.0/submit/consumer/docs/suite_description.md +49 -0
  17. data/lib/bulk_data_test_kit/v4.0.0/submit/consumer/endpoints/file_download.rb +39 -0
  18. data/lib/bulk_data_test_kit/v4.0.0/submit/consumer/endpoints/manifest.rb +56 -0
  19. data/lib/bulk_data_test_kit/v4.0.0/submit/consumer/helpers.rb +78 -0
  20. data/lib/bulk_data_test_kit/v4.0.0/submit/consumer/manifest_and_file_retrieval.rb +59 -0
  21. data/lib/bulk_data_test_kit/v4.0.0/submit/consumer/poll_group.rb +66 -0
  22. data/lib/bulk_data_test_kit/v4.0.0/submit/consumer/processing_wait_group.rb +53 -0
  23. data/lib/bulk_data_test_kit/v4.0.0/submit/consumer/status_submit_group.rb +78 -0
  24. data/lib/bulk_data_test_kit/v4.0.0/submit/consumer/submit_completed_group.rb +65 -0
  25. data/lib/bulk_data_test_kit/v4.0.0/submit/consumer/submit_group.rb +66 -0
  26. data/lib/bulk_data_test_kit/v4.0.0/submit/consumer/tags.rb +12 -0
  27. data/lib/bulk_data_test_kit/v4.0.0/submit/consumer/test_suite.rb +116 -0
  28. data/lib/bulk_data_test_kit/v4.0.0/submit/consumer/urls.rb +43 -0
  29. data/lib/bulk_data_test_kit/v4.0.0/submit/provider/client_registration_group.rb +42 -0
  30. data/lib/bulk_data_test_kit/v4.0.0/submit/provider/docs/suite_description.md +50 -0
  31. data/lib/bulk_data_test_kit/v4.0.0/submit/provider/endpoints/poll.rb +90 -0
  32. data/lib/bulk_data_test_kit/v4.0.0/submit/provider/endpoints/status.rb +63 -0
  33. data/lib/bulk_data_test_kit/v4.0.0/submit/provider/endpoints/submit.rb +35 -0
  34. data/lib/bulk_data_test_kit/v4.0.0/submit/provider/helpers.rb +222 -0
  35. data/lib/bulk_data_test_kit/v4.0.0/submit/provider/manifest_and_file_retrieval.rb +165 -0
  36. data/lib/bulk_data_test_kit/v4.0.0/submit/provider/poll_group.rb +36 -0
  37. data/lib/bulk_data_test_kit/v4.0.0/submit/provider/processing_wait_group.rb +83 -0
  38. data/lib/bulk_data_test_kit/v4.0.0/submit/provider/retrieval.rb +139 -0
  39. data/lib/bulk_data_test_kit/v4.0.0/submit/provider/status_submit_group.rb +96 -0
  40. data/lib/bulk_data_test_kit/v4.0.0/submit/provider/submit_group.rb +314 -0
  41. data/lib/bulk_data_test_kit/v4.0.0/submit/provider/submit_stopped_group.rb +43 -0
  42. data/lib/bulk_data_test_kit/v4.0.0/submit/provider/tags.rb +18 -0
  43. data/lib/bulk_data_test_kit/v4.0.0/submit/provider/test_suite.rb +122 -0
  44. data/lib/bulk_data_test_kit/v4.0.0/submit/provider/urls.rb +53 -0
  45. data/lib/bulk_data_test_kit/v4.0.0/submit/provider/wait_group.rb +73 -0
  46. data/lib/bulk_data_test_kit/v4.0.0/submit/shared/jwks.rb +27 -0
  47. data/lib/bulk_data_test_kit/v4.0.0/submit/shared/submission_status.rb +14 -0
  48. data/lib/bulk_data_test_kit/v4.0.0/submit/shared/submitter_identifier.rb +14 -0
  49. data/lib/bulk_data_test_kit/version.rb +2 -2
  50. data/lib/bulk_data_test_kit.rb +2 -0
  51. metadata +41 -2
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../shared/submission_status'
4
+ require_relative '../shared/submitter_identifier'
5
+
6
+ module BulkDataTestKit
7
+ module BulkDataV400
8
+ module Submit
9
+ module Consumer
10
+ module Helpers
11
+ def submit_parameters(submission_id, base_url, status: nil, manifest_url: nil, oauth_metadata_url: nil)
12
+ params = submission_identification_parameters(submission_id)
13
+
14
+ params.parameter << FHIR::R4::Parameters::Parameter.new({
15
+ name: 'fhirBaseUrl',
16
+ valueUrl: base_url
17
+ })
18
+
19
+ unless status.nil?
20
+ status_coding = FHIR::R4::Coding.new({
21
+ system: Shared::SubmissionStatus::SYSTEM,
22
+ code: status
23
+ })
24
+
25
+ params.parameter << FHIR::R4::Parameters::Parameter.new({
26
+ name: 'submissionStatus',
27
+ # http://hl7.org/fhir/uv/bulkdata/ValueSet/submission-status
28
+ valueCoding: status_coding
29
+ })
30
+ end
31
+
32
+ unless manifest_url.nil?
33
+ params.parameter << FHIR::R4::Parameters::Parameter.new({
34
+ name: 'manifestUrl',
35
+ valueUrl: manifest_url
36
+ })
37
+ end
38
+
39
+ unless oauth_metadata_url.nil?
40
+ params.parameter << FHIR::R4::Parameters::Parameter.new({
41
+ name: 'oauthMetadataUrl',
42
+ valueUrl: oauth_metadata_url
43
+ })
44
+ end
45
+
46
+ params
47
+ end
48
+
49
+ def status_parameters(submission_id)
50
+ submission_identification_parameters(submission_id)
51
+ end
52
+
53
+ private
54
+
55
+ def submission_identification_parameters(submission_id)
56
+ params = FHIR::R4::Parameters.new
57
+ submitter_identifier = FHIR::R4::Identifier.new(
58
+ system: Shared::SubmitterIdentifier::SYSTEM,
59
+ value: Shared::SubmitterIdentifier::VALUE
60
+ )
61
+
62
+ params.parameter << FHIR::R4::Parameters::Parameter.new(
63
+ name: 'submitter',
64
+ valueIdentifier: submitter_identifier
65
+ )
66
+
67
+ params.parameter << FHIR::R4::Parameters::Parameter.new({
68
+ name: 'submissionId',
69
+ valueString: submission_id
70
+ })
71
+
72
+ params
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,59 @@
1
+ require_relative 'tags'
2
+
3
+ module BulkDataTestKit
4
+ module BulkDataV400
5
+ module Submit
6
+ module Consumer
7
+ class ManifestAndFileRetrieval < Inferno::TestGroup
8
+ title 'Manifest and File Retrieval'
9
+ id :bulk_data_v400_submit_consumer_manifest_file_retrieval
10
+
11
+ test do
12
+ id :bulk_data_v400_submit_consumer_token_request
13
+ title 'Token request received'
14
+ description <<~DESCRIPTION
15
+ This test verifies that the Data Consumer requested an access
16
+ token.
17
+ DESCRIPTION
18
+
19
+ run do
20
+ load_tagged_requests SMARTAppLaunch::TOKEN_TAG
21
+
22
+ assert requests.present?, 'No token request was received'
23
+ end
24
+ end
25
+
26
+ test do
27
+ id :bulk_data_v400_submit_consumer_manifests_retrieved
28
+ title 'Manifests retrieved'
29
+ description <<~DESCRIPTION
30
+ This test verifies that all manifests included in the manifest
31
+ were retrieved.
32
+ DESCRIPTION
33
+
34
+ run do
35
+ load_tagged_requests Consumer::MANIFEST_TAG
36
+
37
+ assert requests.present?, 'No manifests were downloaded'
38
+ end
39
+ end
40
+
41
+ test do
42
+ id :bulk_data_v400_submit_consumer_files_retrieved
43
+ title 'Files retrieved'
44
+ description <<~DESCRIPTION
45
+ This test verifies that all files included in the manifest
46
+ were retrieved.
47
+ DESCRIPTION
48
+
49
+ run do
50
+ load_tagged_requests Consumer::FILE_DOWNLOAD_TAG
51
+
52
+ assert requests.present?, 'No files were downloaded'
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BulkDataTestKit
4
+ module BulkDataV400
5
+ module Submit
6
+ module Consumer
7
+ class PollGroup < Inferno::TestGroup
8
+ include URLs
9
+ include Helpers
10
+
11
+ title 'Bulk Data Status Polling Request'
12
+
13
+ description %(
14
+ This group verifies that a Data Consumer returns an in-progress response
15
+ to an initial status poll. Inferno sends the terminal `completed`
16
+ submission immediately after this group, then polls for the final result.
17
+ )
18
+
19
+ id :bulk_data_v400_submit_consumer_poll
20
+
21
+ run_as_group
22
+
23
+ input :smart_jwk_set,
24
+ title: 'Data Consumer JSON Web Key Set (JWKS)',
25
+ description: <<~DESCRIPTION
26
+ The Bulk Submit Data Consumer system's JSON Web Key Set
27
+ including the key(s) Inferno will need to verify signatures on
28
+ token requests made by the client. May be provided as either a
29
+ publicly accessible url containing the JWKS, or the raw JWKS
30
+ JSON.
31
+ DESCRIPTION
32
+
33
+ input :smart_auth_info,
34
+ type: :auth_info,
35
+ options: { mode: 'access' },
36
+ optional: false
37
+
38
+ input :poll_url
39
+
40
+ http_client do
41
+ headers 'Authorization' => "Bearer #{smart_auth_info.access_token}",
42
+ 'Accept' => 'application/json'
43
+ end
44
+
45
+ test do
46
+ id :bulk_data_v400_submit_consumer_initial_poll_status
47
+ title 'Initial Poll Status'
48
+
49
+ description %(
50
+ This test verifies that a provider can poll for status against the Data Consumer under test.
51
+ )
52
+
53
+ run do
54
+ get poll_url
55
+
56
+ assert_response_status(202)
57
+ assert request.response_header('x-export-status').nil?,
58
+ 'The initial poll response included an unexpected `X-Export-Status` header.'
59
+ end
60
+ end
61
+
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BulkDataTestKit
4
+ module BulkDataV400
5
+ module Submit
6
+ module Consumer
7
+ class ProcessingWaitGroup < Inferno::TestGroup
8
+ include URLs
9
+
10
+ title 'Wait For Processing'
11
+
12
+ description %(
13
+ This group pauses after Inferno sends the terminal `completed`
14
+ submission so the tester can allow the Data Consumer to finish
15
+ processing before Inferno begins final status polling.
16
+ )
17
+
18
+ id :bulk_data_v400_submit_consumer_processing_wait
19
+
20
+ run_as_group
21
+
22
+ input :consumer_client_id,
23
+ title: 'Data Consumer Client ID',
24
+ optional: true,
25
+ description: <<~DESCRIPTION
26
+ Client ID of the Bulk Submit Data Consumer system under test.
27
+ If no value is provided, the Inferno session id will be used.
28
+ DESCRIPTION
29
+
30
+ test do
31
+ id :bulk_data_v400_submit_consumer_processing_wait_test
32
+ title 'Wait For Data Consumer Processing'
33
+
34
+ run do
35
+ identifier = consumer_client_id.presence || test_session_id
36
+
37
+ wait(
38
+ identifier:,
39
+ message: %(
40
+ Inferno has sent the terminal `completed` submission. When the
41
+ Data Consumer under test has finished processing and its final
42
+ status poll is ready to return `200`,
43
+ [click here](#{resume_pass_url}?id=#{identifier}).
44
+ ),
45
+ timeout: 900
46
+ )
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'uri'
4
+
5
+ module BulkDataTestKit
6
+ module BulkDataV400
7
+ module Submit
8
+ module Consumer
9
+ class StatusSubmitGroup < Inferno::TestGroup
10
+ include URLs
11
+ include Helpers
12
+
13
+ title 'Bulk Submit Status Operation - Initialize'
14
+
15
+ description %(
16
+ This group verifies that a status submission can be made against the Data Consumer.
17
+
18
+ This group will:
19
+ 1. Using the provided base URL of the Data Consumer system under test, will perform the $bulk-submit-status operation.
20
+ 2. Check that the response contains a `Content-Location` header for status polling.
21
+ )
22
+
23
+ id :bulk_data_v400_submit_consumer_status_submit
24
+
25
+ run_as_group
26
+
27
+ input :smart_auth_info,
28
+ type: :auth_info,
29
+ options: { mode: 'access' },
30
+ optional: false
31
+
32
+ output :poll_url
33
+
34
+ http_client do
35
+ headers 'Authorization' => "Bearer #{smart_auth_info.access_token}",
36
+ 'Content-Type' => 'application/fhir+json'
37
+ end
38
+
39
+ test do
40
+ id :bulk_data_v400_submit_consumer_status_submit_request
41
+ title 'Status Submit'
42
+
43
+ description %(
44
+ This test verifies that a status submission can be made against the Data Consumer.
45
+ )
46
+
47
+ run do
48
+ parameters = status_parameters(submission_id)
49
+
50
+ post "#{consumer_fhir_base_url}/$bulk-submit-status",
51
+ body: parameters.to_json,
52
+ headers: {
53
+ 'Accept' => 'application/fhir+json',
54
+ 'Prefer' => 'respond-async'
55
+ }
56
+
57
+ assert_response_status(202)
58
+
59
+ poll_url = request.response_header('content-location')&.value
60
+ assert poll_url.present?, 'Status response headers did not include "Content-Location".'
61
+
62
+ begin
63
+ parsed_poll_url = URI.parse(poll_url)
64
+ rescue URI::InvalidURIError
65
+ assert false, '"Content-Location" must be an absolute HTTP(S) URL.'
66
+ end
67
+
68
+ assert %w[http https].include?(parsed_poll_url.scheme&.downcase) && parsed_poll_url.host.present?,
69
+ '"Content-Location" must be an absolute HTTP(S) URL.'
70
+
71
+ output poll_url:
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BulkDataTestKit
4
+ module BulkDataV400
5
+ module Submit
6
+ module Consumer
7
+ class SubmitCompletedGroup < Inferno::TestGroup
8
+ include URLs
9
+ include Helpers
10
+
11
+ title 'Bulk Submit Operation - Completed'
12
+
13
+ description %(
14
+ This group verifies that a submission with a status of `completed` can be made against the Data Consumer.
15
+
16
+ This group will:
17
+ 1. Using the provided base URL of the Data Consumer system under test, will perform the $bulk-submit operation with a `submissionStatus` of `completed`.
18
+ 2. Check that the response is valid.
19
+ )
20
+
21
+ id :bulk_data_v400_submit_consumer_submit_completed
22
+
23
+ run_as_group
24
+
25
+ input :smart_auth_info,
26
+ type: :auth_info,
27
+ options: { mode: 'access' },
28
+ optional: false
29
+
30
+ http_client do
31
+ headers 'Authorization' => "Bearer #{smart_auth_info.access_token}",
32
+ 'Content-Type' => 'application/fhir+json'
33
+ end
34
+
35
+ test do
36
+ id :bulk_data_v400_submit_consumer_completed_submit
37
+ title 'Submit Completed Status'
38
+
39
+ description %(
40
+ This test verifies that a submission with a status of `completed` can be made against the Data Consumer.
41
+ )
42
+
43
+ run do
44
+ parameters =
45
+ submit_parameters(
46
+ submission_id,
47
+ base_url,
48
+ status: 'completed',
49
+ oauth_metadata_url: smart_discovery_url
50
+ )
51
+
52
+ post "#{consumer_fhir_base_url}/$bulk-submit",
53
+ body: parameters.to_json,
54
+ headers: {
55
+ 'Accept' => 'application/fhir+json'
56
+ }
57
+
58
+ assert_response_status(200)
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BulkDataTestKit
4
+ module BulkDataV400
5
+ module Submit
6
+ module Consumer
7
+ class SubmitGroup < Inferno::TestGroup
8
+ include URLs
9
+ include Helpers
10
+
11
+ title 'Bulk Submit Operation'
12
+
13
+ description %(
14
+ This group verifies that a submission can be made against the Data Consumer.
15
+
16
+ This group will:
17
+ 1. Using the provided base URL of the Data Consumer system under test, will perform a "kick off" $bulk-submit operation.
18
+ 2. Check that the response is valid.
19
+ )
20
+
21
+ id :bulk_data_v400_submit_consumer_submit
22
+
23
+ run_as_group
24
+
25
+ input :smart_auth_info,
26
+ type: :auth_info,
27
+ options: { mode: 'access' },
28
+ optional: false
29
+
30
+ http_client do
31
+ headers 'Authorization' => "Bearer #{smart_auth_info.access_token}",
32
+ 'Content-Type' => 'application/fhir+json'
33
+ end
34
+
35
+ test do
36
+ id :bulk_data_v400_submit_consumer_manifest_url_submit
37
+ title 'Submit Manifest URL'
38
+
39
+ description %(
40
+ This test verifies that a submission can be made against the Data Consumer.
41
+ )
42
+
43
+ run do
44
+ parameters =
45
+ submit_parameters(
46
+ submission_id,
47
+ base_url,
48
+ status: 'in-progress',
49
+ manifest_url: manifest_url,
50
+ oauth_metadata_url: smart_discovery_url
51
+ )
52
+
53
+ post "#{consumer_fhir_base_url}/$bulk-submit",
54
+ body: parameters.to_json,
55
+ headers: {
56
+ 'Accept' => 'application/fhir+json'
57
+ }
58
+
59
+ assert_response_status(200)
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BulkDataTestKit
4
+ module BulkDataV400
5
+ module Submit
6
+ module Consumer
7
+ MANIFEST_TAG = 'bulk_submit_manifest'
8
+ FILE_DOWNLOAD_TAG = 'bulk_submit_download'
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,116 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'urls'
4
+ require_relative 'helpers'
5
+ require_relative '../shared/jwks'
6
+
7
+ require_relative 'backend_services_group'
8
+ require_relative 'complete_poll_group'
9
+ require_relative 'endpoints/file_download'
10
+ require_relative 'endpoints/manifest'
11
+ require_relative 'manifest_and_file_retrieval'
12
+ require_relative 'poll_group'
13
+ require_relative 'processing_wait_group'
14
+ require_relative 'submit_group'
15
+ require_relative 'submit_completed_group'
16
+ require_relative 'status_submit_group'
17
+
18
+ module BulkDataTestKit
19
+ module BulkDataV400
20
+ module Submit
21
+ module Consumer
22
+ class TestSuite < Inferno::TestSuite
23
+ include URLs
24
+ extend Shared::JWKS
25
+
26
+ title 'Bulk Data Access v4.0.0-ballot Submit - Consumer'
27
+
28
+ description File.read(File.join(__dir__, 'docs', 'suite_description.md'))
29
+
30
+ id :bulk_data_v400_submit_consumer
31
+
32
+ requirement_sets(
33
+ {
34
+ identifier: 'hl7.fhir.uv.smart-app-launch_2.2.0',
35
+ title: 'SMART App Launch',
36
+ actor: 'Server',
37
+ requirements: '30,251,253-256,258,372-374,377,381-383,385,393,394'
38
+ }
39
+ )
40
+
41
+ links [
42
+ {
43
+ label: 'Report Issue',
44
+ url: 'https://github.com/inferno-framework/bulk-data-test-kit/issues/'
45
+ },
46
+ {
47
+ label: 'Open Source',
48
+ url: 'https://github.com/inferno-framework/bulk-data-test-kit/'
49
+ },
50
+ {
51
+ label: 'Download',
52
+ url: 'https://github.com/inferno-framework/bulk-data-test-kit/releases'
53
+ }
54
+ ]
55
+
56
+ input :consumer_fhir_base_url,
57
+ title: 'Bulk Data Consumer Base FHIR URL',
58
+ description: 'The URL Inferno should use as the base for the Data Consumer under test.',
59
+ type: 'text',
60
+ optional: false
61
+
62
+ input :submission_id,
63
+ title: 'Submission ID',
64
+ description: 'Set the submission ID that will be used for the submission flow.',
65
+ type: 'text',
66
+ optional: false,
67
+ default: '123'
68
+
69
+ route(:get, SMART_DISCOVERY_ROUTE, lambda { |_env|
70
+ SMARTAppLaunch::MockSMARTServer.smart_server_metadata(id)
71
+ })
72
+ suite_endpoint :post, SMART_TOKEN_ROUTE, SMARTAppLaunch::MockSMARTServer::TokenEndpoint
73
+
74
+ route(:get, JWKS_ROUTE, jwks_route_handler)
75
+
76
+ config(
77
+ inputs: {
78
+ smart_auth_info: {
79
+ title: 'Bulk Submit Data Provider Client Credentials',
80
+ description: 'Inferno will use these credentials when making requests to the Data Consumer under test.'
81
+ }
82
+ },
83
+ options: {
84
+ post_authorization_uri: "#{Inferno::Application['base_url']}/custom/smart_stu2/post_auth"
85
+ }
86
+ )
87
+
88
+ resume_test_route :get, RESUME_PASS_ROUTE do |request|
89
+ request.query_parameters['id']
90
+ end
91
+
92
+ suite_endpoint :get, MANIFEST_ROUTE, Endpoints::Manifest
93
+ suite_endpoint :get, DOWNLOAD_ROUTE, Endpoints::FileDownload
94
+
95
+ group from: :bulk_data_v400_submit_consumer_backend_services
96
+
97
+ group do
98
+ id :bulk_data_v400_submit_consumer_sequence
99
+ title 'Data Consumer Sequence'
100
+
101
+ run_as_group
102
+
103
+ group from: :bulk_data_v400_submit_consumer_submit
104
+ group from: :bulk_data_v400_submit_consumer_status_submit
105
+ group from: :bulk_data_v400_submit_consumer_poll
106
+ group from: :bulk_data_v400_submit_consumer_submit_completed
107
+ group from: :bulk_data_v400_submit_consumer_processing_wait
108
+ group from: :bulk_data_v400_submit_consumer_poll_complete
109
+
110
+ group from: :bulk_data_v400_submit_consumer_manifest_file_retrieval
111
+ end
112
+ end
113
+ end
114
+ end
115
+ end
116
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BulkDataTestKit
4
+ module BulkDataV400
5
+ module Submit
6
+ module Consumer
7
+ RESUME_PASS_ROUTE = '/resume_pass'
8
+ MANIFEST_ROUTE = '/manifest'
9
+ DOWNLOAD_ROUTE = '/example.ndjson'
10
+ SMART_DISCOVERY_ROUTE = '/.well-known/smart-configuration'
11
+ AUTH_SERVER_ROUTE = '/auth'
12
+ SMART_TOKEN_ROUTE = "#{AUTH_SERVER_ROUTE}/token".freeze
13
+ JWKS_ROUTE = '/.well-known/jwks.json'
14
+
15
+ module URLs
16
+ def base_url
17
+ "#{Inferno::Application['base_url']}/custom/#{suite_id}"
18
+ end
19
+
20
+ def resume_pass_url
21
+ "#{base_url}#{RESUME_PASS_ROUTE}"
22
+ end
23
+
24
+ def manifest_url
25
+ "#{base_url}#{MANIFEST_ROUTE}"
26
+ end
27
+
28
+ def download_url
29
+ "#{base_url}#{DOWNLOAD_ROUTE}"
30
+ end
31
+
32
+ def smart_discovery_url
33
+ "#{base_url}#{SMART_DISCOVERY_ROUTE}"
34
+ end
35
+
36
+ def suite_id
37
+ TestSuite.id
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'smart_app_launch_test_kit'
4
+
5
+ module BulkDataTestKit
6
+ module BulkDataV400
7
+ module Submit
8
+ module Provider
9
+ class ClientRegistrationGroup < Inferno::TestGroup
10
+ id :bulk_data_v400_submit_provider_client_registration
11
+
12
+ title 'Client Registration'
13
+
14
+ config(
15
+ inputs: {
16
+ client_id: {
17
+ title: 'Provider Client ID',
18
+ description: <<~DESCRIPTION
19
+ Client ID of the Bulk Data Submit Provider system under test.
20
+ If no value is provided, the Inferno session id will be used.
21
+ DESCRIPTION
22
+ },
23
+ smart_jwk_set: {
24
+ title: 'Provider JSON Web Key Set (JWKS)',
25
+ description: <<~DESCRIPTION
26
+ The Bulk Data Submit Provider system's JSON Web Key Set
27
+ including the key(s) Inferno will need to verify signatures on
28
+ token requests made by the client. May be provided as either a
29
+ publicly accessible url containing the JWKS, or the raw JWKS
30
+ JSON.
31
+ DESCRIPTION
32
+ }
33
+ }
34
+ )
35
+
36
+ test from: :smart_client_registration_bsca_verification,
37
+ title: 'Verify Provider Client Registration'
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end