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.
Files changed (166) hide show
  1. checksums.yaml +4 -4
  2. data/config/presets/{inferno_crd_server_suite.json.erb → client_against_inferno_crd_server_suite.json.erb} +0 -33
  3. data/config/presets/{ri_crd_request_generator.json.erb → client_against_ri_crd_request_generator.json.erb} +1 -14
  4. data/config/presets/client_v221_against_inferno_crd_server_suite.json.erb +84 -0
  5. data/config/presets/client_v221_against_ri_br_provider.json.erb +31 -0
  6. data/config/presets/{ri_crd_request_generator.json_v221.json.erb → client_v221_against_ri_crd_request_generator.json.erb} +1 -1
  7. data/config/presets/{inferno_crd_client_suite.json.erb → server_against_inferno_crd_client_suite.json.erb} +0 -43
  8. data/config/presets/{ri_crd_server.json.erb → server_against_ri_crd_server.json.erb} +1 -44
  9. data/config/presets/{inferno_crd_client_suite_v221.json.erb → server_v221_against_inferno_crd_client_suite.json.erb} +48 -45
  10. 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
  11. data/config/presets/server_v221_against_inferno_g31_suite.json.erb +49 -0
  12. data/lib/davinci_crd_test_kit/client/cross_hook_helper.rb +26 -0
  13. data/lib/davinci_crd_test_kit/client/endpoints/custom_service_response.rb +7 -7
  14. data/lib/davinci_crd_test_kit/client/endpoints/gather_response_generation_data.rb +4 -1
  15. data/lib/davinci_crd_test_kit/client/endpoints/hook_request_endpoint.rb +70 -39
  16. data/lib/davinci_crd_test_kit/client/endpoints/mock_service_response.rb +26 -7
  17. data/lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/external_reference.json +1 -1
  18. data/lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/launch_smart_app.json +0 -7
  19. data/lib/davinci_crd_test_kit/client/endpoints/scenario_service_response.rb +54 -0
  20. data/lib/davinci_crd_test_kit/client/tagged_request_load_helper.rb +8 -27
  21. data/lib/davinci_crd_test_kit/client/v2.0.1/auth/retrieve_jwks_test.rb +35 -23
  22. data/lib/davinci_crd_test_kit/client/v2.0.1/auth/token_payload_test.rb +34 -21
  23. data/lib/davinci_crd_test_kit/client/v2.0.1/cds-services-v201.json +20 -20
  24. data/lib/davinci_crd_test_kit/client/v2.0.1/client_appointment_book_group.rb +12 -10
  25. data/lib/davinci_crd_test_kit/client/v2.0.1/client_encounter_discharge_group.rb +12 -10
  26. data/lib/davinci_crd_test_kit/client/v2.0.1/client_encounter_start_group.rb +12 -10
  27. data/lib/davinci_crd_test_kit/client/v2.0.1/client_hooks_group.rb +5 -5
  28. data/lib/davinci_crd_test_kit/client/v2.0.1/client_order_dispatch_group.rb +12 -10
  29. data/lib/davinci_crd_test_kit/client/v2.0.1/client_order_select_group.rb +12 -10
  30. data/lib/davinci_crd_test_kit/client/v2.0.1/client_order_sign_group.rb +12 -10
  31. data/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_coverage_information.rb +3 -36
  32. data/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_external_reference.rb +3 -36
  33. data/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_instructions.rb +3 -36
  34. data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_fetched_data_test.rb +4 -13
  35. data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_prefetch_equals_queried_test.rb +3 -13
  36. data/lib/davinci_crd_test_kit/client/v2.0.1/verify_response/client_display_cards_attest.rb +3 -13
  37. data/lib/davinci_crd_test_kit/client/v2.0.1/verify_response/inferno_response_validation.rb +3 -13
  38. data/lib/davinci_crd_test_kit/client/v2.2.1/api/client_coverage_info_update_test.rb +1 -1
  39. data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/attestation_instructions.rb +10 -0
  40. data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_authorized_scope_attestation_test.rb +45 -0
  41. data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_coverage_based_invocation_attestation_test.rb +44 -0
  42. data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_data_element_expectations_attestation_test.rb +44 -0
  43. data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_hook_invocation_logging_attestation_test.rb +43 -0
  44. data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_must_support_exposure_attestation_test.rb +43 -0
  45. data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_must_support_use_attestation_test.rb +41 -0
  46. data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_order_sign_support_attestation_test.rb +42 -0
  47. data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_prefetch_key_omission_attestation_test.rb +42 -0
  48. data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_resource_identifiers_attestation_test.rb +43 -0
  49. data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_response_case_distinction_attestation_test.rb +43 -0
  50. data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_security_and_privacy_attestation_test.rb +43 -0
  51. data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_workflow_integration_attestation_test.rb +44 -0
  52. data/lib/davinci_crd_test_kit/client/v2.2.1/auth/decode_auth_token_test.rb +1 -1
  53. data/lib/davinci_crd_test_kit/client/v2.2.1/auth/retrieve_jwks_test.rb +29 -18
  54. data/lib/davinci_crd_test_kit/client/v2.2.1/auth/token_payload_test.rb +35 -22
  55. data/lib/davinci_crd_test_kit/client/v2.2.1/cds-services-prefetch-subset-v221.json +47 -47
  56. data/lib/davinci_crd_test_kit/client/v2.2.1/cds-services-v221.json +50 -50
  57. data/lib/davinci_crd_test_kit/client/v2.2.1/client_appointment_book_group.rb +24 -15
  58. data/lib/davinci_crd_test_kit/client/v2.2.1/client_attestations_group.rb +49 -0
  59. data/lib/davinci_crd_test_kit/client/v2.2.1/client_cross_hook_group.rb +22 -6
  60. data/lib/davinci_crd_test_kit/client/v2.2.1/client_cross_hook_interaction_group.rb +98 -0
  61. data/lib/davinci_crd_test_kit/client/v2.2.1/client_encounter_discharge_group.rb +19 -11
  62. data/lib/davinci_crd_test_kit/client/v2.2.1/client_encounter_start_group.rb +19 -11
  63. data/lib/davinci_crd_test_kit/client/v2.2.1/client_fhir_api_group.rb +14 -12
  64. data/lib/davinci_crd_test_kit/client/v2.2.1/client_hooks_group.rb +25 -5
  65. data/lib/davinci_crd_test_kit/client/v2.2.1/client_long_running_hook_group.rb +3 -2
  66. data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_dispatch_group.rb +23 -15
  67. data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_select_group.rb +19 -11
  68. data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_sign_group.rb +23 -15
  69. data/lib/davinci_crd_test_kit/client/v2.2.1/client_registration_group.rb +6 -0
  70. data/lib/davinci_crd_test_kit/client/v2.2.1/client_scenarios_group.rb +26 -0
  71. data/lib/davinci_crd_test_kit/client/v2.2.1/client_self_pay_hook_group.rb +36 -0
  72. data/lib/davinci_crd_test_kit/client/v2.2.1/client_unknown_content_hook_group.rb +34 -0
  73. data/lib/davinci_crd_test_kit/client/v2.2.1/crd_client_suite.rb +24 -3
  74. data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_card_must_support_coverage_information_test.rb +1 -1
  75. data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_fhirpath_collection_as_comma_delimited_string_test.rb +4 -11
  76. data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_hook_instances_unique_test.rb +1 -9
  77. data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_location_address_propagation_test.rb +6 -2
  78. data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_prefetch_complete_and_subset_test.rb +3 -12
  79. data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/appointment_book_receive_request_test.rb +8 -89
  80. data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/base_hook_invocation_receive_request_test.rb +163 -0
  81. data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/cross_hooks_receive_request_test.rb +97 -0
  82. data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/encounter_discharge_receive_request_test.rb +8 -90
  83. data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/encounter_start_receive_request_test.rb +8 -90
  84. data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_dispatch_receive_request_test.rb +8 -98
  85. data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_select_receive_request_test.rb +8 -98
  86. data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_sign_receive_request_test.rb +8 -98
  87. data/lib/davinci_crd_test_kit/client/v2.2.1/long_running/client_long_running_receive_request_test.rb +10 -2
  88. data/lib/davinci_crd_test_kit/client/v2.2.1/long_running/client_skip_long_running_attestation_test.rb +11 -6
  89. data/lib/davinci_crd_test_kit/client/v2.2.1/registration/client_service_registration_attestation_test.rb +2 -1
  90. data/lib/davinci_crd_test_kit/client/v2.2.1/self_pay/client_self_pay_no_request_test.rb +30 -0
  91. data/lib/davinci_crd_test_kit/client/v2.2.1/self_pay/client_self_pay_workflow_test.rb +55 -0
  92. data/lib/davinci_crd_test_kit/client/v2.2.1/unknown_content/client_unknown_content_attestation_test.rb +99 -0
  93. data/lib/davinci_crd_test_kit/client/v2.2.1/unknown_content/client_unknown_content_receive_request_test.rb +62 -0
  94. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_conformance_test.rb +1 -1
  95. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_coverage_verification_test.rb +10 -2
  96. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_data_fetch_verification_test.rb +1 -1
  97. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_granted_scopes_test.rb +1 -1
  98. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_prefetch_complete_test.rb +7 -1
  99. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_prefetch_profiles_test.rb +1 -1
  100. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_requested_version_test.rb +1 -1
  101. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_secured_transport_test.rb +1 -1
  102. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/client_display_cards_attest.rb +54 -21
  103. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/hook_response_support_coverage_information_test.rb +1 -1
  104. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/inferno_response_validation.rb +6 -3
  105. data/lib/davinci_crd_test_kit/cross_suite/cards_identification.rb +18 -0
  106. data/lib/davinci_crd_test_kit/cross_suite/logical_models_override_helper.rb +30 -13
  107. data/lib/davinci_crd_test_kit/cross_suite/prefetch_completeness_checker.rb +25 -11
  108. data/lib/davinci_crd_test_kit/cross_suite/prefetch_profile_validation.rb +2 -0
  109. data/lib/davinci_crd_test_kit/cross_suite/requests_logical_model_validation.rb +28 -28
  110. data/lib/davinci_crd_test_kit/cross_suite/response_logical_model_validation.rb +211 -43
  111. data/lib/davinci_crd_test_kit/cross_suite/tags.rb +7 -0
  112. data/lib/davinci_crd_test_kit/requirements/cds-hooks_3.0.0-ballot_requirements.xlsx +0 -0
  113. data/lib/davinci_crd_test_kit/requirements/davinci_crd_test_kit_requirements.csv +6 -2
  114. data/lib/davinci_crd_test_kit/requirements/generated/crd_client_requirements_coverage.csv +107 -107
  115. data/lib/davinci_crd_test_kit/requirements/generated/crd_client_v221_requirements_coverage.csv +101 -97
  116. data/lib/davinci_crd_test_kit/requirements/generated/crd_server_requirements_coverage.csv +18 -18
  117. data/lib/davinci_crd_test_kit/requirements/generated/crd_server_v221_requirements_coverage.csv +43 -39
  118. data/lib/davinci_crd_test_kit/requirements/hl7.fhir.us.davinci-crd_2.2.1_requirements.xlsx +0 -0
  119. data/lib/davinci_crd_test_kit/server/jobs/invoke_hook.rb +3 -3
  120. data/lib/davinci_crd_test_kit/server/jobs/invoke_hook_no_special_requests.rb +17 -0
  121. data/lib/davinci_crd_test_kit/server/jobs/invoke_hook_with_bad_auth.rb +14 -0
  122. data/lib/davinci_crd_test_kit/server/server_abstract_invoke_hook_test.rb +24 -6
  123. data/lib/davinci_crd_test_kit/server/server_hook_helper.rb +2 -2
  124. data/lib/davinci_crd_test_kit/server/v2.0.1/crd_server_suite.rb +1 -1
  125. data/lib/davinci_crd_test_kit/server/v2.0.1/server_hooks_group.rb +5 -5
  126. data/lib/davinci_crd_test_kit/server/v2.2.1/crd_server_suite.rb +3 -0
  127. data/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_standard_prefetch_expressions_test.rb +165 -0
  128. data/lib/davinci_crd_test_kit/server/v2.2.1/interaction/server_invoke_hook_single_request_test.rb +22 -0
  129. data/lib/davinci_crd_test_kit/server/v2.2.1/server_appointment_book_group.rb +10 -102
  130. data/lib/davinci_crd_test_kit/server/v2.2.1/server_demonstrate_hook_response_group.rb +3 -2
  131. data/lib/davinci_crd_test_kit/server/v2.2.1/server_discovery_group.rb +2 -0
  132. data/lib/davinci_crd_test_kit/server/v2.2.1/server_encounter_discharge_group.rb +10 -97
  133. data/lib/davinci_crd_test_kit/server/v2.2.1/server_encounter_start_group.rb +10 -97
  134. data/lib/davinci_crd_test_kit/server/v2.2.1/server_hooks_group.rb +5 -5
  135. data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_dispatch_group.rb +10 -103
  136. data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_select_group.rb +12 -116
  137. data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_sign_group.rb +12 -121
  138. data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_response_group.rb +23 -0
  139. data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/coverage_info_reason_test.rb +108 -0
  140. data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/coverage_not_found_group.rb +116 -0
  141. data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/no_active_coverage_group.rb +115 -0
  142. data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/no_member_found_group.rb +117 -0
  143. data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/technical_issues_group.rb +121 -0
  144. data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/technical_issues_invoke_test.rb +22 -0
  145. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_context_validation_test.rb +1 -0
  146. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_optional_fields_validation_test.rb +1 -0
  147. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_required_fields_validation_test.rb +1 -0
  148. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/additional_orders_validation_test.rb +78 -35
  149. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_card_absence_test.rb +76 -0
  150. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_system_action_validation_test.rb +70 -124
  151. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/create_or_update_coverage_info_response_validation_test.rb +83 -39
  152. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/external_reference_card_validation_test.rb +59 -17
  153. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/form_completion_response_validation_test.rb +80 -45
  154. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/hook_request_resource_resolution.rb +37 -0
  155. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/instructions_card_received_test.rb +57 -6
  156. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/launch_smart_app_card_validation_test.rb +56 -17
  157. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/propose_alternate_request_card_validation_test.rb +52 -25
  158. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/service_response_validation_test.rb +17 -51
  159. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_cds_hooks_elements_test.rb +1 -1
  160. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_configuration_test.rb +1 -1
  161. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_context_test.rb +1 -1
  162. data/lib/davinci_crd_test_kit/version.rb +2 -2
  163. metadata +54 -16
  164. data/config/presets/inferno_crd_server_suite_v221.json.erb +0 -94
  165. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/card_optional_fields_validation_test.rb +0 -57
  166. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_system_action_received_test.rb +0 -65
