davinci_crd_test_kit 0.14.0 → 0.14.2
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/{inferno_crd_server_suite.json.erb → client_against_inferno_crd_server_suite.json.erb} +0 -33
- data/config/presets/{ri_crd_request_generator.json.erb → client_against_ri_crd_request_generator.json.erb} +1 -14
- data/config/presets/client_v221_against_inferno_crd_server_suite.json.erb +84 -0
- data/config/presets/client_v221_against_ri_br_provider.json.erb +31 -0
- data/config/presets/{ri_crd_request_generator.json_v221.json.erb → client_v221_against_ri_crd_request_generator.json.erb} +1 -1
- data/config/presets/{inferno_crd_client_suite.json.erb → server_against_inferno_crd_client_suite.json.erb} +0 -43
- data/config/presets/{ri_crd_server.json.erb → server_against_ri_crd_server.json.erb} +1 -44
- data/config/presets/{inferno_crd_client_suite_v221.json.erb → server_v221_against_inferno_crd_client_suite.json.erb} +48 -45
- data/config/presets/{inferno_crd_client_suite_prefetch_subset_v221.json.erb → server_v221_against_inferno_crd_client_suite_prefetch_subset.json.erb} +0 -46
- data/config/presets/server_v221_against_inferno_g31_suite.json.erb +49 -0
- data/lib/davinci_crd_test_kit/client/cross_hook_helper.rb +26 -0
- data/lib/davinci_crd_test_kit/client/endpoints/custom_service_response.rb +7 -7
- data/lib/davinci_crd_test_kit/client/endpoints/gather_response_generation_data.rb +4 -1
- data/lib/davinci_crd_test_kit/client/endpoints/hook_request_endpoint.rb +70 -39
- data/lib/davinci_crd_test_kit/client/endpoints/mock_service_response.rb +26 -7
- data/lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/external_reference.json +1 -1
- data/lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/launch_smart_app.json +0 -7
- data/lib/davinci_crd_test_kit/client/endpoints/scenario_service_response.rb +54 -0
- data/lib/davinci_crd_test_kit/client/tagged_request_load_helper.rb +8 -27
- data/lib/davinci_crd_test_kit/client/v2.0.1/auth/retrieve_jwks_test.rb +35 -23
- data/lib/davinci_crd_test_kit/client/v2.0.1/auth/token_payload_test.rb +34 -21
- data/lib/davinci_crd_test_kit/client/v2.0.1/cds-services-v201.json +20 -20
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_appointment_book_group.rb +12 -10
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_encounter_discharge_group.rb +12 -10
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_encounter_start_group.rb +12 -10
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_hooks_group.rb +5 -5
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_order_dispatch_group.rb +12 -10
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_order_select_group.rb +12 -10
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_order_sign_group.rb +12 -10
- data/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_coverage_information.rb +3 -36
- data/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_external_reference.rb +3 -36
- data/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_instructions.rb +3 -36
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_fetched_data_test.rb +4 -13
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_prefetch_equals_queried_test.rb +3 -13
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_response/client_display_cards_attest.rb +3 -13
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_response/inferno_response_validation.rb +3 -13
- data/lib/davinci_crd_test_kit/client/v2.2.1/api/client_coverage_info_update_test.rb +1 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/attestation_instructions.rb +10 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_authorized_scope_attestation_test.rb +45 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_coverage_based_invocation_attestation_test.rb +44 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_data_element_expectations_attestation_test.rb +44 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_hook_invocation_logging_attestation_test.rb +43 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_must_support_exposure_attestation_test.rb +43 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_must_support_use_attestation_test.rb +41 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_order_sign_support_attestation_test.rb +42 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_prefetch_key_omission_attestation_test.rb +42 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_resource_identifiers_attestation_test.rb +43 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_response_case_distinction_attestation_test.rb +43 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_security_and_privacy_attestation_test.rb +43 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_workflow_integration_attestation_test.rb +44 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/auth/decode_auth_token_test.rb +1 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/auth/retrieve_jwks_test.rb +29 -18
- data/lib/davinci_crd_test_kit/client/v2.2.1/auth/token_payload_test.rb +35 -22
- data/lib/davinci_crd_test_kit/client/v2.2.1/cds-services-prefetch-subset-v221.json +47 -47
- data/lib/davinci_crd_test_kit/client/v2.2.1/cds-services-v221.json +50 -50
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_appointment_book_group.rb +24 -15
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_attestations_group.rb +49 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_cross_hook_group.rb +22 -6
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_cross_hook_interaction_group.rb +98 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_encounter_discharge_group.rb +19 -11
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_encounter_start_group.rb +19 -11
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_fhir_api_group.rb +14 -12
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_hooks_group.rb +25 -5
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_long_running_hook_group.rb +3 -2
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_dispatch_group.rb +23 -15
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_select_group.rb +19 -11
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_sign_group.rb +23 -15
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_registration_group.rb +6 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_scenarios_group.rb +26 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_self_pay_hook_group.rb +36 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_unknown_content_hook_group.rb +34 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/crd_client_suite.rb +24 -3
- data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_card_must_support_coverage_information_test.rb +1 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_fhirpath_collection_as_comma_delimited_string_test.rb +4 -11
- data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_hook_instances_unique_test.rb +1 -9
- data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_location_address_propagation_test.rb +6 -2
- data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_prefetch_complete_and_subset_test.rb +3 -12
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/appointment_book_receive_request_test.rb +8 -89
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/base_hook_invocation_receive_request_test.rb +163 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/cross_hooks_receive_request_test.rb +97 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/encounter_discharge_receive_request_test.rb +8 -90
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/encounter_start_receive_request_test.rb +8 -90
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_dispatch_receive_request_test.rb +8 -98
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_select_receive_request_test.rb +8 -98
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_sign_receive_request_test.rb +8 -98
- data/lib/davinci_crd_test_kit/client/v2.2.1/long_running/client_long_running_receive_request_test.rb +10 -2
- data/lib/davinci_crd_test_kit/client/v2.2.1/long_running/client_skip_long_running_attestation_test.rb +11 -6
- data/lib/davinci_crd_test_kit/client/v2.2.1/registration/client_service_registration_attestation_test.rb +2 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/self_pay/client_self_pay_no_request_test.rb +30 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/self_pay/client_self_pay_workflow_test.rb +55 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/unknown_content/client_unknown_content_attestation_test.rb +99 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/unknown_content/client_unknown_content_receive_request_test.rb +62 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_conformance_test.rb +1 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_coverage_verification_test.rb +10 -2
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_data_fetch_verification_test.rb +1 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_granted_scopes_test.rb +1 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_prefetch_complete_test.rb +7 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_prefetch_profiles_test.rb +1 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_requested_version_test.rb +1 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_secured_transport_test.rb +1 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/client_display_cards_attest.rb +54 -21
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/hook_response_support_coverage_information_test.rb +1 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/inferno_response_validation.rb +6 -3
- data/lib/davinci_crd_test_kit/cross_suite/cards_identification.rb +18 -0
- data/lib/davinci_crd_test_kit/cross_suite/logical_models_override_helper.rb +30 -13
- data/lib/davinci_crd_test_kit/cross_suite/prefetch_completeness_checker.rb +25 -11
- data/lib/davinci_crd_test_kit/cross_suite/prefetch_profile_validation.rb +2 -0
- data/lib/davinci_crd_test_kit/cross_suite/requests_logical_model_validation.rb +28 -28
- data/lib/davinci_crd_test_kit/cross_suite/response_logical_model_validation.rb +211 -43
- data/lib/davinci_crd_test_kit/cross_suite/tags.rb +7 -0
- data/lib/davinci_crd_test_kit/requirements/cds-hooks_3.0.0-ballot_requirements.xlsx +0 -0
- data/lib/davinci_crd_test_kit/requirements/davinci_crd_test_kit_requirements.csv +6 -2
- data/lib/davinci_crd_test_kit/requirements/generated/crd_client_requirements_coverage.csv +107 -107
- data/lib/davinci_crd_test_kit/requirements/generated/crd_client_v221_requirements_coverage.csv +101 -97
- data/lib/davinci_crd_test_kit/requirements/generated/crd_server_requirements_coverage.csv +18 -18
- data/lib/davinci_crd_test_kit/requirements/generated/crd_server_v221_requirements_coverage.csv +43 -39
- data/lib/davinci_crd_test_kit/requirements/hl7.fhir.us.davinci-crd_2.2.1_requirements.xlsx +0 -0
- data/lib/davinci_crd_test_kit/server/jobs/invoke_hook.rb +3 -3
- data/lib/davinci_crd_test_kit/server/jobs/invoke_hook_no_special_requests.rb +17 -0
- data/lib/davinci_crd_test_kit/server/jobs/invoke_hook_with_bad_auth.rb +14 -0
- data/lib/davinci_crd_test_kit/server/server_abstract_invoke_hook_test.rb +24 -6
- data/lib/davinci_crd_test_kit/server/server_hook_helper.rb +2 -2
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_server_suite.rb +1 -1
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_hooks_group.rb +5 -5
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_server_suite.rb +3 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_standard_prefetch_expressions_test.rb +165 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/interaction/server_invoke_hook_single_request_test.rb +22 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_appointment_book_group.rb +10 -102
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_demonstrate_hook_response_group.rb +3 -2
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_discovery_group.rb +2 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_encounter_discharge_group.rb +10 -97
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_encounter_start_group.rb +10 -97
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_hooks_group.rb +5 -5
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_dispatch_group.rb +10 -103
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_select_group.rb +12 -116
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_sign_group.rb +12 -121
- data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_response_group.rb +23 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/coverage_info_reason_test.rb +108 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/coverage_not_found_group.rb +116 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/no_active_coverage_group.rb +115 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/no_member_found_group.rb +117 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/technical_issues_group.rb +121 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/technical_issues_invoke_test.rb +22 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_context_validation_test.rb +1 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_optional_fields_validation_test.rb +1 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_required_fields_validation_test.rb +1 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/additional_orders_validation_test.rb +78 -35
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_card_absence_test.rb +76 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_system_action_validation_test.rb +70 -124
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/create_or_update_coverage_info_response_validation_test.rb +83 -39
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/external_reference_card_validation_test.rb +59 -17
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/form_completion_response_validation_test.rb +80 -45
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/hook_request_resource_resolution.rb +37 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/instructions_card_received_test.rb +57 -6
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/launch_smart_app_card_validation_test.rb +56 -17
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/propose_alternate_request_card_validation_test.rb +52 -25
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/service_response_validation_test.rb +17 -51
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_cds_hooks_elements_test.rb +1 -1
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_configuration_test.rb +1 -1
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_context_test.rb +1 -1
- data/lib/davinci_crd_test_kit/version.rb +2 -2
- metadata +54 -16
- data/config/presets/inferno_crd_server_suite_v221.json.erb +0 -94
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/card_optional_fields_validation_test.rb +0 -57
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_system_action_received_test.rb +0 -65
|
@@ -25,12 +25,18 @@ module DaVinciCRDTestKit
|
|
|
25
25
|
procedures, labs and other orders). The CRD IG places [additional constraints on the use
|
|
26
26
|
of the order-select hook](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#order-select),
|
|
27
27
|
including the profiles that resources in each request must conform to.
|
|
28
|
+
|
|
29
|
+
Inferno's simulated `order-select` hook endpoints are available at:
|
|
30
|
+
- Complete Prefetch: `#{ClientURLs.base_url}#{ORDER_SELECT_PATH}`
|
|
31
|
+
- Subset Prefetch: `#{ClientURLs.base_url}#{ORDER_SELECT_PREFETCH_SUBSET_PATH}`
|
|
28
32
|
DESCRIPTION
|
|
29
33
|
run_as_group
|
|
30
34
|
|
|
31
35
|
verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-2-A', 'hl7.fhir.us.davinci-crd_2.2.1@hook-2-B'
|
|
32
36
|
|
|
33
|
-
input_order :
|
|
37
|
+
input_order :order_select_response_approach,
|
|
38
|
+
:order_select_selected_response_types,
|
|
39
|
+
:order_select_custom_response_template
|
|
34
40
|
|
|
35
41
|
config(
|
|
36
42
|
inputs: {
|
|
@@ -53,7 +59,9 @@ module DaVinciCRDTestKit
|
|
|
53
59
|
crd_jwks_keys_json: { name: :order_select_crd_jwks_keys_json }
|
|
54
60
|
},
|
|
55
61
|
options: {
|
|
56
|
-
hook_name: 'order-select'
|
|
62
|
+
hook_name: 'order-select',
|
|
63
|
+
crd_interaction_group: 'hooks-order-select',
|
|
64
|
+
include_in_cross_hook_analysis: true
|
|
57
65
|
}
|
|
58
66
|
)
|
|
59
67
|
|
|
@@ -63,11 +71,10 @@ module DaVinciCRDTestKit
|
|
|
63
71
|
end
|
|
64
72
|
|
|
65
73
|
group do
|
|
66
|
-
title '
|
|
67
|
-
|
|
68
|
-
test from: :
|
|
69
|
-
test from: :
|
|
70
|
-
test from: :crd_v221_token_payload
|
|
74
|
+
title 'Response Handling'
|
|
75
|
+
|
|
76
|
+
test from: :crd_v221_card_display_attest_test
|
|
77
|
+
test from: :crd_v221_inferno_response_validation
|
|
71
78
|
end
|
|
72
79
|
|
|
73
80
|
group do
|
|
@@ -92,10 +99,11 @@ module DaVinciCRDTestKit
|
|
|
92
99
|
end
|
|
93
100
|
|
|
94
101
|
group do
|
|
95
|
-
title '
|
|
96
|
-
|
|
97
|
-
test from: :
|
|
98
|
-
test from: :
|
|
102
|
+
title 'Authorization'
|
|
103
|
+
test from: :crd_v221_decode_auth_token
|
|
104
|
+
test from: :crd_v221_retrieve_jwks
|
|
105
|
+
test from: :crd_v221_token_header
|
|
106
|
+
test from: :crd_v221_token_payload
|
|
99
107
|
end
|
|
100
108
|
end
|
|
101
109
|
end
|
|
@@ -26,12 +26,18 @@ module DaVinciCRDTestKit
|
|
|
26
26
|
for medications, procedures, labs and other orders). The CRD IG places [additional constraints on the use
|
|
27
27
|
of the order-sign hook](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#order-sign),
|
|
28
28
|
including the profiles that resources in each request must conform to.
|
|
29
|
+
|
|
30
|
+
Inferno's simulated `order-sign` hook endpoints are available at:
|
|
31
|
+
- Complete Prefetch: `#{ClientURLs.base_url}#{ORDER_SIGN_PATH}`
|
|
32
|
+
- Subset Prefetch: `#{ClientURLs.base_url}#{ORDER_SIGN_PREFETCH_SUBSET_PATH}`
|
|
29
33
|
DESCRIPTION
|
|
30
34
|
run_as_group
|
|
31
35
|
|
|
32
36
|
verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-2-A', 'hl7.fhir.us.davinci-crd_2.2.1@hook-2-B'
|
|
33
37
|
|
|
34
|
-
input_order :
|
|
38
|
+
input_order :order_sign_response_approach,
|
|
39
|
+
:order_sign_selected_response_types,
|
|
40
|
+
:order_sign_custom_response_template
|
|
35
41
|
|
|
36
42
|
config(
|
|
37
43
|
inputs: {
|
|
@@ -54,7 +60,9 @@ module DaVinciCRDTestKit
|
|
|
54
60
|
crd_jwks_keys_json: { name: :order_sign_crd_jwks_keys_json }
|
|
55
61
|
},
|
|
56
62
|
options: {
|
|
57
|
-
hook_name: 'order-sign'
|
|
63
|
+
hook_name: 'order-sign',
|
|
64
|
+
crd_interaction_group: 'hooks-order-sign',
|
|
65
|
+
include_in_cross_hook_analysis: true
|
|
58
66
|
}
|
|
59
67
|
)
|
|
60
68
|
|
|
@@ -64,11 +72,14 @@ module DaVinciCRDTestKit
|
|
|
64
72
|
end
|
|
65
73
|
|
|
66
74
|
group do
|
|
67
|
-
title '
|
|
68
|
-
|
|
69
|
-
test from: :
|
|
70
|
-
test from: :
|
|
71
|
-
test from: :
|
|
75
|
+
title 'Response Handling'
|
|
76
|
+
|
|
77
|
+
test from: :crd_v221_card_display_attest_test
|
|
78
|
+
test from: :crd_v221_inferno_response_validation
|
|
79
|
+
test from: :crd_v221_client_hook_response_support_coverage_information do
|
|
80
|
+
title 'Client supports the Coverage Information response type on the order-sign hook'
|
|
81
|
+
verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-39'
|
|
82
|
+
end
|
|
72
83
|
end
|
|
73
84
|
|
|
74
85
|
group do
|
|
@@ -93,14 +104,11 @@ module DaVinciCRDTestKit
|
|
|
93
104
|
end
|
|
94
105
|
|
|
95
106
|
group do
|
|
96
|
-
title '
|
|
97
|
-
|
|
98
|
-
test from: :
|
|
99
|
-
test from: :
|
|
100
|
-
test from: :
|
|
101
|
-
title 'Client supports the Coverage Information response type on the order-sign hook'
|
|
102
|
-
verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-39'
|
|
103
|
-
end
|
|
107
|
+
title 'Authorization'
|
|
108
|
+
test from: :crd_v221_decode_auth_token
|
|
109
|
+
test from: :crd_v221_retrieve_jwks
|
|
110
|
+
test from: :crd_v221_token_header
|
|
111
|
+
test from: :crd_v221_token_payload
|
|
104
112
|
end
|
|
105
113
|
end
|
|
106
114
|
end
|
|
@@ -12,6 +12,12 @@ module DaVinciCRDTestKit
|
|
|
12
12
|
and vice-versa. Tests in this group confirm the registration of the partner
|
|
13
13
|
system on both ends.
|
|
14
14
|
|
|
15
|
+
Inferno simulates two CRD discovery endpoints for the client to connect to:
|
|
16
|
+
- Discovery endpoint for services requesting the complete [standard prefetch data set](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#standard-prefetch):
|
|
17
|
+
`#{ClientURLs.discovery_url}`
|
|
18
|
+
- Discovery endpoint for services requesting the a subset of the [standard prefetch data set](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#standard-prefetch):
|
|
19
|
+
`#{ClientURLs.prefetch_subset_discovery_url}`
|
|
20
|
+
|
|
15
21
|
This group must be run before any other tests in the "Hook Invocation" group because inputs
|
|
16
22
|
provided to this group will be used by Inferno for the remainder of the tests
|
|
17
23
|
to identify client requests and verify behavior. The inputs will appear as locked and
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require_relative 'client_long_running_hook_group'
|
|
2
|
+
require_relative 'client_unknown_content_hook_group'
|
|
3
|
+
require_relative 'client_self_pay_hook_group'
|
|
4
|
+
|
|
5
|
+
module DaVinciCRDTestKit
|
|
6
|
+
module V221
|
|
7
|
+
class ClientScenariosGroup < Inferno::TestGroup
|
|
8
|
+
title 'Scenarios'
|
|
9
|
+
id :crd_v221_client_scenarios
|
|
10
|
+
description <<~DESCRIPTION
|
|
11
|
+
This group checks CRD requirements that pertain to specific scenarios
|
|
12
|
+
that clients need to handle.
|
|
13
|
+
|
|
14
|
+
These scenarios test specific situations and conformance details of requests
|
|
15
|
+
and responses beyond those required for the scenario and for Inferno to
|
|
16
|
+
recognize client requests are not checked. Testers are expected to follow
|
|
17
|
+
the same workflows as used during other tests and should adhere to the
|
|
18
|
+
same CRD requirements when performing these scenarios.
|
|
19
|
+
DESCRIPTION
|
|
20
|
+
|
|
21
|
+
group from: :crd_v221_client_long_running_hook
|
|
22
|
+
group from: :crd_v221_client_unknown_content_hook
|
|
23
|
+
group from: :crd_v221_client_self_pay_hook
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require_relative 'self_pay/client_self_pay_workflow_test'
|
|
2
|
+
require_relative 'self_pay/client_self_pay_no_request_test'
|
|
3
|
+
|
|
4
|
+
module DaVinciCRDTestKit
|
|
5
|
+
module V221
|
|
6
|
+
class ClientSelfPayHookGroup < Inferno::TestGroup
|
|
7
|
+
title 'Self-Pay'
|
|
8
|
+
id :crd_v221_client_self_pay_hook
|
|
9
|
+
description <<~DESCRIPTION
|
|
10
|
+
The CRD IG requires clients to invoke hooks on payer services only when the patient
|
|
11
|
+
record indicates active coverage with the payer associated with the service and there
|
|
12
|
+
is no recorded indication that the patient intends to bypass insurance coverage, i.e.,
|
|
13
|
+
the service or product is not flagged as 'self-pay'. During this scenario the tester
|
|
14
|
+
will perform a workflow that would normally trigger a hook request, but for a service or
|
|
15
|
+
product that the patient has indicated they intend to self-pay for, and Inferno
|
|
16
|
+
will verify that no hook requests are made.
|
|
17
|
+
|
|
18
|
+
Any hook requests made during these tests will not be checked for conformance
|
|
19
|
+
or included in the cross-hook analyses around must support and other coverage requirements.
|
|
20
|
+
DESCRIPTION
|
|
21
|
+
|
|
22
|
+
run_as_group
|
|
23
|
+
|
|
24
|
+
config(
|
|
25
|
+
options: {
|
|
26
|
+
hook_name: ANY_HOOK_TAG,
|
|
27
|
+
crd_interaction_group: SELF_PAY_GROUP_TAG,
|
|
28
|
+
include_in_cross_hook_analysis: false
|
|
29
|
+
}
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
test from: :crd_v221_client_self_pay_workflow
|
|
33
|
+
test from: :crd_v221_client_self_pay_no_request
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require_relative 'unknown_content/client_unknown_content_receive_request_test'
|
|
2
|
+
require_relative 'unknown_content/client_unknown_content_attestation_test'
|
|
3
|
+
|
|
4
|
+
module DaVinciCRDTestKit
|
|
5
|
+
module V221
|
|
6
|
+
class ClientUnknownContentHookGroup < Inferno::TestGroup
|
|
7
|
+
title 'Unknown Response Content'
|
|
8
|
+
id :crd_v221_client_unknown_content_hook
|
|
9
|
+
description <<~DESCRIPTION
|
|
10
|
+
CRD servers may return content that clients do not recognize, and the CRD IG requires
|
|
11
|
+
clients to ignore it rather than fail. During this scenario Inferno returns coverage
|
|
12
|
+
information accompanied by an element within the system action and a custom extension
|
|
13
|
+
on the response, both with randomly generated names. This content is added at the CRD
|
|
14
|
+
response level rather than within the FHIR resources carried in the response.
|
|
15
|
+
|
|
16
|
+
Hook requests made during these tests will not be checked for conformance
|
|
17
|
+
or included in the cross-hook analyses around must support and other coverage requirements.
|
|
18
|
+
DESCRIPTION
|
|
19
|
+
|
|
20
|
+
run_as_group
|
|
21
|
+
|
|
22
|
+
config(
|
|
23
|
+
options: {
|
|
24
|
+
hook_name: ANY_HOOK_TAG,
|
|
25
|
+
crd_interaction_group: UNKNOWN_CONTENT_GROUP_TAG,
|
|
26
|
+
include_in_cross_hook_analysis: false
|
|
27
|
+
}
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
test from: :crd_v221_client_unknown_content_receive_request
|
|
31
|
+
test from: :crd_v221_client_unknown_content_attestation_test
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -2,7 +2,8 @@ require_relative 'client_fhir_api_group'
|
|
|
2
2
|
require_relative 'client_hooks_group'
|
|
3
3
|
require_relative 'client_cross_hook_group'
|
|
4
4
|
require_relative 'client_registration_group'
|
|
5
|
-
require_relative '
|
|
5
|
+
require_relative 'client_scenarios_group'
|
|
6
|
+
require_relative 'client_attestations_group'
|
|
6
7
|
require_relative '../endpoints/cds_services_discovery_handler'
|
|
7
8
|
require_relative '../../cross_suite/tags'
|
|
8
9
|
require_relative 'client_urls'
|
|
@@ -23,6 +24,11 @@ module DaVinciCRDTestKit
|
|
|
23
24
|
capabilities of a CRD client as described in [version 2.2.1](https://hl7.org/fhir/us/davinci-crd/2.2.1)
|
|
24
25
|
of the Da Vinci Coverage Requirements Discovery (CRD) Implementation Guide.
|
|
25
26
|
|
|
27
|
+
These tests are a **DRAFT** intended to allow CRD implementers to perform
|
|
28
|
+
preliminary checks of their implementations against the CRD IG requirements and
|
|
29
|
+
[provide feedback](https://github.com/inferno-framework/davinci-crd-test-kit/issues) on the tests.
|
|
30
|
+
Future versions of these tests may validate other requirements and may change how these are tested.
|
|
31
|
+
|
|
26
32
|
Detailed information about this test suite can be found in the
|
|
27
33
|
[client section](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details) of the
|
|
28
34
|
[CRD Test Kit Wiki](https://github.com/inferno-framework/davinci-crd-test-kit/wiki), including:
|
|
@@ -109,7 +115,6 @@ module DaVinciCRDTestKit
|
|
|
109
115
|
CRD_MESSAGE_FILTERS = [
|
|
110
116
|
/\A\S+: \S+: URL value '.*' does not resolve/,
|
|
111
117
|
%r{This element is not allowed by the profile http://hl7\.org/fhir/tools/StructureDefinition/CDSHooksExtensions\|1\.1\.2},
|
|
112
|
-
/CDSHooksRequest.extension: Unrecognized property/,
|
|
113
118
|
/No definition could be found for URL value/
|
|
114
119
|
].freeze
|
|
115
120
|
|
|
@@ -162,6 +167,21 @@ module DaVinciCRDTestKit
|
|
|
162
167
|
end
|
|
163
168
|
end
|
|
164
169
|
|
|
170
|
+
fhir_resource_validator :no_custom_extensions do
|
|
171
|
+
igs('hl7.fhir.us.davinci-crd#2.2.1')
|
|
172
|
+
|
|
173
|
+
validation_context do
|
|
174
|
+
snomedCT '731000124108' # explicit snomedCT expansion parameter
|
|
175
|
+
extensions [] # no extensions not in the spec
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
exclude_message do |message|
|
|
179
|
+
CRD_MESSAGE_FILTERS.any? do |match_template|
|
|
180
|
+
message.message.match?(match_template)
|
|
181
|
+
end
|
|
182
|
+
end
|
|
183
|
+
end
|
|
184
|
+
|
|
165
185
|
suite_option :us_core_version,
|
|
166
186
|
title: 'US Core Version',
|
|
167
187
|
list_options: [
|
|
@@ -219,11 +239,12 @@ module DaVinciCRDTestKit
|
|
|
219
239
|
|
|
220
240
|
group from: :crd_v221_client_registration
|
|
221
241
|
group from: :crd_v221_client_hooks
|
|
242
|
+
group from: :crd_v221_client_scenarios
|
|
222
243
|
group from: :crd_v221_client_cross_hook
|
|
223
|
-
group from: :crd_v221_client_long_running_hook
|
|
224
244
|
end
|
|
225
245
|
|
|
226
246
|
group from: :crd_v221_client_fhir_api
|
|
247
|
+
group from: :crd_v221_client_attestations
|
|
227
248
|
end
|
|
228
249
|
end
|
|
229
250
|
end
|
|
@@ -46,7 +46,7 @@ module DaVinciCRDTestKit
|
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
run do
|
|
49
|
-
loaded_requests =
|
|
49
|
+
loaded_requests = load_requests_for_cross_hook_analysis
|
|
50
50
|
skip_if loaded_requests.blank?, 'No hook requests received.'
|
|
51
51
|
|
|
52
52
|
sorted_cards = sorted_cards_from_requests(loaded_requests)
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
require_relative '../../cross_hook_helper'
|
|
2
|
+
|
|
1
3
|
module DaVinciCRDTestKit
|
|
2
4
|
module V221
|
|
3
5
|
class ClientFHIRPathCollectionAsCommaDelimitedStringTest < Inferno::Test
|
|
6
|
+
include CrossHookHelper
|
|
7
|
+
|
|
4
8
|
title 'Client correctly interprets collections when substituting FHIRPath results in prefetch templates'
|
|
5
9
|
id :crd_v221_client_fhir_path_collection_as_comma_delimited_string
|
|
6
10
|
description <<~DESCRIPTION
|
|
@@ -32,17 +36,6 @@ module DaVinciCRDTestKit
|
|
|
32
36
|
'Perform more complex hook requests and re-run.'
|
|
33
37
|
end
|
|
34
38
|
|
|
35
|
-
def find_completeness_tests
|
|
36
|
-
hooks_group = self.class.parent.parent.groups.find do |group|
|
|
37
|
-
group.id.to_s.include?('crd_v221_client_hooks')
|
|
38
|
-
end
|
|
39
|
-
hooks_group.groups.map do |group|
|
|
40
|
-
group.groups.flat_map(&:tests).find do |test|
|
|
41
|
-
test.id.to_s.include?('crd_v221_hook_request_prefetch_complete')
|
|
42
|
-
end
|
|
43
|
-
end.compact
|
|
44
|
-
end
|
|
45
|
-
|
|
46
39
|
def completeness_tests_demonstrate_collection_token_substitution?(prefetch_completeness_tests)
|
|
47
40
|
results_repo = Inferno::Repositories::Results.new
|
|
48
41
|
results = results_repo.current_results_for_test_session_and_runnables(test_session_id,
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
require_relative '../../tagged_request_load_helper'
|
|
2
1
|
require_relative '../../multi_request_message_helper'
|
|
3
2
|
require_relative '../../../cross_suite/tags'
|
|
4
3
|
|
|
5
4
|
module DaVinciCRDTestKit
|
|
6
5
|
module V221
|
|
7
6
|
class ClientHookInstancesUniqueTest < Inferno::Test
|
|
8
|
-
include TaggedRequestLoadHelper
|
|
9
7
|
include MultiRequestMessageHelper
|
|
10
8
|
|
|
11
9
|
title 'Client does not reuse hookInstance values'
|
|
@@ -21,14 +19,8 @@ module DaVinciCRDTestKit
|
|
|
21
19
|
|
|
22
20
|
verifies_requirements 'cds-hooks_3.0.0-ballot@25'
|
|
23
21
|
|
|
24
|
-
config(
|
|
25
|
-
options: {
|
|
26
|
-
crd_test_group: DUPLICATED_HOOK_INSTANCE_TAG
|
|
27
|
-
}
|
|
28
|
-
)
|
|
29
|
-
|
|
30
22
|
run do
|
|
31
|
-
duplicated_hook_instance_requests =
|
|
23
|
+
duplicated_hook_instance_requests = load_tagged_requests(DUPLICATED_HOOK_INSTANCE_TAG)
|
|
32
24
|
reused_values = duplicated_hook_instance_requests.map.with_index do |request, request_index|
|
|
33
25
|
request_body = parse_json_request_entity(request.request_body, 'Request body', request_index)
|
|
34
26
|
next nil unless request_body.present?
|
data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_location_address_propagation_test.rb
CHANGED
|
@@ -70,7 +70,11 @@ module DaVinciCRDTestKit
|
|
|
70
70
|
|
|
71
71
|
message_prefix = "Parent of prefetched 'Location/#{root_id}'"
|
|
72
72
|
add_message('error', "Location/#{location.id}: #{message_prefix} does not conform to the CRD Location profile.")
|
|
73
|
-
validator_response_details.each
|
|
73
|
+
validator_response_details.each do |issue|
|
|
74
|
+
next if issue.filtered
|
|
75
|
+
|
|
76
|
+
add_message(issue.severity, "(#{message_prefix}) #{issue.message}")
|
|
77
|
+
end
|
|
74
78
|
end
|
|
75
79
|
|
|
76
80
|
def fetched_locations_checked_for_conformance
|
|
@@ -78,7 +82,7 @@ module DaVinciCRDTestKit
|
|
|
78
82
|
end
|
|
79
83
|
|
|
80
84
|
def loaded_requests
|
|
81
|
-
@loaded_requests ||=
|
|
85
|
+
@loaded_requests ||= load_requests_for_cross_hook_analysis
|
|
82
86
|
end
|
|
83
87
|
|
|
84
88
|
def prefetched_location_hash
|
data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_prefetch_complete_and_subset_test.rb
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
require_relative '../../tagged_request_load_helper'
|
|
2
|
+
require_relative '../../cross_hook_helper'
|
|
2
3
|
require_relative '../client_urls'
|
|
3
4
|
|
|
4
5
|
module DaVinciCRDTestKit
|
|
5
6
|
module V221
|
|
6
7
|
class ClientPrefetchCompleteAndSubsetTest < Inferno::Test
|
|
7
8
|
include TaggedRequestLoadHelper
|
|
9
|
+
include CrossHookHelper
|
|
8
10
|
|
|
9
11
|
title 'Client can provide both the complete standard prefetch data set and a subset'
|
|
10
12
|
id :crd_v221_client_prefetch_complete_and_subset
|
|
@@ -50,7 +52,7 @@ module DaVinciCRDTestKit
|
|
|
50
52
|
|
|
51
53
|
run do
|
|
52
54
|
subset_prefetch_requests, complete_prefetch_requests =
|
|
53
|
-
|
|
55
|
+
load_requests_for_cross_hook_analysis.partition { |request| request.url.include?(PREFETCH_SUBSET_PREFIX) }
|
|
54
56
|
completeness_tests = find_completeness_tests
|
|
55
57
|
check_for_demonstration(subset_prefetch_requests, completeness_tests, :subset)
|
|
56
58
|
check_for_demonstration(complete_prefetch_requests, completeness_tests, :complete)
|
|
@@ -59,17 +61,6 @@ module DaVinciCRDTestKit
|
|
|
59
61
|
'The client did not demonstrate both complete and subset prefetch capability. See Messages for details.'
|
|
60
62
|
end
|
|
61
63
|
|
|
62
|
-
def find_completeness_tests
|
|
63
|
-
hooks_group = self.class.parent.parent.groups.find do |group|
|
|
64
|
-
group.id.to_s.include?('crd_v221_client_hooks')
|
|
65
|
-
end
|
|
66
|
-
hooks_group.groups.map do |group|
|
|
67
|
-
group.groups.flat_map(&:tests).find do |test|
|
|
68
|
-
test.id.to_s.include?('crd_v221_hook_request_prefetch_complete')
|
|
69
|
-
end
|
|
70
|
-
end.compact
|
|
71
|
-
end
|
|
72
|
-
|
|
73
64
|
def check_for_demonstration(requests, completeness_tests, target_name)
|
|
74
65
|
unless requests.present?
|
|
75
66
|
add_message('error', "No requests made to the service endpoint requesting #{target_name} prefetch data.")
|
data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/appointment_book_receive_request_test.rb
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
require_relative '
|
|
1
|
+
require_relative 'base_hook_invocation_receive_request_test'
|
|
2
2
|
|
|
3
3
|
module DaVinciCRDTestKit
|
|
4
4
|
module V221
|
|
5
|
-
class AppointmentBookReceiveRequestTest <
|
|
6
|
-
include ClientURLs
|
|
7
|
-
|
|
5
|
+
class AppointmentBookReceiveRequestTest < BaseHookInvocationReceiveRequestTest
|
|
8
6
|
id :crd_v221_appointment_book_request
|
|
9
7
|
title 'Client invokes the appointment-book hook'
|
|
10
8
|
description %(
|
|
@@ -19,16 +17,7 @@ module DaVinciCRDTestKit
|
|
|
19
17
|
by the tester by clicking on the link in the "User Action Required" dialog (NOTE: after
|
|
20
18
|
5 minutes the test will become inactive and unresponsive to anything except cancelation).
|
|
21
19
|
)
|
|
22
|
-
config options: { accepts_multiple_requests: true }
|
|
23
20
|
|
|
24
|
-
input :cds_jwt_iss,
|
|
25
|
-
title: 'CRD JWT Issuer',
|
|
26
|
-
description: %(
|
|
27
|
-
Value of the `iss` claim that must be present in the JWT used to authorize the client's hook
|
|
28
|
-
request sent as the Bearer token in the `Authorization` header.
|
|
29
|
-
Run or re-run the "Registration" group to set or change this value.
|
|
30
|
-
),
|
|
31
|
-
locked: true
|
|
32
21
|
input :appointment_book_response_approach,
|
|
33
22
|
title: 'Response generation approach for appointment-book',
|
|
34
23
|
description: %(
|
|
@@ -60,34 +49,7 @@ module DaVinciCRDTestKit
|
|
|
60
49
|
type: 'checkbox',
|
|
61
50
|
default: ['coverage_information', 'external_reference', 'instructions'],
|
|
62
51
|
optional: true,
|
|
63
|
-
options: {
|
|
64
|
-
list_options: [
|
|
65
|
-
{
|
|
66
|
-
label: 'External Reference',
|
|
67
|
-
value: 'external_reference'
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
label: 'Instructions',
|
|
71
|
-
value: 'instructions'
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
label: 'Coverage Information',
|
|
75
|
-
value: 'coverage_information'
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
label: 'Request Form Completion',
|
|
79
|
-
value: 'request_form_completion'
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
label: 'Create/Update Coverage Information',
|
|
83
|
-
value: 'create_update_coverage_info'
|
|
84
|
-
},
|
|
85
|
-
{
|
|
86
|
-
label: 'Launch SMART Application',
|
|
87
|
-
value: 'launch_smart_app'
|
|
88
|
-
}
|
|
89
|
-
]
|
|
90
|
-
},
|
|
52
|
+
options: { list_options: RESPONSE_TYPE_OPTIONS },
|
|
91
53
|
enable_when: { input_name: 'appointment_book_response_approach', value: 'mocked' }
|
|
92
54
|
input :appointment_book_custom_response_template,
|
|
93
55
|
title: 'Custom response template for appointment-book hook requests',
|
|
@@ -98,58 +60,15 @@ module DaVinciCRDTestKit
|
|
|
98
60
|
type: 'textarea',
|
|
99
61
|
optional: true,
|
|
100
62
|
enable_when: { input_name: 'appointment_book_response_approach', value: 'custom' }
|
|
101
|
-
output :continuation_url
|
|
102
|
-
|
|
103
|
-
def configured_response_details
|
|
104
|
-
if appointment_book_response_approach == 'custom'
|
|
105
|
-
# rubocop:disable Layout/LineLength
|
|
106
|
-
'When responding, Inferno will evaluate the provided [custom response template](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#tester-directed-custom-responses) ' \
|
|
107
|
-
'from the **Custom response template for appointment-book hook requests** input ' \
|
|
108
|
-
'against the incoming request to create a response.'
|
|
109
|
-
# rubocop:enable Layout/LineLength
|
|
110
63
|
|
|
111
|
-
|
|
112
|
-
# rubocop:disable Layout/LineLength
|
|
113
|
-
'When responding, Inferno will [mock](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses) ' \
|
|
114
|
-
'the following response types using the incoming request: ' \
|
|
115
|
-
"\n - #{selected_response_types_string}"
|
|
116
|
-
# rubocop:enable Layout/LineLength
|
|
117
|
-
end
|
|
118
|
-
end
|
|
64
|
+
private
|
|
119
65
|
|
|
120
|
-
def
|
|
121
|
-
|
|
122
|
-
appointment_book_selected_response_types.join("\n - ")
|
|
123
|
-
else
|
|
124
|
-
'Coverage Information' # primary hook default
|
|
125
|
-
end
|
|
66
|
+
def hook_key
|
|
67
|
+
'appointment_book'
|
|
126
68
|
end
|
|
127
69
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
continuation_url = "#{resume_pass_url}?token=#{identifier}"
|
|
131
|
-
output(continuation_url:)
|
|
132
|
-
|
|
133
|
-
wait(
|
|
134
|
-
identifier:,
|
|
135
|
-
message: %(
|
|
136
|
-
**Invoke the `appointment-book` hook**:
|
|
137
|
-
|
|
138
|
-
Invoke the appointment-book hook by sending requests to
|
|
139
|
-
one or both of the two Inferno simulated CRD servers:
|
|
140
|
-
|
|
141
|
-
- Complete Prefetch: `#{appointment_book_url}`
|
|
142
|
-
- Subset Prefetch: `#{appointment_book_prefetch_subset_url}`
|
|
143
|
-
|
|
144
|
-
For Inferno to recognize these requests and associate them with this session,
|
|
145
|
-
the authentication JWT sent as a Bearer token in the Authorization header
|
|
146
|
-
must have `#{cds_jwt_iss}` as the `iss` claim in the JWT payload.
|
|
147
|
-
|
|
148
|
-
#{configured_response_details}
|
|
149
|
-
|
|
150
|
-
[Click here](#{continuation_url}) when you have finished submitting requests.
|
|
151
|
-
)
|
|
152
|
-
)
|
|
70
|
+
def primary_hook?
|
|
71
|
+
true
|
|
153
72
|
end
|
|
154
73
|
end
|
|
155
74
|
end
|