davinci_crd_test_kit 0.13.0 → 0.14.1
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_client_suite.json.erb +20 -14
- data/config/presets/inferno_crd_client_suite_prefetch_subset_v221.json.erb +125 -0
- data/config/presets/inferno_crd_client_suite_v221.json.erb +188 -0
- data/config/presets/inferno_crd_server_suite.json.erb +58 -1
- data/config/presets/inferno_crd_server_suite_v221.json.erb +94 -0
- data/config/presets/ri_crd_request_generator.json_v221.json.erb +13 -0
- data/config/presets/ri_crd_server.json.erb +19 -19
- data/lib/davinci_crd_test_kit/client/client_base_urls.rb +80 -0
- data/lib/davinci_crd_test_kit/{client_hook_request_validation.rb → client/client_hook_request_validation.rb} +1 -1
- data/lib/davinci_crd_test_kit/client/crd_client_options.rb +30 -0
- data/lib/davinci_crd_test_kit/client/endpoints/cds_services_discovery_handler.rb +34 -0
- data/lib/davinci_crd_test_kit/client/endpoints/custom_service_response.rb +342 -0
- data/lib/davinci_crd_test_kit/client/endpoints/gather_response_generation_data.rb +410 -0
- data/lib/davinci_crd_test_kit/client/endpoints/hook_request_endpoint.rb +239 -0
- data/lib/davinci_crd_test_kit/{mock_service_response.rb → client/endpoints/mock_service_response.rb} +165 -59
- data/lib/davinci_crd_test_kit/{card_responses → client/endpoints/mocked_card_responses}/companions_prerequisites.json +1 -0
- data/lib/davinci_crd_test_kit/{card_responses → client/endpoints/mocked_card_responses}/create_update_coverage_information.json +3 -2
- data/lib/davinci_crd_test_kit/{card_responses → client/endpoints/mocked_card_responses}/external_reference.json +1 -1
- data/lib/davinci_crd_test_kit/{card_responses → client/endpoints/mocked_card_responses}/launch_smart_app.json +1 -1
- data/lib/davinci_crd_test_kit/{card_responses → client/endpoints/mocked_card_responses}/propose_alternate_request.json +1 -0
- data/lib/davinci_crd_test_kit/{card_responses → client/endpoints/mocked_card_responses}/request_form_completion.json +17 -16
- data/lib/davinci_crd_test_kit/client/multi_request_message_helper.rb +35 -0
- data/lib/davinci_crd_test_kit/client/tagged_request_load_helper.rb +38 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_create_test.rb +43 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_read_test.rb +43 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_search_test.rb +234 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_update_test.rb +43 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_validation_test.rb +63 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/auth/decode_auth_token_test.rb +65 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/auth/retrieve_jwks_test.rb +109 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/auth/token_header_test.rb +70 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/auth/token_payload_test.rb +85 -0
- data/lib/davinci_crd_test_kit/{routes/cds-services.json → client/v2.0.1/cds-services-v201.json} +1 -1
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_appointment_book_group.rb +108 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_card_must_support_group.rb +31 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_encounter_discharge_group.rb +105 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_encounter_start_group.rb +105 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_fhir_api_group.rb +790 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_hooks_group.rb +74 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_order_dispatch_group.rb +111 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_order_select_group.rb +116 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_order_sign_group.rb +113 -0
- data/lib/davinci_crd_test_kit/{client_registration_group.rb → client/v2.0.1/client_registration_group.rb} +12 -8
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_urls.rb +13 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/crd_client_suite.rb +134 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/invocation/appointment_book_receive_request_test.rb +129 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/invocation/encounter_discharge_receive_request_test.rb +126 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/invocation/encounter_start_receive_request_test.rb +126 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/invocation/order_dispatch_receive_request_test.rb +138 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/invocation/order_select_receive_request_test.rb +134 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/invocation/order_sign_receive_request_test.rb +136 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_coverage_information.rb +93 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_external_reference.rb +62 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_instructions.rb +62 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/registration/client_registration_verification_test.rb +94 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/registration/client_service_registration_attestation_test.rb +40 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_fetched_data_test.rb +86 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_optional_fields_test.rb +63 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_prefetch_equals_queried_test.rb +96 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_required_fields_test.rb +55 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_valid_context_test.rb +70 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_valid_prefetch_test.rb +62 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_response/client_display_cards_attest.rb +83 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_response/inferno_response_validation.rb +79 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/api/client_coverage_info_update_test.rb +212 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/api/client_crd_update_verification_group.rb +18 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/auth/decode_auth_token_test.rb +69 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/auth/retrieve_jwks_test.rb +120 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/auth/token_header_test.rb +92 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/auth/token_payload_test.rb +93 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/cds-services-prefetch-subset-v221.json +198 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/cds-services-v221.json +202 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_appointment_book_group.rb +109 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_cross_hook_group.rb +28 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_encounter_discharge_group.rb +102 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_encounter_start_group.rb +101 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_fhir_api_group.rb +88 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_hooks_group.rb +84 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_long_running_hook_group.rb +32 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_dispatch_group.rb +107 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_select_group.rb +108 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_sign_group.rb +113 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_registration_group.rb +33 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_urls.rb +27 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/crd_client_suite.rb +234 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_card_must_support_coverage_information_test.rb +63 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_fhirpath_collection_as_comma_delimited_string_test.rb +60 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_hook_instances_unique_test.rb +45 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_location_address_propagation_test.rb +135 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_prefetch_complete_and_subset_test.rb +103 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/appointment_book_receive_request_test.rb +156 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/encounter_discharge_receive_request_test.rb +157 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/encounter_start_receive_request_test.rb +157 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_dispatch_receive_request_test.rb +165 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_select_receive_request_test.rb +165 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_sign_receive_request_test.rb +165 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/long_running/client_long_running_receive_request_test.rb +64 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/long_running/client_skip_long_running_attestation_test.rb +54 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/registration/client_registration_verification_test.rb +161 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/registration/client_service_registration_attestation_test.rb +108 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_conformance_test.rb +47 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_coverage_verification_test.rb +152 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_data_fetch_verification_test.rb +55 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_granted_scopes_test.rb +123 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_prefetch_complete_test.rb +133 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_prefetch_profiles_test.rb +55 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_requested_version_test.rb +54 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_secured_transport_test.rb +48 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/client_display_cards_attest.rb +75 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/hook_response_support_coverage_information_test.rb +30 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/inferno_response_validation.rb +77 -0
- data/lib/davinci_crd_test_kit/cross_suite/base_urls.rb +20 -0
- data/lib/davinci_crd_test_kit/cross_suite/cards_identification.rb +321 -0
- data/lib/davinci_crd_test_kit/{cards_validation.rb → cross_suite/cards_validation.rb} +104 -47
- data/lib/davinci_crd_test_kit/cross_suite/coverage-information_stu201_metadata.yml +27 -0
- data/lib/davinci_crd_test_kit/cross_suite/coverage-information_stu221_metadata.yml +60 -0
- data/lib/davinci_crd_test_kit/cross_suite/fhirpath_on_cds_request.rb +177 -0
- data/lib/davinci_crd_test_kit/{hook_request_field_validation.rb → cross_suite/hook_request_field_validation.rb} +282 -203
- data/lib/davinci_crd_test_kit/cross_suite/logical_models_override_helper.rb +220 -0
- data/lib/davinci_crd_test_kit/cross_suite/prefetch_completeness_checker.rb +476 -0
- data/lib/davinci_crd_test_kit/cross_suite/prefetch_contents_validation.rb +81 -0
- data/lib/davinci_crd_test_kit/cross_suite/prefetch_profile_validation.rb +48 -0
- data/lib/davinci_crd_test_kit/cross_suite/profiles_and_resource_types.rb +63 -0
- data/lib/davinci_crd_test_kit/cross_suite/replace_tokens.rb +38 -0
- data/lib/davinci_crd_test_kit/cross_suite/requests_logical_model_validation.rb +203 -0
- data/lib/davinci_crd_test_kit/cross_suite/response_logical_model_validation.rb +435 -0
- data/lib/davinci_crd_test_kit/{suggestion_actions_validation.rb → cross_suite/suggestion_actions_validation.rb} +70 -50
- data/lib/davinci_crd_test_kit/cross_suite/tags.rb +46 -0
- data/lib/davinci_crd_test_kit/metadata.rb +10 -44
- data/lib/davinci_crd_test_kit/requirements/cds-hooks-library_1.0.1_requirements.xlsx +0 -0
- data/lib/davinci_crd_test_kit/requirements/cds-hooks_2.0_requirements.xlsx +0 -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 +742 -65
- data/lib/davinci_crd_test_kit/requirements/generated/crd_client_requirements_coverage.csv +279 -54
- data/lib/davinci_crd_test_kit/requirements/generated/crd_client_v221_requirements_coverage.csv +1430 -0
- data/lib/davinci_crd_test_kit/requirements/generated/crd_server_requirements_coverage.csv +36 -45
- data/lib/davinci_crd_test_kit/requirements/generated/crd_server_v221_requirements_coverage.csv +143 -0
- data/lib/davinci_crd_test_kit/requirements/hl7.fhir.us.davinci-crd_2.0.1_requirements.xlsx +0 -0
- 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/endpoints/jwk_set_endpoint_handler.rb +13 -0
- data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_create_endpoint.rb +23 -0
- data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_delete_endpoint.rb +30 -0
- data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_metadata_endpoint.rb +112 -0
- data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_read_endpoint.rb +21 -0
- data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_request_handler.rb +261 -0
- data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_search_endpoint.rb +561 -0
- data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_update_endpoint.rb +24 -0
- data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/stress-test-Bundle.json +54687 -0
- data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr_endpoints.rb +95 -0
- data/lib/davinci_crd_test_kit/server/jobs/invoke_hook.rb +225 -0
- 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/{jwt_helper.rb → server/jwt_helper.rb} +1 -12
- data/lib/davinci_crd_test_kit/server/resource_extractor.rb +68 -0
- data/lib/davinci_crd_test_kit/server/server_abstract_invoke_hook_test.rb +183 -0
- data/lib/davinci_crd_test_kit/server/server_base_urls.rb +30 -0
- data/lib/davinci_crd_test_kit/{server_hook_helper.rb → server/server_hook_helper.rb} +3 -3
- data/lib/davinci_crd_test_kit/{server_hook_request_validation.rb → server/server_hook_request_validation.rb} +1 -1
- data/lib/davinci_crd_test_kit/{test_helper.rb → server/server_test_helper.rb} +7 -3
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Appointment.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/ClaimResponse.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/CommunicationRequest.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Coverage.yml +21 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Device.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/DeviceRequest.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Encounter.yml +7 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Location.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/MedicationRequest.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/NutritionOrder.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Organization.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Patient.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Practitioner.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/PractitionerRole.yml +40 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/ServiceRequest.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Task.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/VisionPrescription.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_server_suite.rb +99 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/discovery/discovery_endpoint_test.rb +90 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/discovery/discovery_services_validation_test.rb +67 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/interaction/server_invoke_hook_test.rb +12 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/must_support/coverage_information_system_action_across_hooks_validation_test.rb +34 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/must_support/external_reference_card_across_hooks_validation_test.rb +30 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/must_support/instructions_card_received_across_hooks_test.rb +27 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_appointment_book_group.rb +191 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_demonstrate_hook_response_group.rb +93 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_discovery_group.rb +62 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_encounter_discharge_group.rb +186 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_encounter_start_group.rb +186 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_hooks_group.rb +73 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_order_dispatch_group.rb +191 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_order_select_group.rb +211 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_order_sign_group.rb +216 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_required_card_response_validation_group.rb +28 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_urls.rb +13 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_request/service_request_context_validation_test.rb +30 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_request/service_request_optional_fields_validation_test.rb +39 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_request/service_request_required_fields_validation_test.rb +40 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/additional_orders_validation_test.rb +59 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/card_optional_fields_validation_test.rb +51 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/coverage_information_system_action_received_test.rb +65 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/coverage_information_system_action_validation_test.rb +120 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/create_or_update_coverage_info_response_validation_test.rb +70 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/external_reference_card_validation_test.rb +37 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/form_completion_response_validation_test.rb +67 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/instructions_card_received_test.rb +30 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/launch_smart_app_card_validation_test.rb +39 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/propose_alternate_request_card_validation_test.rb +46 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/service_response_validation_test.rb +83 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Appointment_withorder.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Appointment_withoutorder.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/CommunicationRequest.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Coverage.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Device.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/DeviceRequest.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Encounter.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Location.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/MedicationRequest.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/NutritionOrder.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Organization.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Patient.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/PractitionerRole.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/ServiceRequest.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/VisionPrescription.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_server_suite.rb +118 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_configuration_test.rb +159 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_endpoint_test.rb +90 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_prefetch_support_test.rb +43 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_services_validation_test.rb +121 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_standard_prefetch_expressions_test.rb +166 -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/interaction/server_invoke_hook_test.rb +17 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/must_support/coverage_information_must_support_test.rb +71 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/must_support/coverage_information_system_action_across_hooks_validation_test.rb +36 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/must_support/supported_us_core_versions_test.rb +118 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_appointment_book_group.rb +121 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_demonstrate_hook_response_group.rb +94 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_discovery_group.rb +71 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_encounter_discharge_group.rb +107 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_encounter_start_group.rb +107 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_hooks_group.rb +73 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_dispatch_group.rb +121 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_select_group.rb +115 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_sign_group.rb +132 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_required_card_response_validation_group.rb +30 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_urls.rb +13 -0
- 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 +31 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_no_custom_extensions_test.rb +120 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_optional_fields_validation_test.rb +40 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_required_fields_validation_test.rb +41 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/additional_orders_validation_test.rb +109 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/all_responses_include_coverage_information_test.rb +123 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_info_configuration_test.rb +83 -0
- 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 +130 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/create_or_update_coverage_info_response_validation_test.rb +119 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/external_reference_card_validation_test.rb +89 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/form_completion_response_validation_test.rb +126 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/hook_request_resource_resolution.rb +174 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/instructions_card_received_test.rb +83 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/launch_smart_app_card_validation_test.rb +88 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/order_dispatch_coverage_information_test.rb +38 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/propose_alternate_request_card_validation_test.rb +81 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/service_response_validation_test.rb +63 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_cds_hooks_elements_test.rb +78 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_configuration_test.rb +78 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_context_test.rb +78 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/verify_response_without_billing_options_test.rb +43 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/verify_response_without_configuration_test.rb +44 -0
- data/lib/davinci_crd_test_kit/version.rb +2 -2
- data/lib/davinci_crd_test_kit.rb +4 -2
- metadata +307 -93
- data/lib/davinci_crd_test_kit/client_fhir_api_group.rb +0 -785
- data/lib/davinci_crd_test_kit/client_hooks_group.rb +0 -74
- data/lib/davinci_crd_test_kit/client_tests/appointment_book_receive_request_test.rb +0 -93
- data/lib/davinci_crd_test_kit/client_tests/client_appointment_book_group.rb +0 -75
- data/lib/davinci_crd_test_kit/client_tests/client_display_cards_attest.rb +0 -48
- data/lib/davinci_crd_test_kit/client_tests/client_encounter_discharge_group.rb +0 -73
- data/lib/davinci_crd_test_kit/client_tests/client_encounter_start_group.rb +0 -73
- data/lib/davinci_crd_test_kit/client_tests/client_fhir_api_create_test.rb +0 -42
- data/lib/davinci_crd_test_kit/client_tests/client_fhir_api_read_test.rb +0 -40
- data/lib/davinci_crd_test_kit/client_tests/client_fhir_api_search_test.rb +0 -232
- data/lib/davinci_crd_test_kit/client_tests/client_fhir_api_update_test.rb +0 -42
- data/lib/davinci_crd_test_kit/client_tests/client_fhir_api_validation_test.rb +0 -61
- data/lib/davinci_crd_test_kit/client_tests/client_order_dispatch_group.rb +0 -79
- data/lib/davinci_crd_test_kit/client_tests/client_order_select_group.rb +0 -82
- data/lib/davinci_crd_test_kit/client_tests/client_order_sign_group.rb +0 -81
- data/lib/davinci_crd_test_kit/client_tests/client_registration_verification_test.rb +0 -88
- data/lib/davinci_crd_test_kit/client_tests/decode_auth_token_test.rb +0 -60
- data/lib/davinci_crd_test_kit/client_tests/encounter_discharge_receive_request_test.rb +0 -90
- data/lib/davinci_crd_test_kit/client_tests/encounter_start_receive_request_test.rb +0 -90
- data/lib/davinci_crd_test_kit/client_tests/hook_request_optional_fields_test.rb +0 -57
- data/lib/davinci_crd_test_kit/client_tests/hook_request_required_fields_test.rb +0 -49
- data/lib/davinci_crd_test_kit/client_tests/hook_request_valid_context_test.rb +0 -68
- data/lib/davinci_crd_test_kit/client_tests/hook_request_valid_prefetch_test.rb +0 -69
- data/lib/davinci_crd_test_kit/client_tests/order_dispatch_receive_request_test.rb +0 -102
- data/lib/davinci_crd_test_kit/client_tests/order_select_receive_request_test.rb +0 -98
- data/lib/davinci_crd_test_kit/client_tests/order_sign_receive_request_test.rb +0 -101
- data/lib/davinci_crd_test_kit/client_tests/retrieve_jwks_test.rb +0 -105
- data/lib/davinci_crd_test_kit/client_tests/submitted_response_validation.rb +0 -48
- data/lib/davinci_crd_test_kit/client_tests/token_header_test.rb +0 -65
- data/lib/davinci_crd_test_kit/client_tests/token_payload_test.rb +0 -78
- data/lib/davinci_crd_test_kit/crd_client_suite.rb +0 -193
- data/lib/davinci_crd_test_kit/crd_options.rb +0 -9
- data/lib/davinci_crd_test_kit/crd_server_suite.rb +0 -125
- data/lib/davinci_crd_test_kit/igs/davinci-crd-2.0.1.tgz +0 -0
- data/lib/davinci_crd_test_kit/routes/cds_services_discovery_handler.rb +0 -18
- data/lib/davinci_crd_test_kit/routes/hook_request_endpoint.rb +0 -77
- data/lib/davinci_crd_test_kit/routes/jwk_set_endpoint_handler.rb +0 -15
- data/lib/davinci_crd_test_kit/server_appointment_book_group.rb +0 -176
- data/lib/davinci_crd_test_kit/server_demonstrate_hook_response_group.rb +0 -77
- data/lib/davinci_crd_test_kit/server_discovery_group.rb +0 -60
- data/lib/davinci_crd_test_kit/server_encounter_discharge_group.rb +0 -170
- data/lib/davinci_crd_test_kit/server_encounter_start_group.rb +0 -170
- data/lib/davinci_crd_test_kit/server_hooks_group.rb +0 -71
- data/lib/davinci_crd_test_kit/server_order_dispatch_group.rb +0 -176
- data/lib/davinci_crd_test_kit/server_order_select_group.rb +0 -195
- data/lib/davinci_crd_test_kit/server_order_sign_group.rb +0 -201
- data/lib/davinci_crd_test_kit/server_required_card_response_validation_group.rb +0 -26
- data/lib/davinci_crd_test_kit/server_tests/additional_orders_validation_test.rb +0 -68
- data/lib/davinci_crd_test_kit/server_tests/card_optional_fields_validation_test.rb +0 -47
- data/lib/davinci_crd_test_kit/server_tests/coverage_information_system_action_across_hooks_validation_test.rb +0 -32
- data/lib/davinci_crd_test_kit/server_tests/coverage_information_system_action_received_test.rb +0 -63
- data/lib/davinci_crd_test_kit/server_tests/coverage_information_system_action_validation_test.rb +0 -118
- data/lib/davinci_crd_test_kit/server_tests/create_or_update_coverage_info_response_validation_test.rb +0 -71
- data/lib/davinci_crd_test_kit/server_tests/discovery_endpoint_test.rb +0 -88
- data/lib/davinci_crd_test_kit/server_tests/discovery_services_validation_test.rb +0 -65
- data/lib/davinci_crd_test_kit/server_tests/external_reference_card_across_hooks_validation_test.rb +0 -28
- data/lib/davinci_crd_test_kit/server_tests/external_reference_card_validation_test.rb +0 -36
- data/lib/davinci_crd_test_kit/server_tests/form_completion_response_validation_test.rb +0 -78
- data/lib/davinci_crd_test_kit/server_tests/instructions_card_received_across_hooks_test.rb +0 -25
- data/lib/davinci_crd_test_kit/server_tests/instructions_card_received_test.rb +0 -26
- data/lib/davinci_crd_test_kit/server_tests/launch_smart_app_card_validation_test.rb +0 -38
- data/lib/davinci_crd_test_kit/server_tests/propose_alternate_request_card_validation_test.rb +0 -63
- data/lib/davinci_crd_test_kit/server_tests/service_call_test.rb +0 -101
- data/lib/davinci_crd_test_kit/server_tests/service_request_context_validation_test.rb +0 -28
- data/lib/davinci_crd_test_kit/server_tests/service_request_optional_fields_validation_test.rb +0 -37
- data/lib/davinci_crd_test_kit/server_tests/service_request_required_fields_validation_test.rb +0 -38
- data/lib/davinci_crd_test_kit/server_tests/service_response_validation_test.rb +0 -81
- data/lib/davinci_crd_test_kit/tags.rb +0 -10
- data/lib/davinci_crd_test_kit/urls.rb +0 -52
- /data/lib/davinci_crd_test_kit/{card_responses → client/endpoints/mocked_card_responses}/instructions.json +0 -0
- /data/lib/davinci_crd_test_kit/{crd_jwks.json → server/endpoints/crd_jwks.json} +0 -0
- /data/lib/davinci_crd_test_kit/{jwks.rb → server/endpoints/jwks.rb} +0 -0
data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/instructions_card_received_test.rb
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
require_relative '../../server_test_helper'
|
|
2
|
+
require_relative '../../server_hook_helper'
|
|
3
|
+
require_relative '../../../cross_suite/cards_identification'
|
|
4
|
+
require_relative '../../../cross_suite/response_logical_model_validation'
|
|
5
|
+
|
|
6
|
+
module DaVinciCRDTestKit
|
|
7
|
+
module V221
|
|
8
|
+
class InstructionsCardReceivedTest < Inferno::Test
|
|
9
|
+
include DaVinciCRDTestKit::ServerTestHelper
|
|
10
|
+
include DaVinciCRDTestKit::ServerHookHelper
|
|
11
|
+
include DaVinciCRDTestKit::CardsIdentification
|
|
12
|
+
include DaVinciCRDTestKit::ResponseLogicalModelValidation
|
|
13
|
+
|
|
14
|
+
title 'Instructions cards are valid'
|
|
15
|
+
id :crd_v221_valid_instructions_card_received
|
|
16
|
+
description %(
|
|
17
|
+
This test validates that an
|
|
18
|
+
[Instructions](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#instructions-response-type)
|
|
19
|
+
card was received. It does so by:
|
|
20
|
+
- Checking for the presence of a valid card that does not contain the
|
|
21
|
+
`links` field and the `suggestions` field.
|
|
22
|
+
|
|
23
|
+
The test will be skipped if no Instructions cards are found within the
|
|
24
|
+
returned valid cards.
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@resp-24'
|
|
28
|
+
|
|
29
|
+
input :invoked_hook
|
|
30
|
+
|
|
31
|
+
optional
|
|
32
|
+
|
|
33
|
+
def body_has_no_cards?(body)
|
|
34
|
+
!body.is_a?(Hash) ||
|
|
35
|
+
body['cards'].blank? ||
|
|
36
|
+
!body['cards'].is_a?(Array) ||
|
|
37
|
+
!body['cards'].all?(Hash)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def instructions_cards(request)
|
|
41
|
+
return [] if request.status != 200
|
|
42
|
+
|
|
43
|
+
response_body = JSON.parse(request.response_body)
|
|
44
|
+
|
|
45
|
+
return [] if body_has_no_cards?(response_body)
|
|
46
|
+
|
|
47
|
+
response_body['cards'].select { |card| instructions_response_type? card }
|
|
48
|
+
rescue JSON::ParserError
|
|
49
|
+
[]
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
run do
|
|
53
|
+
load_tagged_requests(tested_hook_name)
|
|
54
|
+
|
|
55
|
+
instructions_count = 0
|
|
56
|
+
|
|
57
|
+
successful_requests = requests.select { |request| request.status == 200 }
|
|
58
|
+
|
|
59
|
+
skip_if successful_requests.blank?,
|
|
60
|
+
'No successful hook responses were received'
|
|
61
|
+
|
|
62
|
+
requests.each_with_index do |request, index|
|
|
63
|
+
cards = instructions_cards(request)
|
|
64
|
+
|
|
65
|
+
instructions_count += cards.length
|
|
66
|
+
|
|
67
|
+
perform_response_logical_model_validation(
|
|
68
|
+
cards,
|
|
69
|
+
nil,
|
|
70
|
+
request.request_body,
|
|
71
|
+
index,
|
|
72
|
+
'2.2.1'
|
|
73
|
+
)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
skip_if instructions_count.zero?,
|
|
77
|
+
"#{tested_hook_name} hook responses do not contain any Instructions cards."
|
|
78
|
+
|
|
79
|
+
no_error_validation('Not all Instructions cards were valid. See messages for more information.')
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/launch_smart_app_card_validation_test.rb
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
require_relative '../../server_test_helper'
|
|
2
|
+
require_relative '../../server_hook_helper'
|
|
3
|
+
require_relative '../../../cross_suite/cards_identification'
|
|
4
|
+
require_relative '../../../cross_suite/response_logical_model_validation'
|
|
5
|
+
|
|
6
|
+
module DaVinciCRDTestKit
|
|
7
|
+
module V221
|
|
8
|
+
class LaunchSmartAppCardValidationTest < Inferno::Test
|
|
9
|
+
include DaVinciCRDTestKit::ServerTestHelper
|
|
10
|
+
include DaVinciCRDTestKit::ServerHookHelper
|
|
11
|
+
include DaVinciCRDTestKit::CardsIdentification
|
|
12
|
+
include DaVinciCRDTestKit::ResponseLogicalModelValidation
|
|
13
|
+
|
|
14
|
+
title 'Launch SMART Application cards are valid'
|
|
15
|
+
id :crd_v221_launch_smart_app_card_validation
|
|
16
|
+
description %(
|
|
17
|
+
This test verifies the presence of valid Launch SMART Application cards
|
|
18
|
+
within the CRD service responses.
|
|
19
|
+
|
|
20
|
+
As per the [Da Vinci CRD Implementation
|
|
21
|
+
Guide](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#launch-smart-application-response-type),
|
|
22
|
+
Launch SMART Application cards must contain links with the type set to
|
|
23
|
+
`smart`. This test checks for the presence of any Launch SMART
|
|
24
|
+
Application cards by verifying:
|
|
25
|
+
- The existence of a `links` array within each card.
|
|
26
|
+
- That every link in the `links` array of a card is of type `smart`.
|
|
27
|
+
|
|
28
|
+
The test will be skipped if no Launch SMART Application cards are found
|
|
29
|
+
within the returned valid cards.
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@resp-72'
|
|
33
|
+
|
|
34
|
+
input :invoked_hook
|
|
35
|
+
|
|
36
|
+
optional
|
|
37
|
+
|
|
38
|
+
def body_has_no_cards?(body)
|
|
39
|
+
!body.is_a?(Hash) ||
|
|
40
|
+
body['cards'].blank? ||
|
|
41
|
+
!body['cards'].is_a?(Array) ||
|
|
42
|
+
!body['cards'].all?(Hash)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def launch_smart_app_cards(request)
|
|
46
|
+
return [] if request.status != 200
|
|
47
|
+
|
|
48
|
+
response_body = JSON.parse(request.response_body)
|
|
49
|
+
|
|
50
|
+
return [] if body_has_no_cards?(response_body)
|
|
51
|
+
|
|
52
|
+
response_body['cards'].select { |card| launch_smart_app_response_type? card }
|
|
53
|
+
rescue JSON::ParserError
|
|
54
|
+
[]
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
run do
|
|
58
|
+
load_tagged_requests(tested_hook_name)
|
|
59
|
+
|
|
60
|
+
launch_smart_app_count = 0
|
|
61
|
+
|
|
62
|
+
successful_requests = requests.select { |request| request.status == 200 }
|
|
63
|
+
|
|
64
|
+
skip_if successful_requests.blank?,
|
|
65
|
+
'No successful hook responses were received'
|
|
66
|
+
|
|
67
|
+
requests.each_with_index do |request, index|
|
|
68
|
+
cards = launch_smart_app_cards(request)
|
|
69
|
+
|
|
70
|
+
launch_smart_app_count += cards.length
|
|
71
|
+
|
|
72
|
+
perform_response_logical_model_validation(
|
|
73
|
+
cards,
|
|
74
|
+
nil,
|
|
75
|
+
request.request_body,
|
|
76
|
+
index,
|
|
77
|
+
'2.2.1'
|
|
78
|
+
)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
skip_if launch_smart_app_count.zero?,
|
|
82
|
+
"#{tested_hook_name} hook responses do not contain any Launch SMART App cards."
|
|
83
|
+
|
|
84
|
+
no_error_validation('Not all Launch SMART App cards were valid. See messages for more information.')
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
require_relative 'all_responses_include_coverage_information_test'
|
|
2
|
+
require_relative 'hook_request_resource_resolution'
|
|
3
|
+
|
|
4
|
+
module DaVinciCRDTestKit
|
|
5
|
+
module V221
|
|
6
|
+
class OrderDispatchCoverageInformationTest < AllResponsesIncludeCoverageInformationTest
|
|
7
|
+
include HookRequestResourceResolution
|
|
8
|
+
|
|
9
|
+
id :crd_v221_order_dispatch_coverage_information
|
|
10
|
+
|
|
11
|
+
input :invoked_hook
|
|
12
|
+
|
|
13
|
+
input :mock_ehr_bundle
|
|
14
|
+
|
|
15
|
+
def order_resources(hook_call_body)
|
|
16
|
+
references = hook_call_body.dig('context', 'dispatchedOrders')
|
|
17
|
+
resources = []
|
|
18
|
+
unmatched_references = []
|
|
19
|
+
|
|
20
|
+
Array(references).each do |reference|
|
|
21
|
+
resource = find_resource_by_reference(hook_call_body, reference)
|
|
22
|
+
|
|
23
|
+
if resource.present?
|
|
24
|
+
resources << resource
|
|
25
|
+
else
|
|
26
|
+
unmatched_references << reference
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
skip_if unmatched_references.present?,
|
|
31
|
+
'The following `dispatchedOrders` are not included in the Mock EHR Data input or prefetch: ' \
|
|
32
|
+
"#{unmatched_references.join(', ')}"
|
|
33
|
+
|
|
34
|
+
resources
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
require_relative '../../server_test_helper'
|
|
2
|
+
require_relative '../../server_hook_helper'
|
|
3
|
+
require_relative '../../../cross_suite/cards_identification'
|
|
4
|
+
require_relative '../../../cross_suite/response_logical_model_validation'
|
|
5
|
+
|
|
6
|
+
module DaVinciCRDTestKit
|
|
7
|
+
module V221
|
|
8
|
+
class ProposeAlternateRequestCardValidationTest < Inferno::Test
|
|
9
|
+
include DaVinciCRDTestKit::ServerTestHelper
|
|
10
|
+
include DaVinciCRDTestKit::ServerHookHelper
|
|
11
|
+
include DaVinciCRDTestKit::CardsIdentification
|
|
12
|
+
include DaVinciCRDTestKit::ResponseLogicalModelValidation
|
|
13
|
+
|
|
14
|
+
title 'Propose Alternate Request cards are valid'
|
|
15
|
+
id :crd_v221_propose_alternate_request_card_validation
|
|
16
|
+
description %( This test validates that all [Propose Alternate
|
|
17
|
+
Request](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#propose-alternate-request-response-type)
|
|
18
|
+
cards received are valid. It checks for the presence of a card's
|
|
19
|
+
suggestion with a single action with `Action.type` of `update` or a card
|
|
20
|
+
with at least two actions, one with `Action.type` of `delete` and the
|
|
21
|
+
other with `Action.type` of `create`.
|
|
22
|
+
)
|
|
23
|
+
optional
|
|
24
|
+
|
|
25
|
+
verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@resp-3',
|
|
26
|
+
'hl7.fhir.us.davinci-crd_2.2.1@resp-55',
|
|
27
|
+
'hl7.fhir.us.davinci-crd_2.2.1@resp-56'
|
|
28
|
+
|
|
29
|
+
input :invoked_hook
|
|
30
|
+
|
|
31
|
+
def body_has_no_cards?(body)
|
|
32
|
+
!body.is_a?(Hash) ||
|
|
33
|
+
body['cards'].blank? ||
|
|
34
|
+
!body['cards'].is_a?(Array) ||
|
|
35
|
+
!body['cards'].all?(Hash)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def alternate_request_cards(request)
|
|
39
|
+
return [] if request.status != 200
|
|
40
|
+
|
|
41
|
+
response_body = JSON.parse(request.response_body)
|
|
42
|
+
|
|
43
|
+
return [] if body_has_no_cards?(response_body)
|
|
44
|
+
|
|
45
|
+
response_body['cards'].select { |card| propose_alternative_request_response_type? card }
|
|
46
|
+
rescue JSON::ParserError
|
|
47
|
+
[]
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
run do
|
|
51
|
+
load_tagged_requests(tested_hook_name)
|
|
52
|
+
|
|
53
|
+
alternate_request_count = 0
|
|
54
|
+
|
|
55
|
+
successful_requests = requests.select { |request| request.status == 200 }
|
|
56
|
+
|
|
57
|
+
skip_if successful_requests.blank?,
|
|
58
|
+
'No successful hook responses were received'
|
|
59
|
+
|
|
60
|
+
requests.each_with_index do |request, index|
|
|
61
|
+
cards = alternate_request_cards(request)
|
|
62
|
+
|
|
63
|
+
alternate_request_count += cards.length
|
|
64
|
+
|
|
65
|
+
perform_response_logical_model_validation(
|
|
66
|
+
cards,
|
|
67
|
+
nil,
|
|
68
|
+
request.request_body,
|
|
69
|
+
index,
|
|
70
|
+
'2.2.1'
|
|
71
|
+
)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
skip_if alternate_request_count.zero?,
|
|
75
|
+
"#{tested_hook_name} hook responses do not contain any Propose Alternate Request cards."
|
|
76
|
+
|
|
77
|
+
no_error_validation('Not all Propose Alternate Request cards were valid. See messages for more information')
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/service_response_validation_test.rb
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
require_relative '../../../cross_suite/cards_validation'
|
|
2
|
+
require_relative '../../../cross_suite/response_logical_model_validation'
|
|
3
|
+
require_relative '../../server_hook_helper'
|
|
4
|
+
|
|
5
|
+
module DaVinciCRDTestKit
|
|
6
|
+
module V221
|
|
7
|
+
class ServiceResponseValidationTest < Inferno::Test
|
|
8
|
+
include DaVinciCRDTestKit::CardsValidation
|
|
9
|
+
include DaVinciCRDTestKit::ResponseLogicalModelValidation
|
|
10
|
+
include DaVinciCRDTestKit::ServerHookHelper
|
|
11
|
+
|
|
12
|
+
title 'Service responses contain valid cards and systemActions'
|
|
13
|
+
id :crd_v221_service_response_validation
|
|
14
|
+
description %(
|
|
15
|
+
This test validates the responses against the [CRD v2.2.1 logical
|
|
16
|
+
models](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/artifacts.html#4).
|
|
17
|
+
|
|
18
|
+
This test implements [corrections to errors in the logical
|
|
19
|
+
models](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Logical-Model-Validation-Changes).
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@resp-4',
|
|
23
|
+
'hl7.fhir.us.davinci-crd_2.2.1@resp-5',
|
|
24
|
+
'hl7.fhir.us.davinci-crd_2.2.1@resp-13'
|
|
25
|
+
|
|
26
|
+
input :invoked_hook
|
|
27
|
+
|
|
28
|
+
run do
|
|
29
|
+
load_tagged_requests(tested_hook_name)
|
|
30
|
+
|
|
31
|
+
skip_if requests.blank?, "No #{tested_hook_name} request was made in a previous test as expected."
|
|
32
|
+
|
|
33
|
+
successful_requests = requests.select { |request| request.status == 200 }
|
|
34
|
+
|
|
35
|
+
skip_if successful_requests.empty?, 'All service requests were unsuccessful.'
|
|
36
|
+
|
|
37
|
+
info do
|
|
38
|
+
unsuccessful_count = (requests - successful_requests).length
|
|
39
|
+
|
|
40
|
+
assert unsuccessful_count.zero?, "#{unsuccessful_count} out of #{requests.length} requests were unsuccessful"
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
successful_requests.each_with_index do |request, index|
|
|
44
|
+
service_response = JSON.parse(request.response_body)
|
|
45
|
+
|
|
46
|
+
conforms_to_logical_model?(
|
|
47
|
+
service_response,
|
|
48
|
+
'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/CRDHooksResponseBase|2.2.1',
|
|
49
|
+
message_prefix: "Request #{index}: "
|
|
50
|
+
)
|
|
51
|
+
rescue JSON::ParserError
|
|
52
|
+
add_message('error', "Invalid JSON: server response #{index + 1} is not valid JSON.")
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
messages.reject! do |message|
|
|
56
|
+
message[:type] == 'error' && message[:message].end_with?('Resource requires an id, but none is present')
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
no_error_validation('Some service responses are not valid. Check messages for issues found.')
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_cds_hooks_elements_test.rb
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
require_relative '../../../cross_suite/cards_identification'
|
|
2
|
+
require_relative '../../server_hook_helper'
|
|
3
|
+
require_relative '../server_urls'
|
|
4
|
+
|
|
5
|
+
module DaVinciCRDTestKit
|
|
6
|
+
module V221
|
|
7
|
+
class UnknownCDSHooksElementsTest < Inferno::Test
|
|
8
|
+
include DaVinciCRDTestKit::CardsIdentification
|
|
9
|
+
include DaVinciCRDTestKit::ServerHookHelper
|
|
10
|
+
include DaVinciCRDTestKit::V221::ServerURLs
|
|
11
|
+
|
|
12
|
+
title 'Server ignores unknown CDS Hooks elements'
|
|
13
|
+
id :crd_v221_unknown_cds_hooks_elements
|
|
14
|
+
description %(
|
|
15
|
+
If a request resulted in a successful response with a coverage
|
|
16
|
+
information system action, a follow-up request is made with an element
|
|
17
|
+
with a random key and value added to the CDS hooks request. This test
|
|
18
|
+
verifes that this follow-up request also resulted in a successful
|
|
19
|
+
response with a coverage information system action to verify that
|
|
20
|
+
unknown CDS Hooks elements are ignored.
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@found-33'
|
|
24
|
+
|
|
25
|
+
def primary_hook?
|
|
26
|
+
['appointment-book', 'order-sign', 'order-dispatch'].include? tested_hook_name
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def parsed_body(json)
|
|
30
|
+
JSON.parse(json)
|
|
31
|
+
rescue JSON::ParserError
|
|
32
|
+
nil
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
run do
|
|
36
|
+
load_tagged_requests(tested_hook_name, UNKNOWN_ELEMENT_TAG)
|
|
37
|
+
|
|
38
|
+
if requests.empty?
|
|
39
|
+
message = "No successful #{tested_hook_name} response contained a coverage-info action."
|
|
40
|
+
if primary_hook?
|
|
41
|
+
skip message
|
|
42
|
+
else
|
|
43
|
+
omit message
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
requests.each do |request|
|
|
48
|
+
unless request.status == 200
|
|
49
|
+
add_message(
|
|
50
|
+
'error',
|
|
51
|
+
"Server request returned HTTP #{request.status} for a request with an unknown CDS Hooks element; " \
|
|
52
|
+
'expected HTTP 200.'
|
|
53
|
+
)
|
|
54
|
+
next
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
response_body = parsed_body(request.response_body)
|
|
58
|
+
unless response_body.is_a?(Hash)
|
|
59
|
+
add_message('error', 'Server response to a request with an unknown CDS Hooks element was not valid JSON.')
|
|
60
|
+
next
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
next if coverage_info_system_action_response?(response_body)
|
|
64
|
+
|
|
65
|
+
add_message(
|
|
66
|
+
'error',
|
|
67
|
+
'Server response to a request with an unknown CDS Hooks element did not contain ' \
|
|
68
|
+
'a coverage information system action.'
|
|
69
|
+
)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
assert_no_error_messages(
|
|
73
|
+
'Responses to requests with an unknown CDS Hooks element were not valid. Check messages for details.'
|
|
74
|
+
)
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
require_relative '../../../cross_suite/cards_identification'
|
|
2
|
+
require_relative '../../server_hook_helper'
|
|
3
|
+
require_relative '../server_urls'
|
|
4
|
+
|
|
5
|
+
module DaVinciCRDTestKit
|
|
6
|
+
module V221
|
|
7
|
+
class UnknownConfigurationTest < Inferno::Test
|
|
8
|
+
include DaVinciCRDTestKit::CardsIdentification
|
|
9
|
+
include DaVinciCRDTestKit::ServerHookHelper
|
|
10
|
+
include DaVinciCRDTestKit::V221::ServerURLs
|
|
11
|
+
|
|
12
|
+
title 'Server ignores unknown configuration information'
|
|
13
|
+
id :crd_v221_unknown_configuration
|
|
14
|
+
description %(
|
|
15
|
+
If a request resulted in a successful response with a coverage
|
|
16
|
+
information system action, a follow-up request is made with a random
|
|
17
|
+
configuration key set to `true`. This test verifes that this follow-up
|
|
18
|
+
request also resulted in a successful response with a coverage
|
|
19
|
+
information system action to verify that unknown configuration values
|
|
20
|
+
are ignored.
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@dev-17'
|
|
24
|
+
|
|
25
|
+
def primary_hook?
|
|
26
|
+
['appointment-book', 'order-sign', 'order-dispatch'].include? tested_hook_name
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def parsed_body(json)
|
|
30
|
+
JSON.parse(json)
|
|
31
|
+
rescue JSON::ParserError
|
|
32
|
+
nil
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
run do
|
|
36
|
+
load_tagged_requests(tested_hook_name, UNKNOWN_CONFIGURATION_TAG)
|
|
37
|
+
|
|
38
|
+
if requests.empty?
|
|
39
|
+
message = "No successful #{tested_hook_name} response contained a coverage-info action."
|
|
40
|
+
if primary_hook?
|
|
41
|
+
skip message
|
|
42
|
+
else
|
|
43
|
+
omit message
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
requests.each do |request|
|
|
48
|
+
unless request.status == 200
|
|
49
|
+
add_message(
|
|
50
|
+
'error',
|
|
51
|
+
"Server request returned HTTP #{request.status} for a request with an unknown configuration option; " \
|
|
52
|
+
'expected HTTP 200.'
|
|
53
|
+
)
|
|
54
|
+
next
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
response_body = parsed_body(request.response_body)
|
|
58
|
+
unless response_body.is_a?(Hash)
|
|
59
|
+
add_message('error', 'Server response to a request with an unknown configuration value was not valid JSON.')
|
|
60
|
+
next
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
next if coverage_info_system_action_response?(response_body)
|
|
64
|
+
|
|
65
|
+
add_message(
|
|
66
|
+
'error',
|
|
67
|
+
'Server response to a request with an unknown configuration value did not contain ' \
|
|
68
|
+
'a coverage information system action.'
|
|
69
|
+
)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
assert_no_error_messages(
|
|
73
|
+
'Responses to requests with unknown configuration were not valid. Check messages for details.'
|
|
74
|
+
)
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
require_relative '../../../cross_suite/cards_identification'
|
|
2
|
+
require_relative '../../server_hook_helper'
|
|
3
|
+
require_relative '../server_urls'
|
|
4
|
+
|
|
5
|
+
module DaVinciCRDTestKit
|
|
6
|
+
module V221
|
|
7
|
+
class UnknownContextTest < Inferno::Test
|
|
8
|
+
include DaVinciCRDTestKit::CardsIdentification
|
|
9
|
+
include DaVinciCRDTestKit::ServerHookHelper
|
|
10
|
+
include DaVinciCRDTestKit::V221::ServerURLs
|
|
11
|
+
|
|
12
|
+
title 'Server ignores unknown context information'
|
|
13
|
+
id :crd_v221_unknown_context
|
|
14
|
+
description %(
|
|
15
|
+
If a request resulted in a successful response with a coverage
|
|
16
|
+
information system action, a follow-up request is made with a random
|
|
17
|
+
context key set to a random value. This test verifes that this follow-up
|
|
18
|
+
request also resulted in a successful response with a coverage
|
|
19
|
+
information system action to verify that unknown context values are
|
|
20
|
+
ignored.
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-23'
|
|
24
|
+
|
|
25
|
+
def primary_hook?
|
|
26
|
+
['appointment-book', 'order-sign', 'order-dispatch'].include? tested_hook_name
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def parsed_body(json)
|
|
30
|
+
JSON.parse(json)
|
|
31
|
+
rescue JSON::ParserError
|
|
32
|
+
nil
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
run do
|
|
36
|
+
load_tagged_requests(tested_hook_name, UNKNOWN_CONTEXT_TAG)
|
|
37
|
+
|
|
38
|
+
if requests.empty?
|
|
39
|
+
message = "No successful #{tested_hook_name} response contained a coverage-info action."
|
|
40
|
+
if primary_hook?
|
|
41
|
+
skip message
|
|
42
|
+
else
|
|
43
|
+
omit message
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
requests.each do |request|
|
|
48
|
+
unless request.status == 200
|
|
49
|
+
add_message(
|
|
50
|
+
'error',
|
|
51
|
+
"Server request returned HTTP #{request.status} for a request with an unknown context option; " \
|
|
52
|
+
'expected HTTP 200.'
|
|
53
|
+
)
|
|
54
|
+
next
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
response_body = parsed_body(request.response_body)
|
|
58
|
+
unless response_body.is_a?(Hash)
|
|
59
|
+
add_message('error', 'Server response to a request with an unknown context element was not valid JSON.')
|
|
60
|
+
next
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
next if coverage_info_system_action_response?(response_body)
|
|
64
|
+
|
|
65
|
+
add_message(
|
|
66
|
+
'error',
|
|
67
|
+
'Server response to a request with an unknown context element did not contain ' \
|
|
68
|
+
'a coverage information system action.'
|
|
69
|
+
)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
assert_no_error_messages(
|
|
73
|
+
'Responses to requests with unknown context were not valid. Check messages for details.'
|
|
74
|
+
)
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require_relative '../../server_hook_helper'
|
|
2
|
+
require_relative '../../../cross_suite/tags'
|
|
3
|
+
|
|
4
|
+
module DaVinciCRDTestKit
|
|
5
|
+
module V221
|
|
6
|
+
class VerifyResponseWithoutBillingOptionsTest < Inferno::Test
|
|
7
|
+
include DaVinciCRDTestKit::ServerHookHelper
|
|
8
|
+
|
|
9
|
+
title 'Server does not require the billing-options extension'
|
|
10
|
+
id :verify_response_without_billing_options
|
|
11
|
+
description <<~DESCRIPTION
|
|
12
|
+
The IG states that, "CRD servers **SHALL NOT** depend on the
|
|
13
|
+
billing-options extension being present in order to provide a response."
|
|
14
|
+
|
|
15
|
+
This test verifies that a successful response was received for a request
|
|
16
|
+
without any billing-options extensions.
|
|
17
|
+
DESCRIPTION
|
|
18
|
+
|
|
19
|
+
verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@billopt-2'
|
|
20
|
+
|
|
21
|
+
BILLING_OPTIONS_URL = 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-billing-options'.freeze
|
|
22
|
+
|
|
23
|
+
run do
|
|
24
|
+
ALL_HOOK_TAGS.each do |tag|
|
|
25
|
+
load_tagged_requests(tag)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
skip_if requests.blank?, 'No requests were made in a previous test as expected.'
|
|
29
|
+
|
|
30
|
+
successful_requests = requests.select { |request| request.status == 200 }
|
|
31
|
+
skip_if successful_requests.empty?, 'All service requests were unsuccessful.'
|
|
32
|
+
|
|
33
|
+
requests_without_billing_options =
|
|
34
|
+
successful_requests.reject { |request| request.request_body.include? BILLING_OPTIONS_URL }
|
|
35
|
+
|
|
36
|
+
skip_if requests_without_billing_options.blank?,
|
|
37
|
+
'All successful requests included the billing options extension. ' \
|
|
38
|
+
'Provide service call inputs which do not include the billing options extension ' \
|
|
39
|
+
'to verify that the server does not require the extension.'
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require_relative '../../server_hook_helper'
|
|
2
|
+
require_relative '../../../cross_suite/tags'
|
|
3
|
+
|
|
4
|
+
module DaVinciCRDTestKit
|
|
5
|
+
module V221
|
|
6
|
+
class VerifyResponseWithoutConfigurationTest < Inferno::Test
|
|
7
|
+
include DaVinciCRDTestKit::ServerHookHelper
|
|
8
|
+
|
|
9
|
+
title 'Server does not require configuration options'
|
|
10
|
+
id :verify_response_without_configuration
|
|
11
|
+
description <<~DESCRIPTION
|
|
12
|
+
The IG states that, "CRD Servers SHALL NOT require the inclusion of
|
|
13
|
+
configuration information in a hook call (i.e. no hook invocation is
|
|
14
|
+
permitted to fail because configuration information was not included)."
|
|
15
|
+
|
|
16
|
+
This test verifies that a successful response was received for a request
|
|
17
|
+
without any configuration options.
|
|
18
|
+
DESCRIPTION
|
|
19
|
+
|
|
20
|
+
verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@dev-15'
|
|
21
|
+
|
|
22
|
+
CONFIGURATION_KEY = 'davinci-crd.configuration'.freeze
|
|
23
|
+
|
|
24
|
+
run do
|
|
25
|
+
ALL_HOOK_TAGS.each do |tag|
|
|
26
|
+
load_tagged_requests(tag)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
skip_if requests.blank?, 'No requests were made in a previous test as expected.'
|
|
30
|
+
|
|
31
|
+
successful_requests = requests.select { |request| request.status == 200 }
|
|
32
|
+
skip_if successful_requests.empty?, 'All service requests were unsuccessful.'
|
|
33
|
+
|
|
34
|
+
requests_without_configuration_options =
|
|
35
|
+
successful_requests.reject { |request| request.request_body.include? CONFIGURATION_KEY }
|
|
36
|
+
|
|
37
|
+
skip_if requests_without_configuration_options.blank?,
|
|
38
|
+
'All successful requests included configuration options. ' \
|
|
39
|
+
'Provide service call inputs which do not include any configuration options ' \
|
|
40
|
+
'to verify that the server does not require them.'
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|