@@ -1,7 +1,7 @@
1
1
  require_relative '../../server_test_helper'
2
2
  require_relative '../../server_hook_helper'
3
3
  require_relative '../../../cross_suite/cards_identification'
4
- require_relative '../../../cross_suite/cards_validation'
4
+ require_relative '../../../cross_suite/response_logical_model_validation'
5
5
 
6
6
  module DaVinciCRDTestKit
7
7
  module V221
@@ -9,40 +9,79 @@ module DaVinciCRDTestKit
9
9
  include DaVinciCRDTestKit::ServerTestHelper
10
10
  include DaVinciCRDTestKit::ServerHookHelper
11
11
  include DaVinciCRDTestKit::CardsIdentification
12
- include DaVinciCRDTestKit::CardsValidation
12
+ include DaVinciCRDTestKit::ResponseLogicalModelValidation
13
13
 
14
14
  title 'Launch SMART Application cards are valid'
15
15
  id :crd_v221_launch_smart_app_card_validation
16
16
  description %(
17
- This test verifies the presence of valid Launch SMART Application cards within the list of valid cards
18
- returned by the CRD service.
19
- As per the [Da Vinci CRD Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#launch-smart-application),
20
- Launch SMART Application cards must contain links with the type set to `smart`.
21
- This test checks for the presence of any Launch SMART Application cards by verifying:
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:
22
25
  - The existence of a `links` array within each card.
23
26
  - That every link in the `links` array of a card is of type `smart`.
24
27
 
25
- The test will be skipped if no Launch SMART Application cards are found within the returned valid cards.
28
+ The test will be skipped if no Launch SMART Application cards are found
29
+ within the returned valid cards.
26
30
  )
27
31
 
28
32
  verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@resp-72'
29
33
 
34
+ input :invoked_hook
35
+
30
36
  optional
31
- input :valid_cards_with_links
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
32
56
 
33
57
  run do
34
- parsed_cards = parse_json(valid_cards_with_links)
35
- launch_smart_app_cards = parsed_cards.select { |card| launch_smart_app_response_type?(card) }
58
+ load_tagged_requests(tested_hook_name)
59
+
60
+ launch_smart_app_count = 0
61
+
62
+ successful_requests = requests.select { |request| request.status == 200 }
36
63
 
37
- skip_if launch_smart_app_cards.blank?,
38
- "#{tested_hook_name} hook response does not contain any Launch SMART App cards."
64
+ skip_if successful_requests.blank?,
65
+ 'No successful hook responses were received'
39
66
 
40
- launch_smart_app_cards.each do |card|
41
- smart_app_card_check(card)
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
+ )
42
79
  end
