davinci_pas_test_kit 0.12.1 → 0.13.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/pas_server_subscription_creation_against_pas_client.json +32 -0
- data/lib/davinci_pas_test_kit/certs/InfernoCA.key +52 -0
- data/lib/davinci_pas_test_kit/certs/InfernoCA.pem +35 -0
- data/lib/davinci_pas_test_kit/certs/TestKit.pem +32 -0
- data/lib/davinci_pas_test_kit/certs/TestKitPrivateKey.key +28 -0
- data/lib/davinci_pas_test_kit/client_suite.rb +141 -100
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_registration/configuration_other_display_test.rb +46 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_registration/configuration_smart_display_test.rb +37 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_registration/configuration_udap_display_test.rb +37 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_registration/other_auth_attest_test.rb +36 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_approval_submit_test.rb +24 -10
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_denial_submit_test.rb +23 -10
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_inquire_must_support_test.rb +21 -9
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_inquire_request_bundle_validation_test.rb +4 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_pended_submit_test.rb +30 -14
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_request_bundle_validation_test.rb +6 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_response_attest.rb +4 -9
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_submit_must_support_test.rb +24 -9
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_subscription_create_test.rb +26 -13
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_subscription_pas_conformance_test.rb +6 -24
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/error_tests/pas_inquiry_error_test.rb +1 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/error_tests/pas_submission_error_test.rb +3 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/notification/pas_subscription_notification_test.rb +24 -20
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/pas_client_approval_group.rb +6 -4
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/pas_client_auth_smart_group.rb +32 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/pas_client_auth_udap_group.rb +31 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/pas_client_denial_group.rb +10 -4
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/pas_client_must_support_group.rb +29 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/pas_client_options.rb +25 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/pas_client_pended_group.rb +11 -4
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/pas_client_registration_group.rb +63 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/pas_client_subscription_setup_group.rb +23 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/pas_client_workflows_group.rb +21 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/pas_server_subscription_input_conformance.rb +35 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/pas_server_subscription_setup.rb +43 -0
- data/lib/davinci_pas_test_kit/descriptions.rb +10 -0
- data/lib/davinci_pas_test_kit/docs/client_suite_description_v201.md +203 -79
- data/lib/davinci_pas_test_kit/docs/demo/PAS Client Suite Demonstration.postman_collection.json +246 -0
- data/lib/davinci_pas_test_kit/docs/server_suite_description_v201.md +21 -10
- data/lib/davinci_pas_test_kit/endpoints/claim_endpoint.rb +13 -1
- data/lib/davinci_pas_test_kit/endpoints/subscription_create_endpoint.rb +13 -1
- data/lib/davinci_pas_test_kit/endpoints/subscription_status_endpoint.rb +10 -1
- data/lib/davinci_pas_test_kit/endpoints/token_endpoint.rb +29 -15
- data/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/metadata.yml +2 -1
- data/lib/davinci_pas_test_kit/generated/v2.0.1/claim/claim_operation_test.rb +1 -1
- data/lib/davinci_pas_test_kit/generated/v2.0.1/claim/metadata.yml +28 -17
- data/lib/davinci_pas_test_kit/generated/v2.0.1/claim_inquiry/claim_inquiry_operation_test.rb +1 -2
- data/lib/davinci_pas_test_kit/generated/v2.0.1/claim_inquiry/client_inquire_request_claim_inquiry_must_support_test.rb +4 -1
- data/lib/davinci_pas_test_kit/generated/v2.0.1/claim_inquiry/metadata.yml +7 -1
- data/lib/davinci_pas_test_kit/generated/v2.0.1/claim_inquiry/server_inquire_request_claim_inquiry_must_support_test.rb +3 -1
- data/lib/davinci_pas_test_kit/generated/v2.0.1/claim_update/client_submit_request_claim_update_must_support_test.rb +9 -3
- data/lib/davinci_pas_test_kit/generated/v2.0.1/claim_update/metadata.yml +28 -17
- data/lib/davinci_pas_test_kit/generated/v2.0.1/claim_update/server_submit_request_claim_update_must_support_test.rb +9 -3
- data/lib/davinci_pas_test_kit/generated/v2.0.1/claiminquiryresponse/metadata.yml +6 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/claiminquiryresponse/server_inquire_response_claiminquiryresponse_must_support_test.rb +1 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/claimresponse/metadata.yml +8 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/claimresponse/server_submit_response_claimresponse_must_support_test.rb +1 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/communication_request/metadata.yml +4 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/metadata.yml +11 -5
- data/lib/davinci_pas_test_kit/generated/v2.0.1/device_request/metadata.yml +2 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/encounter/metadata.yml +6 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/metadata.yml +4 -2
- data/lib/davinci_pas_test_kit/generated/v2.0.1/medication_request/metadata.yml +2 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/metadata.yml +153 -53
- data/lib/davinci_pas_test_kit/generated/v2.0.1/nutrition_order/metadata.yml +2 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/metadata.yml +2 -1
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/server_pas_inquiry_request_bundle_validation_test.rb +0 -2
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_response_bundle/metadata.yml +2 -1
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_response_bundle/server_pas_inquiry_response_bundle_validation_test.rb +2 -3
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/metadata.yml +2 -1
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/server_pas_request_bundle_validation_test.rb +0 -2
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_response_bundle/metadata.yml +2 -1
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_response_bundle/server_pas_response_bundle_validation_test.rb +2 -3
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_approval_use_case_group.rb +0 -1
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_denial_use_case_group.rb +0 -1
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_must_support_use_case_group.rb +3 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_pended_use_case_group.rb +10 -3
- data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/metadata.yml +2 -1
- data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/metadata.yml +4 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/metadata.yml +4 -2
- data/lib/davinci_pas_test_kit/generated/v2.0.1/server_suite.rb +8 -5
- data/lib/davinci_pas_test_kit/generated/v2.0.1/service_request/metadata.yml +2 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/task/metadata.yml +4 -0
- data/lib/davinci_pas_test_kit/generator/group_generator.rb +20 -4
- data/lib/davinci_pas_test_kit/generator/group_metadata_extractor.rb +2 -2
- data/lib/davinci_pas_test_kit/generator/ig_resources.rb +4 -0
- data/lib/davinci_pas_test_kit/generator/must_support_test_generator.rb +14 -3
- data/lib/davinci_pas_test_kit/generator/operation_test_generator.rb +16 -3
- data/lib/davinci_pas_test_kit/generator/templates/group.rb.erb +10 -3
- data/lib/davinci_pas_test_kit/generator/templates/must_support.rb.erb +3 -0
- data/lib/davinci_pas_test_kit/generator/templates/operation.rb.erb +4 -1
- data/lib/davinci_pas_test_kit/generator/templates/suite.rb.erb +8 -5
- data/lib/davinci_pas_test_kit/generator/templates/validation.rb.erb +5 -4
- data/lib/davinci_pas_test_kit/generator/validation_test_generator.rb +12 -1
- data/lib/davinci_pas_test_kit/must_support_test.rb +2 -202
- data/lib/davinci_pas_test_kit/pas_bundle_validation.rb +4 -4
- data/lib/davinci_pas_test_kit/pas_subscription_verification.rb +30 -0
- data/lib/davinci_pas_test_kit/requirements/davinci-pas-test-kit_out_of_scope_requirements.csv +11 -0
- data/lib/davinci_pas_test_kit/requirements/davinci-pas-test-kit_requirements.csv +214 -0
- data/lib/davinci_pas_test_kit/requirements/generated/davinci-pas-test-kit_requirements_coverage.csv +214 -0
- data/lib/davinci_pas_test_kit/session_identification.rb +45 -0
- data/lib/davinci_pas_test_kit/tags.rb +1 -0
- data/lib/davinci_pas_test_kit/urls.rb +61 -9
- data/lib/davinci_pas_test_kit/version.rb +2 -2
- data/lib/davinci_pas_test_kit.rb +1 -0
- data/lib/inferno_requirements_tools/ext/inferno_core/runnable.rb +22 -0
- data/lib/inferno_requirements_tools/tasks/requirements_coverage.rb +284 -0
- data/lib/requirements_config.yaml +17 -0
- metadata +62 -10
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_token_request_test.rb +0 -31
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_token_validation_test.rb +0 -18
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/pas_client_authentication_group.rb +0 -49
- data/lib/davinci_pas_test_kit/generator/must_support_metadata_extractor.rb +0 -327
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bcd1fe3d909acb2221969db4b45584b4ae3f2561b4e08cb312862f577ce80c4b
|
4
|
+
data.tar.gz: a6c61fe356af3382dc1b9f6da2c7c512a02840e94b55a69ae492c7945b60e8d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d52966e92c12af47546cb76ea555d3c1ba293d050cd261519401547c332d9749cceb62ce9df47d57a85b32bd85034b2475615ace06ccaa09e4ca6d54b7c0c1fc
|
7
|
+
data.tar.gz: 896f31d121de68770e0a13350a378d4e1a665346c2e18b7f555b61d2d2e4c3a3b99669a55058fc27fa54fc89b0c7abac4282ad7eb8e4ba72e39dc005ee09037b
|
@@ -0,0 +1,32 @@
|
|
1
|
+
{
|
2
|
+
"title": "Subscription Creation Against PAS Client Tests",
|
3
|
+
"id": "pas-server-subscription-creation-against-pas-client-tests",
|
4
|
+
"test_suite_id": "davinci_pas_server_suite_v201",
|
5
|
+
"inputs": [
|
6
|
+
{
|
7
|
+
"name": "server_endpoint",
|
8
|
+
"description": "Insert the FHIR server endpoint URL for PAS",
|
9
|
+
"title": "FHIR Server Endpoint URL",
|
10
|
+
"type": "text",
|
11
|
+
"value": "http://localhost:4567/custom/davinci_pas_client_suite_v201/fhir"
|
12
|
+
},
|
13
|
+
{
|
14
|
+
"name": "smart_credentials",
|
15
|
+
"type": "auth_info",
|
16
|
+
"title": "OAuth Credentials",
|
17
|
+
"value": "{\"access_token\":\"SAMPLE_TOKEN\"}"
|
18
|
+
},
|
19
|
+
{
|
20
|
+
"name": "access_token",
|
21
|
+
"type": "text",
|
22
|
+
"title": "Access Token",
|
23
|
+
"value": "SAMPLE_TOKEN"
|
24
|
+
},
|
25
|
+
{
|
26
|
+
"name": "subscription_resource",
|
27
|
+
"type": "textarea",
|
28
|
+
"title": "Workflow Subscription Resource",
|
29
|
+
"value": "{\n \"resourceType\" : \"Subscription\",\n \"meta\" : {\n \"profile\" : [\"http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-subscription\"]\n },\n \"status\" : \"requested\",\n \"end\" : \"2020-12-31T12:00:00Z\",\n \"reason\" : \"R4 Topic-Based Workflow Subscription for Patient Admission\",\n \"criteria\" : \"http://hl7.org/fhir/us/davinci-pas/SubscriptionTopic/PASSubscriptionTopic\",\n \"_criteria\" : {\n \"extension\" : [{\n \"url\" : \"http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-filter-criteria\",\n \"valueString\" : \"Encounter.patient=Patient/123\"\n }]\n },\n \"channel\" : {\n \"extension\" : [{\n \"url\" : \"http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-timeout\",\n \"valueUnsignedInt\" : 60\n },\n {\n \"url\" : \"http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-max-count\",\n \"valuePositiveInt\" : 20\n }],\n \"type\" : \"rest-hook\",\n \"header\": [\"Authorization: Bearer SAMPLE_TOKEN\"],\n \"endpoint\" : \"http://localhost:4567/custom/subscriptions_r5_backport_r4_server/subscription/channel/notification_listener\",\n \"payload\" : \"application/fhir+json\",\n \"_payload\" : {\n \"extension\" : [{\n \"url\" : \"http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-payload-content\",\n \"valueCode\" : \"id-only\"\n }]\n }\n }\n}"
|
30
|
+
}
|
31
|
+
]
|
32
|
+
}
|
@@ -0,0 +1,52 @@
|
|
1
|
+
-----BEGIN PRIVATE KEY-----
|
2
|
+
MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQC6lH0mfCT1ewJC
|
3
|
+
or6Dl3uD7TpLraeyzKytROCjfjD5pg0WoezMo7LUkXZAKIWqq2L3TqAVqmUzMzZR
|
4
|
+
kkCxUeUAS9fMlH+1dItv3LxqABwLwisvMk7DXPddmsmghSuFtSsZXAnTx+qQtwKq
|
5
|
+
32d8ZdZK3b7Qz1GDeCwjmfwSpuC3u+NwDAtqZa2yEXdFv+b/bNzoSJ2GeuIZtwt9
|
6
|
+
K4g7UU3AJfaRC9+gHzAT0OzGSyXw591Hyk37XvSeXFIawY0axCggAMMrDEcDU1ZR
|
7
|
+
/4zVvfn1UYKNx7jScatNJrRWiElt+SZv0uIoEkscZJZq277eOe6csDv6H6TQb9Fy
|
8
|
+
2wSqrrazoaNTIxq77CdUckISvzZmsFWb36SaHYbJUw6SXNjrF4QRbolbb113svwM
|
9
|
+
wguJ+jDzVhXgv5MdAVrhnghoNl+8I6H1CG34meVGpqyCT+n+tqLuELsJ/XMKU5Mw
|
10
|
+
X7wL2zSgoFpM15vUNv+foU01DUgrXAxjq/dg+9iyP+ZMrMDSiEr5P/iVmAhWkzJE
|
11
|
+
SPFqtQNz7t+xMpWNjeLVmTSXQZz8Os74aC7wmcN6JwaZK39a3DLeYAjbMufLDe+N
|
12
|
+
IhkvteyeBOHfMub1jviBffzddPGUJzBbiTyaliNE0RIVyTIzY5UFqKxR2AGoDFK7
|
13
|
+
lZfBMvTNaawZhYN0jxyTaaP/7c7G2wIDAQABAoICAAbs2QJTLEoCQVC42qpmtnps
|
14
|
+
lTPW47kSuLwLqOzYk7fIbobvBquHzezu4z05Y9C0YM1+GRoEw5HVbkgzzfvm5sGO
|
15
|
+
jxl0T5MsGrrRrhqfG2tiTxkG3H6K1lGem6o+FyH02f8sd97o9i9d45b1CNHIs93+
|
16
|
+
ggUdFND05mqB3iXRFNks+6GeiNPvpzVLSaqIl2nWoBJtE4+4wuiibyY7tehBucmO
|
17
|
+
fyreDnRShAXQROGNS4C4EnIGM8PHP/wawB9nHLYoHrclYBkacQ5SCwurGQ6b6Qmu
|
18
|
+
d1KM3bLN7kZEUABAOb1/uGoBIUzMdQY+Q4j+1ARKkS02q1s6znLAG72QHIm7R2Ou
|
19
|
+
DNIotnQe7HB0U12cyt5r2n/Jq7sr/tTKUKqsm0YJ1Ne4bwPnTMBcuVn8c3hwvp8E
|
20
|
+
/qlw9zZAh4oki6Zh4o/bTcB7ToYUTbbbtwloumoyKBDCHl8MDNHN8dHmDk+SG/pp
|
21
|
+
+PWWV78WWKPTDufsnOHRKMh06Yn6vyeAL1BrnyY5cjsFH/ddxqx9/2IOgg6UP7n4
|
22
|
+
SLQVVAypkgRh6KyXaeeGpnUkJzfPIct6hAzrFEteZKrqjumD1D/TrSzsKaBUlABp
|
23
|
+
pvq3vqxuU03EHra22fbNsEX1Hb0IgkHJf+HL+q1WbwhuA+1Rlp6IAgCMI0G+nwdf
|
24
|
+
T88KiXaknBXWHxU+C4R5AoIBAQD+OHCwkrWFHFHKZpYUU4Z1lDDQhKLsaL39AQC0
|
25
|
+
gbxX0Pk7EB1Lrfanny2ZMZico4oUmL3fhnvC5VZQN8S/DaWN9YU2YaAicjkD6ShF
|
26
|
+
h7nTS4raodKYr3PhnmOvC5+x2DKJsZila/5A9f2hk7GkSafYTQGghvegHGFi8eGR
|
27
|
+
uFcl3oixKqKJapKP+ECgdWKX2/3AnY4vHVIozxcww4oickynvrqWgwGgDz75EJj/
|
28
|
+
JIg8Vrv114Yc7qkagr5Y1tOqbfcbNTdXhOsDvc/avSUt8KOmk+387lGjmizgEWFL
|
29
|
+
1REW7xua6pi7K/N2m9IHLG9Q6fnLsxiMwIDL5Hpv1xIQ7CyzAoIBAQC74tZ/ujCr
|
30
|
+
fw1PUMkA7FM8L0aFuuXNnHY/AneU4FmEuWdQSPQ6CHf/But+XVkp31Ban1ixW80a
|
31
|
+
su84ydupUPUvQxzU1ih+oKiPCpZQ6gnkhi0mglXRElLaL1SR78O7HYu4HOJdguDy
|
32
|
+
9jKh7iLL45RL2pNh5T20po61nSl+iBp/5V2hK6r+Z6SvajWN2LAMEqdGVyV7vypw
|
33
|
+
Nr3WQVL+LIiulfkIM5gCUqkfzYrQuDrmKEv2IR4SXf1+FJrd1CwjdHHNYDYeskTz
|
34
|
+
+PYABXxw0YMI/vii6YAe3UFupLFY2QXEbTQWCIP2y+fFfZo9+5DUiuf/gzOOd5SQ
|
35
|
+
XQsCcFS5E2E5AoIBAG0XFSyAWEqdo2+CZCamzQ1JoUTplexy6gxW0NGk1oiskTbK
|
36
|
+
LHgcV7sIcI3LnZyiBQ/fl6MC17sDpO1ZcSE3HvLzB84VSJ1ffJ30AKcNni1Qvm4h
|
37
|
+
gPiqWcTYrhggmc+8Ybt6rXFXDU0dAlDCyzkfrloAeZFEOaDIbPYDq/NXMnZ6rxev
|
38
|
+
nv3u8KO9OSZiGQPnkFWGhswq/eWrMF1pm646dDCLhRAveZQQ1soUWEMsjxWtdo0B
|
39
|
+
hniF5aUNs9b1oPECrUZMqMnyrNL3MenAvuKe3+sMkdS3A+t7roQckS70aJf51VO+
|
40
|
+
FfpD2v7r0M3pQH9tWBcUbJWBygM0sWGq3gLLBkcCggEABXD6WVShGDZjwkpKp/Yw
|
41
|
+
KuwLlM/m29+OJSEDKZKdxRRBg7e5Kv0XzJD8vPojHO1UvGsk/G32MLHB79kYvXyU
|
42
|
+
vTuqWBejsJciipH57Hn6s12XbSgVKCrpr1vzjQ5ukrq2Uyyy+ZZSwXaT3NCyvUjo
|
43
|
+
AJJh9lHXSaYRN/1HOFzkt5OC9Kn5F8kUoefniSYfYxofMhBQC5druTg8ozndF3Ne
|
44
|
+
uf+p6Kzl2BtgvoULYiQTwJqmKIipAEssjjw2h/ofFR/IM/R3XMg46v/oz/NYuUO4
|
45
|
+
EciglsdAaKRrwrKOWE5gtmGbQpAYkksxeSy8DNN+TEmBkorQMW4RJWUsbnOmYH3J
|
46
|
+
MQKCAQEAkCfKAaRFeTQVSjE23+Qx8QKoQoA6xFwzJJcl4yLvj3c0STLqoJqs3+0b
|
47
|
+
tQCMoVNmP3u8LwMPOCTcArHAF9oaqrcimrUZwVT8NllP1guR6a0SdRPK1wGhm2He
|
48
|
+
Ur6gZtkylcKwskS3ER1crVEsAVfvZSryPwPM+z3bxcATUgPK1j3xt0Bot6Y+uJgX
|
49
|
+
n2Zn8bVwWUwXTPzSqXKfJvfZWWO4BhwFl41xR6n8LKwmLjh082+5wHdDLBU5zgJv
|
50
|
+
pdd659dbH5eqdDCSG3hgG+Q0ylh1fsF25Hq3gLznsU7eu3LUoUOeAi6NvtgIFIMs
|
51
|
+
tbg7yWJO968aAfYz/sU2dfXaRuLD1w==
|
52
|
+
-----END PRIVATE KEY-----
|
@@ -0,0 +1,35 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIGDTCCA/WgAwIBAgIUeD85cIG8zgCvXxeKCdVjOkyK7uMwDQYJKoZIhvcNAQEL
|
3
|
+
BQAwgYUxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJNQTEQMA4GA1UEBwwHQmVkZm9y
|
4
|
+
ZDEQMA4GA1UECgwHSW5mZXJubzEcMBoGA1UEAwwTSW5mZXJuby1QMlAtUm9vdC1D
|
5
|
+
QTEnMCUGCSqGSIb3DQEJARYYaW5mZXJub0Bncm91cHMubWl0cmUub3JnMB4XDTI1
|
6
|
+
MDIwNzEzMzI0OVoXDTM1MDIwNTEzMzI0OVowgYUxCzAJBgNVBAYTAlVTMQswCQYD
|
7
|
+
VQQIDAJNQTEQMA4GA1UEBwwHQmVkZm9yZDEQMA4GA1UECgwHSW5mZXJubzEcMBoG
|
8
|
+
A1UEAwwTSW5mZXJuby1QMlAtUm9vdC1DQTEnMCUGCSqGSIb3DQEJARYYaW5mZXJu
|
9
|
+
b0Bncm91cHMubWl0cmUub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC
|
10
|
+
AgEAupR9Jnwk9XsCQqK+g5d7g+06S62nssysrUTgo34w+aYNFqHszKOy1JF2QCiF
|
11
|
+
qqti906gFaplMzM2UZJAsVHlAEvXzJR/tXSLb9y8agAcC8IrLzJOw1z3XZrJoIUr
|
12
|
+
hbUrGVwJ08fqkLcCqt9nfGXWSt2+0M9Rg3gsI5n8Eqbgt7vjcAwLamWtshF3Rb/m
|
13
|
+
/2zc6EidhnriGbcLfSuIO1FNwCX2kQvfoB8wE9Dsxksl8OfdR8pN+170nlxSGsGN
|
14
|
+
GsQoIADDKwxHA1NWUf+M1b359VGCjce40nGrTSa0VohJbfkmb9LiKBJLHGSWatu+
|
15
|
+
3jnunLA7+h+k0G/RctsEqq62s6GjUyMau+wnVHJCEr82ZrBVm9+kmh2GyVMOklzY
|
16
|
+
6xeEEW6JW29dd7L8DMILifow81YV4L+THQFa4Z4IaDZfvCOh9Qht+JnlRqasgk/p
|
17
|
+
/rai7hC7Cf1zClOTMF+8C9s0oKBaTNeb1Db/n6FNNQ1IK1wMY6v3YPvYsj/mTKzA
|
18
|
+
0ohK+T/4lZgIVpMyREjxarUDc+7fsTKVjY3i1Zk0l0Gc/DrO+Ggu8JnDeicGmSt/
|
19
|
+
Wtwy3mAI2zLnyw3vjSIZL7XsngTh3zLm9Y74gX383XTxlCcwW4k8mpYjRNESFcky
|
20
|
+
M2OVBaisUdgBqAxSu5WXwTL0zWmsGYWDdI8ck2mj/+3OxtsCAwEAAaNzMHEwHQYD
|
21
|
+
VR0OBBYEFLcwjOuPsSAg5iRXeYiEl7U1OowfMB8GA1UdIwQYMBaAFLcwjOuPsSAg
|
22
|
+
5iRXeYiEl7U1OowfMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgGGMBEGA1Ud
|
23
|
+
IAQKMAgwBgYEVR0gADANBgkqhkiG9w0BAQsFAAOCAgEAJ/EUPAdACrA2QdC7bnTZ
|
24
|
+
+VHUiHW21UobVvFpRmeFSZj/uCDpKv/pm0gaXY44Tkic6WtaG3ilMOk3ueZE4b/S
|
25
|
+
OjlL4LJ+s3XT9Upx7cFWx4W5wPhJfhuh+Rp3xdXkEEETzBtY4io4i67b7CZ/Uuh4
|
26
|
+
ds2aeDobVxg64HBTuKrFUbuWqyo3Iy0Uu8gUXK5pJ2uoaQlr6zYadjPp3Mea3CHI
|
27
|
+
aI9eajYroCFsa79KwRaDTYhgD+jugtqpjEy/WO7scqLBYjCHs8BhS3dQ1PxEQf+2
|
28
|
+
XnO+Jugw9LkVSm47VySeo31J0B67S/Ue9WBNn6tkF+XYXMmVybFf+U7uMSentMGZ
|
29
|
+
O5+gVAvk6kTu2VgTf2mC/3vBeB2zxQU2n1T/b1F6d9fmNnEsLTA7j0eClbi9gE0a
|
30
|
+
7bKQqzaOz1+Ok34eO9lXeOGWOuVKaLFBgxeegbNXQ6tqnA11vGL+mwe4Irwcd0qR
|
31
|
+
Deu/wTUot8aFmEOZQo3DpR8s69FdbYHtAcQ3ygb3ddq3Sx29be4ZSMnYV2zIR1Md
|
32
|
+
ED23wtWw+YiZmYWxMjGHVojdWcuHKBxfCOHN0h4y9SJRqUD/3zoQP47O1VpxH3TY
|
33
|
+
CXpj2DAEu5UWLtfrpBjOW1RKp+MMDFaCTAv9n3tQZ2Qbmrtbw8Ac4IZGlslZyCQF
|
34
|
+
ScZNbTfukq9AETyyB0BmWm4=
|
35
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,32 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIFlTCCA32gAwIBAgIUBZi9O27NwJC28apoBJDcNgriNz8wDQYJKoZIhvcNAQEL
|
3
|
+
BQAwgYUxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJNQTEQMA4GA1UEBwwHQmVkZm9y
|
4
|
+
ZDEQMA4GA1UECgwHSW5mZXJubzEcMBoGA1UEAwwTSW5mZXJuby1QMlAtUm9vdC1D
|
5
|
+
QTEnMCUGCSqGSIb3DQEJARYYaW5mZXJub0Bncm91cHMubWl0cmUub3JnMB4XDTI1
|
6
|
+
MDIwNzEzMzI1MFoXDTM1MDIwNTEzMzI1MFowaTELMAkGA1UEBhMCVVMxCzAJBgNV
|
7
|
+
BAgMAk1BMRAwDgYDVQQHDAdCZWRmb3JkMRAwDgYDVQQKDAdJbmZlcm5vMSkwJwYD
|
8
|
+
VQQDDCBQYXllciB0byBQYXllciBTZXJ2ZXIgU2ltdWxhdGlvbjCCASIwDQYJKoZI
|
9
|
+
hvcNAQEBBQADggEPADCCAQoCggEBAOaiFxMO+o76qVNKfGUIeqSRxfli/jAe7Q7g
|
10
|
+
2N14sQEHNtAiIlMIXQT73UMHM9/N5X+akkESwlkQ0/wXx23RDuLCCJKM7nwrh+n4
|
11
|
+
JF+eX7LBovJEV2bW1C2Xo/zycEKMo8dfdF9Feb+K33cWSF3LGA2UFuYfQ8T/WRDx
|
12
|
+
1GFOqekQ0nBIzssGrZ9o/oEdHU3avu4I1bTTBp5NnORP9bGfJF8r4eapZbFidpG5
|
13
|
+
5kz9YeP4hMjU8c3MIsqpUF2ZILU2nvdlW2HC8SdcKBuHXk3JeqQ82wrHqkduN0LT
|
14
|
+
xw+S/Okoffm8g5OFpxWUQHCXrjsdpTcvRx91tNR/PE86lQIyJI8CAwEAAaOCARYw
|
15
|
+
ggESMEkGA1UdEQRCMECGPmh0dHBzOi8vaW5mZXJuby5oZWFsdGhpdC5nb3Yvc3Vp
|
16
|
+
dGVzL2N1c3RvbS9nMzNfdGVzdF9zdWl0ZS9maGlyMDEGA1UdJQQqMCgGCCsGAQUF
|
17
|
+
BwMBBggrBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEMDoGA1UdHwQzMDEwL6At
|
18
|
+
oCuGKWh0dHBzOi8vaW5mZXJuby5jb20vbW9ja19jcmxfZW5kcG9pbnQuY3JsMAkG
|
19
|
+
A1UdEwQCMAAwCwYDVR0PBAQDAgeAMB0GA1UdDgQWBBRcKEh8tAM2/D0KmqO0UfxH
|
20
|
+
bDjGtTAfBgNVHSMEGDAWgBS3MIzrj7EgIOYkV3mIhJe1NTqMHzANBgkqhkiG9w0B
|
21
|
+
AQsFAAOCAgEAcgeZ3tuBJA3tHTB115scynQOoG69JiK4UdIwcro9sgwif7LWVIpP
|
22
|
+
L44ThJiriMNpFiEXtXXCzsvDfXabknOn6XuS0h+b2HLo6h7dWUY1VVqXpHXkux5L
|
23
|
+
HCQ5Hu1KHUXstZ1P+WMRaHnApuvmMq+nP2Bmjtpy83zZBX62JQR9xjolwYaN1EVS
|
24
|
+
GL4jNxY1Nlo/X1HySIky2ovuAZUcDv6PUGggzihvRR7qwLAxTdeUtmurWvxvZjVT
|
25
|
+
vHTXkFAsa3wUh/AebH9Qx02c0WPk2PSuy3gODGdv7T2BHGKga//EtTKR40GrkuHC
|
26
|
+
R4VplchOCkQDQHTAlYpgMDKDyrsTY+Yjp8UGxdanIYF6XNLqu1ZyWXkwx/+y1jTX
|
27
|
+
Uc6RQ5XvqTVEPhifBaNKVWRulThkmfL75PPLel+i2lsZDqsKlY+Iy2/ZOAhMYrBx
|
28
|
+
EiFgXU5C2QT6oTdBL52LRcQF91ROt8/MPrTrdAYrD8Lj0tKH6/zqe36qyJGm4KUX
|
29
|
+
Ypb1lbSSK0HjTN/BNQJnnRj2xe+jWoksHns7mS16W5UBx1C7K85BkufyGfx72ps8
|
30
|
+
SBqeSwCMJQG/XNeR/TLFMEIPfI0JLBYVaR5dwOn5izKB2IUUwrKq7fWDLtlL3aJ0
|
31
|
+
m9AQT/lJ1rtRtwhcT3owDUZdpl2E/EnpqsclHLGmKY/hTomRFORtxUQ=
|
32
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,28 @@
|
|
1
|
+
-----BEGIN PRIVATE KEY-----
|
2
|
+
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDmohcTDvqO+qlT
|
3
|
+
SnxlCHqkkcX5Yv4wHu0O4NjdeLEBBzbQIiJTCF0E+91DBzPfzeV/mpJBEsJZENP8
|
4
|
+
F8dt0Q7iwgiSjO58K4fp+CRfnl+ywaLyRFdm1tQtl6P88nBCjKPHX3RfRXm/it93
|
5
|
+
FkhdyxgNlBbmH0PE/1kQ8dRhTqnpENJwSM7LBq2faP6BHR1N2r7uCNW00waeTZzk
|
6
|
+
T/WxnyRfK+HmqWWxYnaRueZM/WHj+ITI1PHNzCLKqVBdmSC1Np73ZVthwvEnXCgb
|
7
|
+
h15NyXqkPNsKx6pHbjdC08cPkvzpKH35vIOThacVlEBwl647HaU3L0cfdbTUfzxP
|
8
|
+
OpUCMiSPAgMBAAECggEAHu2Io50kG41grJM2CERxUeVcg5tzU9ep2Y9sdZKsReOG
|
9
|
+
RbX2HWVnN/Zgjw8FtVMCnjCHwWM3HcOEce9sZn0c/mqfxKtSheM+iDEnC42M7sdJ
|
10
|
+
xyxD/j372RtXOeH3DO2YPvG9hNMnxvhkDC+4R5+nG5cK1RRHPcEyW/PaE6x9W4wN
|
11
|
+
SJEgsUr/0/xU6TjN5SWjp570uVdQQsnPBrlRJvKZzSMRz/ltndXBpA3iUGhuTHng
|
12
|
+
7ptkF7GV5cQGzvpbuyckmrjtSVVUF6/LQVStaVc5w3igCcNueICAOqH5KnDHtaUe
|
13
|
+
uVX3/D20YXiTY/AGsyEHl0EpnC4enYPhOWy2YpxktQKBgQD0etIofs0cOkWT9a2B
|
14
|
+
z00Cc6KFyMlAvb5TterdWzjD1HvsIlHyjCTVYMtVx2sw9qFZbU3CJkvyVdcTXbCY
|
15
|
+
q0+uP3WKAUObwqXJ6xpvGliB4K/S2A4YjCb3Uo8vUcRe5vK1mSW9gZS5sXYdi1WJ
|
16
|
+
IWynx8ELULS2MXIy8W/xl8PxswKBgQDxgDyLV1i3xd77DU0dg1Czxoohe1ZKs80P
|
17
|
+
K4BKY0+tqxja3XVVXjTGcCQbgI3B61cKfGQFi8ANSZTcgoDTfzkErP95dUcO/PzG
|
18
|
+
O/ZqhJczUmrOIf29IrsPUYJWZKFcaZCNa+od7niXivofU6yXv1sRUnRXD/eLbYqI
|
19
|
+
JDDbgjw7tQKBgQDMEm20kcvCgT2s+QlA7vp4Tm/ePrEHUps5owOOjGPAy3A5tpgy
|
20
|
+
3xqr5mU0kAaA043xaNTceD0y5sZmCvGrLmyPpbcGYHG/5eWfu5jQHuy8VQJO/Dwf
|
21
|
+
73VjQ030EMva7+qu/UxMeIrdyi0vEixvEDBziMEyIccGwhVyQqjPwIA2EwKBgAD5
|
22
|
+
C0VkbK8Q1P0d6Jmd1c1jl1rbLFXQs5rEChhCnieM8OSwz7AwWPYTrZGOywNk90zL
|
23
|
+
g3uiPHvROBBLVkmD0a77I2xR1J9y1XHW+/8h2ZoTUurRqDwCz84X/fZrIVtF8Zcg
|
24
|
+
QCkutL2niapmo+NYmf1P37gaEF03a79wpeG8fJGhAoGAT7GaqlSqp0SvFRsWlvtA
|
25
|
+
vDq4PuSWXsLMpZGrJTClIqvOsSWzfkhDfvh40TtVERQTu/fIgvVcHH+EYWDmKq9c
|
26
|
+
ZU996W/upEZsUfq4hdSdcw0bXX9Frz6gbf2Fi+x3i3UtrvHbtukadPIirhxWuUo8
|
27
|
+
1530zLLw5Ff3whhd4zG5KeE=
|
28
|
+
-----END PRIVATE KEY-----
|
@@ -1,4 +1,6 @@
|
|
1
1
|
require 'subscriptions_test_kit'
|
2
|
+
require 'udap_security_test_kit'
|
3
|
+
require 'smart_app_launch_test_kit'
|
2
4
|
require_relative 'validator_suppressions'
|
3
5
|
require_relative 'tags'
|
4
6
|
require_relative 'urls'
|
@@ -6,124 +8,163 @@ require_relative 'endpoints/claim_endpoint'
|
|
6
8
|
require_relative 'endpoints/token_endpoint'
|
7
9
|
require_relative 'endpoints/subscription_create_endpoint'
|
8
10
|
require_relative 'endpoints/subscription_status_endpoint'
|
9
|
-
require_relative 'custom_groups/v2.0.1/
|
10
|
-
require_relative 'custom_groups/v2.0.1/
|
11
|
-
require_relative 'custom_groups/v2.0.1/
|
12
|
-
require_relative 'custom_groups/v2.0.1/
|
13
|
-
require_relative 'custom_groups/v2.0.1/
|
14
|
-
require_relative 'custom_groups/v2.0.1/
|
15
|
-
require_relative '
|
16
|
-
require_relative '
|
11
|
+
require_relative 'custom_groups/v2.0.1/pas_client_options'
|
12
|
+
require_relative 'custom_groups/v2.0.1/pas_client_workflows_group'
|
13
|
+
require_relative 'custom_groups/v2.0.1/pas_client_must_support_group'
|
14
|
+
require_relative 'custom_groups/v2.0.1/pas_client_subscription_setup_group'
|
15
|
+
require_relative 'custom_groups/v2.0.1/pas_client_registration_group'
|
16
|
+
require_relative 'custom_groups/v2.0.1/pas_client_auth_smart_group'
|
17
|
+
require_relative 'custom_groups/v2.0.1/pas_client_auth_udap_group'
|
18
|
+
require_relative 'descriptions'
|
17
19
|
|
18
20
|
module DaVinciPASTestKit
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
21
|
+
module DaVinciPASV201
|
22
|
+
class ClientSuite < Inferno::TestSuite
|
23
|
+
id :davinci_pas_client_suite_v201
|
24
|
+
title 'Da Vinci PAS Client Suite v2.0.1'
|
25
|
+
description File.read(File.join(__dir__, 'docs', 'client_suite_description_v201.md'))
|
23
26
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
27
|
+
links [
|
28
|
+
{
|
29
|
+
label: 'Report Issue',
|
30
|
+
url: 'https://github.com/inferno-framework/davinci-pas-test-kit/issues/'
|
31
|
+
},
|
32
|
+
{
|
33
|
+
label: 'Open Source',
|
34
|
+
url: 'https://github.com/inferno-framework/davinci-pas-test-kit/'
|
35
|
+
},
|
36
|
+
{
|
37
|
+
label: 'Download',
|
38
|
+
url: 'https://github.com/inferno-framework/davinci-pas-test-kit/releases'
|
39
|
+
},
|
40
|
+
{
|
41
|
+
label: 'Implementation Guide',
|
42
|
+
url: 'https://hl7.org/fhir/us/davinci-pas/STU2/'
|
43
|
+
}
|
44
|
+
]
|
42
45
|
|
43
|
-
|
44
|
-
|
46
|
+
fhir_resource_validator do
|
47
|
+
igs 'hl7.fhir.us.davinci-pas#2.0.1'
|
45
48
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
49
|
+
exclude_message do |message|
|
50
|
+
# Messages expected of the form `<ResourceType>: <FHIRPath>: <message>`
|
51
|
+
# We strip `<ResourceType>: <FHIRPath>: ` for the sake of matching
|
52
|
+
SUPPRESSED_MESSAGES.match?(message.message.sub(/\A\S+: \S+: /, ''))
|
53
|
+
end
|
50
54
|
end
|
51
|
-
end
|
52
55
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
56
|
+
suite_option :client_type,
|
57
|
+
title: 'Client Security Type',
|
58
|
+
list_options: [
|
59
|
+
{
|
60
|
+
label: 'SMART Backend Services',
|
61
|
+
value: PASClientOptions::SMART_BACKEND_SERVICES_CONFIDENTIAL_ASYMMETRIC
|
62
|
+
},
|
63
|
+
{
|
64
|
+
label: 'UDAP B2B Client Credentials',
|
65
|
+
value: PASClientOptions::UDAP_CLIENT_CREDENTIALS
|
66
|
+
},
|
67
|
+
{
|
68
|
+
label: 'Other Authentication',
|
69
|
+
value: PASClientOptions::OTHER_AUTH
|
70
|
+
}
|
71
|
+
]
|
61
72
|
|
62
|
-
|
63
|
-
|
64
|
-
|
73
|
+
route(:get, UDAPSecurityTestKit::UDAP_DISCOVERY_PATH, lambda { |_env|
|
74
|
+
UDAPSecurityTestKit::MockUDAPServer.udap_server_metadata(id)
|
75
|
+
})
|
76
|
+
route(:get, SMARTAppLaunch::SMART_DISCOVERY_PATH, lambda { |_env|
|
77
|
+
SMARTAppLaunch::MockSMARTServer.smart_server_metadata(id)
|
78
|
+
})
|
65
79
|
|
66
|
-
|
67
|
-
|
68
|
-
|
80
|
+
suite_endpoint :post, UDAPSecurityTestKit::REGISTRATION_PATH,
|
81
|
+
UDAPSecurityTestKit::MockUDAPServer::RegistrationEndpoint
|
82
|
+
suite_endpoint :post, UDAPSecurityTestKit::TOKEN_PATH, MockUdapSmartServer::TokenEndpoint
|
69
83
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
that will tell the Payer how to notify the client when pended claims
|
85
|
-
are updated.
|
86
|
-
)
|
87
|
-
run_as_group
|
84
|
+
suite_endpoint :post, SUBMIT_PATH, ClaimEndpoint
|
85
|
+
suite_endpoint :post, SESSION_SUBMIT_PATH, ClaimEndpoint
|
86
|
+
suite_endpoint :post, INQUIRE_PATH, ClaimEndpoint
|
87
|
+
suite_endpoint :post, SESSION_INQUIRE_PATH, ClaimEndpoint
|
88
|
+
suite_endpoint :post, FHIR_SUBSCRIPTION_PATH, SubscriptionCreateEndpoint
|
89
|
+
suite_endpoint :post, SESSION_FHIR_SUBSCRIPTION_PATH, SubscriptionCreateEndpoint
|
90
|
+
suite_endpoint :get, FHIR_SUBSCRIPTION_INSTANCE_PATH, SubscriptionsTestKit::SubscriptionReadEndpoint
|
91
|
+
suite_endpoint :get, SESSION_FHIR_SUBSCRIPTION_INSTANCE_PATH, SubscriptionsTestKit::SubscriptionReadEndpoint
|
92
|
+
suite_endpoint :post, FHIR_SUBSCRIPTION_INSTANCE_STATUS_PATH, SubscriptionStatusEndpoint
|
93
|
+
suite_endpoint :post, SESSION_FHIR_SUBSCRIPTION_INSTANCE_STATUS_PATH, SubscriptionStatusEndpoint
|
94
|
+
suite_endpoint :get, FHIR_SUBSCRIPTION_INSTANCE_STATUS_PATH, SubscriptionStatusEndpoint
|
95
|
+
suite_endpoint :get, SESSION_FHIR_SUBSCRIPTION_INSTANCE_STATUS_PATH, SubscriptionStatusEndpoint
|
96
|
+
suite_endpoint :post, FHIR_SUBSCRIPTION_RESOURCE_STATUS_PATH, SubscriptionStatusEndpoint
|
97
|
+
suite_endpoint :post, SESSION_FHIR_SUBSCRIPTION_RESOURCE_STATUS_PATH, SubscriptionStatusEndpoint
|
88
98
|
|
89
|
-
|
90
|
-
|
91
|
-
test from: :pas_client_v201_subscription_pas_conformance_test
|
92
|
-
test from: :subscriptions_r4_client_handshake_notification_verification
|
99
|
+
resume_test_route :get, RESUME_PASS_PATH do |request|
|
100
|
+
request.query_parameters['token']
|
93
101
|
end
|
94
102
|
|
95
|
-
|
96
|
-
|
97
|
-
description %(
|
98
|
-
The workflow tests validate that the client can participate in complete end-to-end prior
|
99
|
-
authorization interactions, initiating requests and reacting appropriately to the
|
100
|
-
responses returned.
|
101
|
-
)
|
102
|
-
group from: :pas_client_v201_approval_group
|
103
|
-
group from: :pas_client_v201_denial_group
|
104
|
-
group from: :pas_client_v201_pended_group
|
103
|
+
resume_test_route :get, RESUME_FAIL_PATH, result: 'fail' do |request|
|
104
|
+
request.query_parameters['token']
|
105
105
|
end
|
106
106
|
|
107
|
-
group
|
108
|
-
title 'Demonstrate Element Support'
|
109
|
-
description %(
|
110
|
-
Demonstrate the ability of the client to support all PAS-defined profiles and the must support elements
|
111
|
-
defined in them. This includes
|
107
|
+
group from: :pas_client_v201_registration
|
112
108
|
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
109
|
+
# SMART test groups (with :session_url_path input removed)
|
110
|
+
group from: :pas_client_v201_subscription_setup, id: :pas_client_v201_subscription_setup_smart do
|
111
|
+
required_suite_options client_type: PASClientOptions::SMART_BACKEND_SERVICES_CONFIDENTIAL_ASYMMETRIC
|
112
|
+
PASClientOptions.recursive_remove_input(self, :session_url_path)
|
113
|
+
config(inputs: { client_id: { optional: false } })
|
114
|
+
end
|
115
|
+
group from: :pas_client_v201_workflows, id: :pas_client_v201_workflows_smart do
|
116
|
+
required_suite_options client_type: PASClientOptions::SMART_BACKEND_SERVICES_CONFIDENTIAL_ASYMMETRIC
|
117
|
+
PASClientOptions.recursive_remove_input(self, :session_url_path)
|
118
|
+
config(inputs: { client_id: { optional: false } })
|
119
|
+
end
|
120
|
+
group from: :pas_client_v201_must_support, id: :pas_client_v201_must_support_smart do
|
121
|
+
required_suite_options client_type: PASClientOptions::SMART_BACKEND_SERVICES_CONFIDENTIAL_ASYMMETRIC
|
122
|
+
PASClientOptions.recursive_remove_input(self, :session_url_path)
|
123
|
+
config(inputs: { client_id: { optional: false } })
|
124
|
+
end
|
118
125
|
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
)
|
124
|
-
|
125
|
-
|
126
|
+
# UDAP test groups (with :session_url_path input removed)
|
127
|
+
group from: :pas_client_v201_subscription_setup, id: :pas_client_v201_subscription_setup_udap do
|
128
|
+
required_suite_options client_type: PASClientOptions::UDAP_CLIENT_CREDENTIALS
|
129
|
+
PASClientOptions.recursive_remove_input(self, :session_url_path)
|
130
|
+
config(inputs: { client_id: { optional: false } })
|
131
|
+
end
|
132
|
+
group from: :pas_client_v201_workflows, id: :pas_client_v201_workflows_udap do
|
133
|
+
required_suite_options client_type: PASClientOptions::UDAP_CLIENT_CREDENTIALS
|
134
|
+
PASClientOptions.recursive_remove_input(self, :session_url_path)
|
135
|
+
config(inputs: { client_id: { optional: false } })
|
126
136
|
end
|
137
|
+
group from: :pas_client_v201_must_support, id: :pas_client_v201_must_support_udap do
|
138
|
+
required_suite_options client_type: PASClientOptions::UDAP_CLIENT_CREDENTIALS
|
139
|
+
PASClientOptions.recursive_remove_input(self, :session_url_path)
|
140
|
+
config(inputs: { client_id: { optional: false } })
|
141
|
+
end
|
142
|
+
|
143
|
+
# Dedicated Endpoints test groups (with :client_id input removed)
|
144
|
+
group from: :pas_client_v201_subscription_setup, id: :pas_client_v201_subscription_setup_no_auth do
|
145
|
+
required_suite_options client_type: PASClientOptions::OTHER_AUTH
|
146
|
+
PASClientOptions.recursive_remove_input(self, :client_id)
|
147
|
+
config(inputs: { session_url_path: { optional: false } })
|
148
|
+
end
|
149
|
+
group from: :pas_client_v201_workflows, id: :pas_client_v201_workflows_no_auth do
|
150
|
+
required_suite_options client_type: PASClientOptions::OTHER_AUTH
|
151
|
+
PASClientOptions.recursive_remove_input(self, :client_id)
|
152
|
+
config(inputs: { session_url_path: { optional: false } })
|
153
|
+
end
|
154
|
+
group from: :pas_client_v201_must_support, id: :pas_client_v201_must_support_no_auth do
|
155
|
+
required_suite_options client_type: PASClientOptions::OTHER_AUTH
|
156
|
+
PASClientOptions.recursive_remove_input(self, :client_id)
|
157
|
+
config(inputs: { session_url_path: { optional: false } })
|
158
|
+
end
|
159
|
+
|
160
|
+
group from: :pas_client_v201_auth_smart,
|
161
|
+
required_suite_options: {
|
162
|
+
client_type: PASClientOptions::SMART_BACKEND_SERVICES_CONFIDENTIAL_ASYMMETRIC
|
163
|
+
}
|
164
|
+
group from: :pas_client_v201_auth_udap,
|
165
|
+
required_suite_options: {
|
166
|
+
client_type: PASClientOptions::UDAP_CLIENT_CREDENTIALS
|
167
|
+
}
|
127
168
|
end
|
128
169
|
end
|
129
170
|
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require_relative '../../../urls'
|
2
|
+
|
3
|
+
module DaVinciPASTestKit
|
4
|
+
module DaVinciPASV201
|
5
|
+
class PASClientRegistrationConfigurationOtherDisplay < Inferno::Test
|
6
|
+
include URLs
|
7
|
+
|
8
|
+
id :pas_client_v201_reg_config_other_display
|
9
|
+
title 'Confirm client configuration'
|
10
|
+
description %(
|
11
|
+
This test provides all the information needed for testers to configure
|
12
|
+
the client under test to communicate with Inferno's simulated PAS server
|
13
|
+
using dedicated endpoints.
|
14
|
+
)
|
15
|
+
input :session_url_path,
|
16
|
+
title: 'Session-specific URL path extension',
|
17
|
+
type: 'text',
|
18
|
+
optional: true,
|
19
|
+
description: %(
|
20
|
+
Inferno will use this value to setup dedicated session-specific FHIR endpoints
|
21
|
+
to use during these tests. If not provided a value will be generated.
|
22
|
+
)
|
23
|
+
output :session_url_path
|
24
|
+
|
25
|
+
run do
|
26
|
+
if session_url_path.blank?
|
27
|
+
new_session_url_path = test_session_id
|
28
|
+
output(session_url_path: new_session_url_path)
|
29
|
+
end
|
30
|
+
wait_identifier = session_url_path || new_session_url_path
|
31
|
+
|
32
|
+
wait(
|
33
|
+
identifier: wait_identifier,
|
34
|
+
message: %(
|
35
|
+
**Inferno Simulated Server Details**:
|
36
|
+
|
37
|
+
FHIR Base URL: `#{session_fhir_base_url(wait_identifier)}`
|
38
|
+
|
39
|
+
[Click here](#{resume_pass_url}?token=#{wait_identifier}) once you have configured
|
40
|
+
the client to connect to Inferno at the above endpoints.
|
41
|
+
)
|
42
|
+
)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require_relative '../../../urls'
|
2
|
+
|
3
|
+
module DaVinciPASTestKit
|
4
|
+
module DaVinciPASV201
|
5
|
+
class PASClientRegistrationConfigurationSMARTDisplay < Inferno::Test
|
6
|
+
include URLs
|
7
|
+
|
8
|
+
id :pas_client_v201_reg_config_smart_display
|
9
|
+
title 'Confirm client configuration'
|
10
|
+
description %(
|
11
|
+
This test provides all the information needed for testers to configure
|
12
|
+
the client under test to communicate with Inferno's simulated PAS server
|
13
|
+
including SMART endpoints to obtain access tokens.
|
14
|
+
)
|
15
|
+
|
16
|
+
input :client_id
|
17
|
+
|
18
|
+
run do
|
19
|
+
wait(
|
20
|
+
identifier: client_id,
|
21
|
+
message: %(
|
22
|
+
**Inferno Simulated Server Details**:
|
23
|
+
|
24
|
+
FHIR Base URL: `#{fhir_base_url}`
|
25
|
+
|
26
|
+
Authentication Details:
|
27
|
+
- SMART Client Id: `#{client_id}`
|
28
|
+
- Token endpoint: `#{token_url}`
|
29
|
+
|
30
|
+
[Click here](#{resume_pass_url}?token=#{client_id}) once you have configured
|
31
|
+
the client to connect to Inferno at the above endpoints.
|
32
|
+
)
|
33
|
+
)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require_relative '../../../urls'
|
2
|
+
|
3
|
+
module DaVinciPASTestKit
|
4
|
+
module DaVinciPASV201
|
5
|
+
class PASClientRegistrationConfigurationUDAPDisplay < Inferno::Test
|
6
|
+
include URLs
|
7
|
+
|
8
|
+
id :pas_client_v201_reg_config_udap_display
|
9
|
+
title 'Confirm client configuration'
|
10
|
+
description %(
|
11
|
+
This test provides all the information needed for testers to configure
|
12
|
+
the client under test to communicate with Inferno's simulated PAS server
|
13
|
+
including UDAP endpoints to obtain access tokens.
|
14
|
+
)
|
15
|
+
|
16
|
+
input :client_id
|
17
|
+
|
18
|
+
run do
|
19
|
+
wait(
|
20
|
+
identifier: client_id,
|
21
|
+
message: %(
|
22
|
+
**Inferno Simulated Server Details**:
|
23
|
+
|
24
|
+
FHIR Base URL: `#{fhir_base_url}`
|
25
|
+
|
26
|
+
Authentication Details:
|
27
|
+
- UDAP Client Id: `#{client_id}`
|
28
|
+
- Token endpoint: `#{token_url}`
|
29
|
+
|
30
|
+
[Click here](#{resume_pass_url}?token=#{client_id}) once you have configured
|
31
|
+
the client to connect to Inferno at the above endpoints.
|
32
|
+
)
|
33
|
+
)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_registration/other_auth_attest_test.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
require_relative '../../../urls'
|
2
|
+
|
3
|
+
module DaVinciPASTestKit
|
4
|
+
module DaVinciPASV201
|
5
|
+
class PASClientRegistrationOtherAuthAttest < Inferno::Test
|
6
|
+
include URLs
|
7
|
+
|
8
|
+
id :pas_client_v201_reg_other_auth_attest
|
9
|
+
title 'Verify that the client supports an approach for authenticating itself to the server (Attestation)'
|
10
|
+
description %(
|
11
|
+
Since a standard auth approach was not chosen for this session, this test provides testers with an
|
12
|
+
opportunity to attest to their client's ability to authenticate itself to a server
|
13
|
+
using a method that this Inferno test suite does not support, such as mutual authentication
|
14
|
+
TLS.
|
15
|
+
)
|
16
|
+
|
17
|
+
run do
|
18
|
+
identifier = SecureRandom.hex(32)
|
19
|
+
wait(
|
20
|
+
identifier:,
|
21
|
+
message: %(
|
22
|
+
**Other Authentication Attestation**:
|
23
|
+
|
24
|
+
I attest that the client system can authenticate itself with a PAS server using
|
25
|
+
a mechanism other than the SMART Backend Services or UDAP B2B client credentials
|
26
|
+
flows.
|
27
|
+
|
28
|
+
[Click here](#{resume_pass_url}?token=#{identifier}) if the above statement is true.
|
29
|
+
|
30
|
+
[Click here](#{resume_fail_url}?token=#{identifier}) if the above statement is false.
|
31
|
+
)
|
32
|
+
)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|