43
80
 
44
- assert messages.blank?,
45
- 'Not all Launch SMART App cards were valid. See messages for more information.'
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.')
46
85
  end
47
86
  end
48
87
  end
@@ -1,53 +1,80 @@
1
1
  require_relative '../../server_test_helper'
2
- require_relative '../../../cross_suite/suggestion_actions_validation'
3
2
  require_relative '../../server_hook_helper'
4
3
  require_relative '../../../cross_suite/cards_identification'
5
- require_relative '../../../cross_suite/cards_validation'
4
+ require_relative '../../../cross_suite/response_logical_model_validation'
6
5
 
7
6
  module DaVinciCRDTestKit
8
7
  module V221
9
8
  class ProposeAlternateRequestCardValidationTest < Inferno::Test
10
9
  include DaVinciCRDTestKit::ServerTestHelper
11
- include DaVinciCRDTestKit::SuggestionActionsValidation
12
10
  include DaVinciCRDTestKit::ServerHookHelper
13
11
  include DaVinciCRDTestKit::CardsIdentification
14
- include DaVinciCRDTestKit::CardsValidation
12
+ include DaVinciCRDTestKit::ResponseLogicalModelValidation
15
13
 
16
14
  title 'Propose Alternate Request cards are valid'
17
15
  id :crd_v221_propose_alternate_request_card_validation
18
- description %(
19
- This test validates that all [Propose Alternate Request](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#propose-alternate-request)
20
- cards received are valid. It checks for the presence of a card's suggestion
21
- with a single action with `Action.type` of `update` or a card with at least
22
- two actions, one with `Action.type` of `delete` and the other with
23
- `Action.type` of `create`.
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`.
24
22
  )
25
23
  optional
26
24
 
27
- verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@resp-55',
25
+ verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@resp-3',
26
+ 'hl7.fhir.us.davinci-crd_2.2.1@resp-55',
28
27
  'hl7.fhir.us.davinci-crd_2.2.1@resp-56'
29
28
 
30
- input :valid_cards_with_suggestions, :contexts
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
31
49
 
32
50
  run do
33
- parsed_cards = parse_json(valid_cards_with_suggestions)
34
- parsed_contexts = parse_json(contexts)
35
- proposed_alternate_cards = parsed_cards.filter do |card|
36
- propose_alternative_request_response_type?(card)
37
- end
51
+ load_tagged_requests(tested_hook_name)
52
+
53
+ alternate_request_count = 0
38
54
 
39
- skip_if proposed_alternate_cards.blank?,
40
- "#{tested_hook_name} hook response does not contain a Propose Alternate Request card."
55
+ successful_requests = requests.select { |request| request.status == 200 }
41
56
 
42
- proposed_alternate_cards.each do |card|
43
- card['suggestions'].each do |suggestion|
44
- actions_check(suggestion['actions'], parsed_contexts, ig_version: 'v221')
45
- end
57
+ skip_if successful_requests.blank?,
58
+ 'No successful hook responses were received'
46
59
 
47
- propose_alternate_request_check(card)
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
+ )
48
72
  end
49
73
 
50
- no_error_validation('Some Propose Alternate Request cards are not valid.')
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')
51
78
  end
52
79
  end
53
80
  end
@@ -12,83 +12,49 @@ module DaVinciCRDTestKit
12
12
  title 'Service responses contain valid cards and systemActions'
13
13
  id :crd_v221_service_response_validation
14
14
  description %(
15
- As per the [CDS Hooks spec section on CDS Service
16
- Response](https://cds-hooks.hl7.org/2.0/#cds-service-response), a
17
- successful server's response to a service request must be a JSON object
18
- containing a `cards` array and optionally a `systemActions` array.
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).
19
17
 
20
- Each card must contain the following required fields: `summary`, `indicator`, and `source`.
21
- The required fields must have a valid data structure.
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).
22
20
  )
23
21
 
24
22
  verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@resp-4',
25
23
  'hl7.fhir.us.davinci-crd_2.2.1@resp-5',
26
- 'hl7.fhir.us.davinci-crd_2.2.1@resp-13',
27
- 'hl7.fhir.us.davinci-crd_2.2.1@resp-22',
28
- 'hl7.fhir.us.davinci-crd_2.2.1@resp-24',
29
- 'hl7.fhir.us.davinci-crd_2.2.1@resp-56'
24
+ 'hl7.fhir.us.davinci-crd_2.2.1@resp-13'
30
25
 
31
26
  input :invoked_hook
32
- output :valid_cards, :valid_system_actions
33
-
34
- SYSTEM_ACTIONS_HOOK_NAMES = ['appointment-book', 'order-sign', 'order-dispatch'].freeze
35
-
36
- def valid_cards
37
- @valid_cards ||= []
38
- end
39
-
40
- def valid_system_actions
41
- @valid_system_actions ||= []
42
- end
43
-
44
- def system_actions_check(system_actions)
45
- system_actions.each do |action|
46
- current_error_count = messages.count { |msg| msg[:type] == 'error' }
47
- action_fields_validation(action, ig_version: 'v221')
48
- valid_system_actions << action if current_error_count == messages.count { |msg| msg[:type] == 'error' }
49
- end
50
- end
51
-
52
- def perform_system_actions_validation(system_actions, response_index)
53
- if SYSTEM_ACTIONS_HOOK_NAMES.include?(invoked_hook) && system_actions.nil?
54
- msg = "Server response #{response_index + 1} did not have the `systemActions` field, " \
55
- "which must be present for the `#{invoked_hook}` hook."
56
- add_message('error', msg)
57
- end
58
- return if system_actions.nil?
59
-
60
- unless system_actions.is_a?(Array)
61
- add_message('error', "`systemActions` of server response #{response_index + 1} is not an array.")
62
- return
63
- end
64
- system_actions_check(system_actions)
65
- end
66
27
 
67
28
  run do
68
29
  load_tagged_requests(tested_hook_name)
30
+
69
31
  skip_if requests.blank?, "No #{tested_hook_name} request was made in a previous test as expected."
32
+
70
33
  successful_requests = requests.select { |request| request.status == 200 }
34
+
71
35
  skip_if successful_requests.empty?, 'All service requests were unsuccessful.'
72
36
 
73
37
  info do
74
38
  unsuccessful_count = (requests - successful_requests).length
39
+
75
40
  assert unsuccessful_count.zero?, "#{unsuccessful_count} out of #{requests.length} requests were unsuccessful"
76
41
  end
77
42
 
78
43
  successful_requests.each_with_index do |request, index|
79
44
  service_response = JSON.parse(request.response_body)
80
- perform_cards_validation(service_response['cards'], service_response['systemActions'].present?, 'v221', index)
81
45
 
82
- perform_system_actions_validation(service_response['systemActions'], index)
83
-
84
- # perform_response_logical_model_validation(service_response['cards'], service_response['systemActions'],
85
- # index)
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
+ )
86
51
  rescue JSON::ParserError
87
52
  add_message('error', "Invalid JSON: server response #{index + 1} is not valid JSON.")
88
53
  end
89
54
 
90
- output valid_system_actions: valid_system_actions.to_json
91
- output valid_cards: valid_cards.to_json
55
+ messages.reject! do |message|
56
+ message[:type] == 'error' && message[:message].end_with?('Resource requires an id, but none is present')
57
+ end
92
58
 
93
59
  no_error_validation('Some service responses are not valid. Check messages for issues found.')
94
60
  end
@@ -60,7 +60,7 @@ module DaVinciCRDTestKit
60
60
  next
61
61
  end
62
62
 
63
- next if coverage_info_response?(response_body)
63
+ next if coverage_info_system_action_response?(response_body)
64
64
 
65
65
  add_message(
66
66
  'error',
@@ -60,7 +60,7 @@ module DaVinciCRDTestKit
60
60
  next
61
61
  end
62
62
 
63
- next if coverage_info_response?(response_body)
63
+ next if coverage_info_system_action_response?(response_body)
64
64
 
65
65
  add_message(
66
66
  'error',
@@ -60,7 +60,7 @@ module DaVinciCRDTestKit
60
60
  next
61
61
  end
62
62
 
63
- next if coverage_info_response?(response_body)
63
+ next if coverage_info_system_action_response?(response_body)
64
64
 
65
65
  add_message(
66
66
  'error',
@@ -1,4 +1,4 @@
1
1
  module DaVinciCRDTestKit
2
- VERSION = '0.14.0'.freeze
3
- LAST_UPDATED = '2026-06-02'.freeze # TODO: update next release
2
+ VERSION = '0.14.2'.freeze
3
+ LAST_UPDATED = '2026-09-08'.freeze # TODO: update next release
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: davinci_crd_test_kit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.0
4
+ version: 0.14.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Inferno Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-06-02 00:00:00.000000000 Z
11
+ date: 2026-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: inferno_core
@@ -16,20 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.3'
19
+ version: '1.4'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 1.3.1
22
+ version: 1.4.3
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: '1.3'
29
+ version: '1.4'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 1.3.1
32
+ version: 1.4.3
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: jwt
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -99,18 +99,21 @@ extensions: []
99
99
  extra_rdoc_files: []
100
100
  files:
101
101
  - LICENSE
102
- - config/presets/inferno_crd_client_suite.json.erb
103
- - config/presets/inferno_crd_client_suite_prefetch_subset_v221.json.erb
104
- - config/presets/inferno_crd_client_suite_v221.json.erb
105
- - config/presets/inferno_crd_server_suite.json.erb
106
- - config/presets/inferno_crd_server_suite_v221.json.erb
107
- - config/presets/ri_crd_request_generator.json.erb
108
- - config/presets/ri_crd_request_generator.json_v221.json.erb
109
- - config/presets/ri_crd_server.json.erb
102
+ - config/presets/client_against_inferno_crd_server_suite.json.erb
103
+ - config/presets/client_against_ri_crd_request_generator.json.erb
104
+ - config/presets/client_v221_against_inferno_crd_server_suite.json.erb
105
+ - config/presets/client_v221_against_ri_br_provider.json.erb
106
+ - config/presets/client_v221_against_ri_crd_request_generator.json.erb
107
+ - config/presets/server_against_inferno_crd_client_suite.json.erb
108
+ - config/presets/server_against_ri_crd_server.json.erb
109
+ - config/presets/server_v221_against_inferno_crd_client_suite.json.erb
110
+ - config/presets/server_v221_against_inferno_crd_client_suite_prefetch_subset.json.erb
111
+ - config/presets/server_v221_against_inferno_g31_suite.json.erb
110
112
  - lib/davinci_crd_test_kit.rb
111
113
  - lib/davinci_crd_test_kit/client/client_base_urls.rb
112
114
  - lib/davinci_crd_test_kit/client/client_hook_request_validation.rb
113
115
  - lib/davinci_crd_test_kit/client/crd_client_options.rb
116
+ - lib/davinci_crd_test_kit/client/cross_hook_helper.rb
114
117
  - lib/davinci_crd_test_kit/client/endpoints/cds_services_discovery_handler.rb
115
118
  - lib/davinci_crd_test_kit/client/endpoints/custom_service_response.rb
116
119
  - lib/davinci_crd_test_kit/client/endpoints/gather_response_generation_data.rb
@@ -123,6 +126,7 @@ files:
123
126
  - lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/launch_smart_app.json
124
127
  - lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/propose_alternate_request.json
125
128
  - lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/request_form_completion.json
129
+ - lib/davinci_crd_test_kit/client/endpoints/scenario_service_response.rb
126
130
  - lib/davinci_crd_test_kit/client/multi_request_message_helper.rb
127
131
  - lib/davinci_crd_test_kit/client/tagged_request_load_helper.rb
128
132
  - lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_create_test.rb
@@ -168,6 +172,19 @@ files:
168
172
  - lib/davinci_crd_test_kit/client/v2.0.1/verify_response/inferno_response_validation.rb
169
173
  - lib/davinci_crd_test_kit/client/v2.2.1/api/client_coverage_info_update_test.rb
170
174
  - lib/davinci_crd_test_kit/client/v2.2.1/api/client_crd_update_verification_group.rb
175
+ - lib/davinci_crd_test_kit/client/v2.2.1/attestations/attestation_instructions.rb
176
+ - lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_authorized_scope_attestation_test.rb
177
+ - lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_coverage_based_invocation_attestation_test.rb
178
+ - lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_data_element_expectations_attestation_test.rb
179
+ - lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_hook_invocation_logging_attestation_test.rb
180
+ - lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_must_support_exposure_attestation_test.rb
181
+ - lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_must_support_use_attestation_test.rb
182
+ - lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_order_sign_support_attestation_test.rb
183
+ - lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_prefetch_key_omission_attestation_test.rb
184
+ - lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_resource_identifiers_attestation_test.rb
185
+ - lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_response_case_distinction_attestation_test.rb
186
+ - lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_security_and_privacy_attestation_test.rb
187
+ - lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_workflow_integration_attestation_test.rb
171
188
  - lib/davinci_crd_test_kit/client/v2.2.1/auth/decode_auth_token_test.rb
172
189
  - lib/davinci_crd_test_kit/client/v2.2.1/auth/retrieve_jwks_test.rb
173
190
  - lib/davinci_crd_test_kit/client/v2.2.1/auth/token_header_test.rb
@@ -175,7 +192,9 @@ files:
175
192
  - lib/davinci_crd_test_kit/client/v2.2.1/cds-services-prefetch-subset-v221.json
176
193
  - lib/davinci_crd_test_kit/client/v2.2.1/cds-services-v221.json
177
194
  - lib/davinci_crd_test_kit/client/v2.2.1/client_appointment_book_group.rb
195
+ - lib/davinci_crd_test_kit/client/v2.2.1/client_attestations_group.rb
178
196
  - lib/davinci_crd_test_kit/client/v2.2.1/client_cross_hook_group.rb
197
+ - lib/davinci_crd_test_kit/client/v2.2.1/client_cross_hook_interaction_group.rb
179
198
  - lib/davinci_crd_test_kit/client/v2.2.1/client_encounter_discharge_group.rb
180
199
  - lib/davinci_crd_test_kit/client/v2.2.1/client_encounter_start_group.rb
181
200
  - lib/davinci_crd_test_kit/client/v2.2.1/client_fhir_api_group.rb
@@ -185,6 +204,9 @@ files:
185
204
  - lib/davinci_crd_test_kit/client/v2.2.1/client_order_select_group.rb
186
205
  - lib/davinci_crd_test_kit/client/v2.2.1/client_order_sign_group.rb
187
206
  - lib/davinci_crd_test_kit/client/v2.2.1/client_registration_group.rb
207
+ - lib/davinci_crd_test_kit/client/v2.2.1/client_scenarios_group.rb
208
+ - lib/davinci_crd_test_kit/client/v2.2.1/client_self_pay_hook_group.rb
209
+ - lib/davinci_crd_test_kit/client/v2.2.1/client_unknown_content_hook_group.rb
188
210
  - lib/davinci_crd_test_kit/client/v2.2.1/client_urls.rb
189
211
  - lib/davinci_crd_test_kit/client/v2.2.1/crd_client_suite.rb
190
212
  - lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_card_must_support_coverage_information_test.rb
@@ -193,6 +215,8 @@ files:
193
215
  - lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_location_address_propagation_test.rb
194
216
  - lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_prefetch_complete_and_subset_test.rb
195
217
  - lib/davinci_crd_test_kit/client/v2.2.1/invocation/appointment_book_receive_request_test.rb
218
+ - lib/davinci_crd_test_kit/client/v2.2.1/invocation/base_hook_invocation_receive_request_test.rb
219
+ - lib/davinci_crd_test_kit/client/v2.2.1/invocation/cross_hooks_receive_request_test.rb
196
220
  - lib/davinci_crd_test_kit/client/v2.2.1/invocation/encounter_discharge_receive_request_test.rb
197
221
  - lib/davinci_crd_test_kit/client/v2.2.1/invocation/encounter_start_receive_request_test.rb
198
222
  - lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_dispatch_receive_request_test.rb
@@ -202,6 +226,10 @@ files:
202
226
  - lib/davinci_crd_test_kit/client/v2.2.1/long_running/client_skip_long_running_attestation_test.rb
203
227
  - lib/davinci_crd_test_kit/client/v2.2.1/registration/client_registration_verification_test.rb
204
228
  - lib/davinci_crd_test_kit/client/v2.2.1/registration/client_service_registration_attestation_test.rb
229
+ - lib/davinci_crd_test_kit/client/v2.2.1/self_pay/client_self_pay_no_request_test.rb
230
+ - lib/davinci_crd_test_kit/client/v2.2.1/self_pay/client_self_pay_workflow_test.rb
231
+ - lib/davinci_crd_test_kit/client/v2.2.1/unknown_content/client_unknown_content_attestation_test.rb
232
+ - lib/davinci_crd_test_kit/client/v2.2.1/unknown_content/client_unknown_content_receive_request_test.rb
205
233
  - lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_conformance_test.rb
206
234
  - lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_coverage_verification_test.rb
207
235
  - lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_data_fetch_verification_test.rb
@@ -256,6 +284,8 @@ files:
256
284
  - lib/davinci_crd_test_kit/server/endpoints/mock_ehr/stress-test-Bundle.json
257
285
  - lib/davinci_crd_test_kit/server/endpoints/mock_ehr_endpoints.rb
258
286
  - lib/davinci_crd_test_kit/server/jobs/invoke_hook.rb
287
+ - lib/davinci_crd_test_kit/server/jobs/invoke_hook_no_special_requests.rb
288
+ - lib/davinci_crd_test_kit/server/jobs/invoke_hook_with_bad_auth.rb
259
289
  - lib/davinci_crd_test_kit/server/jwt_helper.rb
260
290
  - lib/davinci_crd_test_kit/server/resource_extractor.rb
261
291
  - lib/davinci_crd_test_kit/server/server_abstract_invoke_hook_test.rb
@@ -332,6 +362,8 @@ files:
332
362
  - lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_endpoint_test.rb
333
363
  - lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_prefetch_support_test.rb
334
364
  - lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_services_validation_test.rb
365
+ - lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_standard_prefetch_expressions_test.rb
366
+ - lib/davinci_crd_test_kit/server/v2.2.1/interaction/server_invoke_hook_single_request_test.rb
335
367
  - lib/davinci_crd_test_kit/server/v2.2.1/interaction/server_invoke_hook_test.rb
336
368
  - lib/davinci_crd_test_kit/server/v2.2.1/must_support/coverage_information_must_support_test.rb
337
369
  - lib/davinci_crd_test_kit/server/v2.2.1/must_support/coverage_information_system_action_across_hooks_validation_test.rb
@@ -347,15 +379,21 @@ files:
347
379
  - lib/davinci_crd_test_kit/server/v2.2.1/server_order_sign_group.rb
348
380
  - lib/davinci_crd_test_kit/server/v2.2.1/server_required_card_response_validation_group.rb
349
381
  - lib/davinci_crd_test_kit/server/v2.2.1/server_urls.rb
382
+ - lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_response_group.rb
383
+ - lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/coverage_info_reason_test.rb
384
+ - lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/coverage_not_found_group.rb
385
+ - lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/no_active_coverage_group.rb
386
+ - lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/no_member_found_group.rb
387
+ - lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/technical_issues_group.rb
388
+ - lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/technical_issues_invoke_test.rb
350
389
  - lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_context_validation_test.rb
351
390
  - lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_no_custom_extensions_test.rb
352
391
  - lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_optional_fields_validation_test.rb
353
392
  - lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_required_fields_validation_test.rb
354
393
  - lib/davinci_crd_test_kit/server/v2.2.1/verify_response/additional_orders_validation_test.rb
355
394
  - lib/davinci_crd_test_kit/server/v2.2.1/verify_response/all_responses_include_coverage_information_test.rb
356
- - lib/davinci_crd_test_kit/server/v2.2.1/verify_response/card_optional_fields_validation_test.rb
357
395
  - lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_info_configuration_test.rb
358
- - lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_system_action_received_test.rb
396
+ - lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_card_absence_test.rb
359
397
  - lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_system_action_validation_test.rb
360
398
  - lib/davinci_crd_test_kit/server/v2.2.1/verify_response/create_or_update_coverage_info_response_validation_test.rb
361
399
  - lib/davinci_crd_test_kit/server/v2.2.1/verify_response/external_reference_card_validation_test.rb