davinci_pas_test_kit 0.15.1 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. checksums.yaml +4 -4
  2. data/config/presets/g33_br_provider.json +13 -0
  3. data/config/presets/pas_client_example.json +2 -2
  4. data/config/presets/pas_client_v201_run_against_pas_server.json +2 -2
  5. data/config/presets/pas_client_v221_run_against_pas_server.json +3 -3
  6. data/config/presets/pas_ri.json +6 -6
  7. data/config/presets/pas_server_v201_run_against_pas_client.json.erb +6 -6
  8. data/config/presets/pas_server_v221_run_against_pas_client.json.erb +10 -10
  9. data/lib/davinci_pas_test_kit/client/abstract_approval_submit_test.rb +28 -17
  10. data/lib/davinci_pas_test_kit/client/abstract_denial_submit_test.rb +26 -16
  11. data/lib/davinci_pas_test_kit/client/abstract_gather_must_support_test.rb +45 -74
  12. data/lib/davinci_pas_test_kit/client/abstract_modification_submit_test.rb +29 -19
  13. data/lib/davinci_pas_test_kit/client/abstract_response_attest.rb +75 -6
  14. data/lib/davinci_pas_test_kit/client/abstract_subscription_create_test.rb +26 -9
  15. data/lib/davinci_pas_test_kit/client/abstract_subscription_update_delete_test.rb +91 -0
  16. data/lib/davinci_pas_test_kit/client/client_bundle_validation_helper.rb +245 -0
  17. data/lib/davinci_pas_test_kit/client/client_input_descriptions.rb +96 -1
  18. data/lib/davinci_pas_test_kit/client/endpoints/claim_endpoint.rb +128 -72
  19. data/lib/davinci_pas_test_kit/client/endpoints/endpoint_session_identification.rb +24 -0
  20. data/lib/davinci_pas_test_kit/client/endpoints/expired_token.rb +40 -0
  21. data/lib/davinci_pas_test_kit/client/endpoints/subscription_create_endpoint.rb +7 -12
  22. data/lib/davinci_pas_test_kit/client/endpoints/subscription_delete_endpoint.rb +13 -0
  23. data/lib/davinci_pas_test_kit/client/endpoints/subscription_read_endpoint.rb +13 -0
  24. data/lib/davinci_pas_test_kit/client/endpoints/subscription_status_endpoint.rb +15 -20
  25. data/lib/davinci_pas_test_kit/client/endpoints/subscription_update_endpoint.rb +13 -0
  26. data/lib/davinci_pas_test_kit/client/endpoints/token_endpoint.rb +16 -0
  27. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/beneficiary/client_inquire_request_must_support_beneficiary_test.rb +3 -3
  28. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/beneficiary/client_inquire_response_must_support_beneficiary_test.rb +3 -3
  29. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/beneficiary/client_submit_request_must_support_beneficiary_test.rb +3 -3
  30. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/beneficiary/client_submit_response_must_support_beneficiary_test.rb +3 -3
  31. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/claim_inquiry/client_inquire_request_must_support_claim_inquiry_test.rb +3 -3
  32. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/claim_update/client_submit_request_must_support_claim_update_test.rb +3 -3
  33. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/claiminquiryresponse/client_inquire_response_must_support_claiminquiryresponse_test.rb +3 -3
  34. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/claimresponse/client_submit_response_must_support_claimresponse_test.rb +3 -3
  35. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/communication_request/client_submit_response_must_support_communication_request_test.rb +3 -3
  36. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/coverage/client_inquire_request_must_support_coverage_test.rb +3 -3
  37. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/coverage/client_submit_request_must_support_coverage_test.rb +3 -3
  38. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/encounter/client_submit_request_must_support_encounter_test.rb +3 -3
  39. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/insurer/client_inquire_request_must_support_insurer_test.rb +3 -3
  40. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/insurer/client_inquire_response_must_support_insurer_test.rb +3 -3
  41. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/insurer/client_submit_request_must_support_insurer_test.rb +3 -3
  42. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/insurer/client_submit_response_must_support_insurer_test.rb +3 -3
  43. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_client_inquire_must_support_group.rb +1 -1
  44. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_client_inquire_response_must_support_group.rb +9 -31
  45. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_client_submit_must_support_group.rb +1 -1
  46. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_client_submit_response_must_support_group.rb +10 -32
  47. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_inquiry_request_bundle/client_inquire_request_must_support_pas_inquiry_request_bundle_test.rb +3 -3
  48. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_inquiry_response_bundle/client_inquire_response_must_support_pas_inquiry_response_bundle_test.rb +3 -3
  49. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_request_bundle/client_submit_request_must_support_pas_request_bundle_test.rb +3 -3
  50. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_response_bundle/client_submit_response_must_support_pas_response_bundle_test.rb +3 -3
  51. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner/client_inquire_request_must_support_practitioner_test.rb +3 -3
  52. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner/client_inquire_response_must_support_practitioner_test.rb +3 -3
  53. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner/client_submit_request_must_support_practitioner_test.rb +3 -3
  54. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner/client_submit_response_must_support_practitioner_test.rb +3 -3
  55. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner_role/client_inquire_request_must_support_practitioner_role_test.rb +3 -3
  56. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner_role/client_inquire_response_must_support_practitioner_role_test.rb +3 -3
  57. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner_role/client_submit_request_must_support_practitioner_role_test.rb +3 -3
  58. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner_role/client_submit_response_must_support_practitioner_role_test.rb +3 -3
  59. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/requestor/client_inquire_request_must_support_requestor_test.rb +3 -3
  60. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/requestor/client_inquire_response_must_support_requestor_test.rb +3 -3
  61. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/requestor/client_submit_request_must_support_requestor_test.rb +3 -3
  62. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/requestor/client_submit_response_must_support_requestor_test.rb +3 -3
  63. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/subscriber/client_inquire_request_must_support_subscriber_test.rb +3 -3
  64. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/subscriber/client_submit_request_must_support_subscriber_test.rb +3 -3
  65. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/beneficiary/client_inquire_response_must_support_beneficiary_test.rb +4 -3
  66. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/beneficiary/client_submit_response_must_support_beneficiary_test.rb +4 -3
  67. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/claim_inquiry/client_inquire_request_must_support_claim_inquiry_test.rb +3 -3
  68. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/claim_update/client_submit_request_must_support_claim_update_test.rb +3 -3
  69. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/claiminquiryresponse/client_inquire_response_must_support_claiminquiryresponse_test.rb +4 -3
  70. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/claimresponse/client_submit_response_must_support_claimresponse_test.rb +4 -3
  71. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/communication_request/client_submit_response_must_support_communication_request_test.rb +4 -3
  72. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/insurer/client_inquire_response_must_support_insurer_test.rb +4 -3
  73. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/insurer/client_submit_response_must_support_insurer_test.rb +4 -3
  74. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_client_inquire_must_support_group.rb +8 -6
  75. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_client_inquire_response_must_support_group.rb +9 -31
  76. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_client_submit_must_support_group.rb +13 -9
  77. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_client_submit_response_must_support_group.rb +10 -32
  78. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_inquiry_response_bundle/client_inquire_response_must_support_pas_inquiry_response_bundle_test.rb +4 -3
  79. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_response_bundle/client_submit_response_must_support_pas_response_bundle_test.rb +4 -3
  80. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/practitioner/client_inquire_response_must_support_practitioner_test.rb +4 -3
  81. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/practitioner/client_submit_response_must_support_practitioner_test.rb +4 -3
  82. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/practitioner_role/client_inquire_response_must_support_practitioner_role_test.rb +4 -3
  83. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/practitioner_role/client_submit_response_must_support_practitioner_role_test.rb +4 -3
  84. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/requestor/client_inquire_response_must_support_requestor_test.rb +4 -3
  85. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/requestor/client_submit_response_must_support_requestor_test.rb +4 -3
  86. data/lib/davinci_pas_test_kit/client/jobs/send_pas_subscription_notification.rb +64 -3
  87. data/lib/davinci_pas_test_kit/client/pas_client_subscription_pas_conformance_test.rb +4 -3
  88. data/lib/davinci_pas_test_kit/client/registration/abstract_configuration_other_display_test.rb +6 -4
  89. data/lib/davinci_pas_test_kit/client/registration/abstract_configuration_smart_display_test.rb +8 -4
  90. data/lib/davinci_pas_test_kit/client/registration/abstract_configuration_udap_display_test.rb +9 -4
  91. data/lib/davinci_pas_test_kit/client/registration/abstract_other_auth_attest_test.rb +5 -4
  92. data/lib/davinci_pas_test_kit/client/request_count_gating.rb +14 -0
  93. data/lib/davinci_pas_test_kit/client/response_generator.rb +50 -9
  94. data/lib/davinci_pas_test_kit/client/session_identification.rb +26 -7
  95. data/lib/davinci_pas_test_kit/client/subscription_notification_trigger.rb +80 -0
  96. data/lib/davinci_pas_test_kit/client/subscription_setup_requirement.rb +59 -0
  97. data/lib/davinci_pas_test_kit/client/user_input_response.rb +50 -10
  98. data/lib/davinci_pas_test_kit/client/v2.0.1/client_suite.rb +30 -15
  99. data/lib/davinci_pas_test_kit/client/v2.0.1/must_support/pas_client_must_support_request_profiles_test.rb +2 -2
  100. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_approval_group.rb +8 -7
  101. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_auth_smart_group.rb +4 -4
  102. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_auth_udap_group.rb +4 -4
  103. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_denial_group.rb +8 -7
  104. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_must_support_group.rb +38 -52
  105. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_pended_group.rb +28 -22
  106. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_registration_group.rb +2 -2
  107. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_subscription_setup_group.rb +2 -2
  108. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_workflows_group.rb +2 -2
  109. data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_inquire_request_bundle_validation_test.rb +15 -21
  110. data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_inquire_response_bundle_validation_test.rb +29 -29
  111. data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_pended_submit_test.rb +49 -40
  112. data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_request_bundle_validation_test.rb +15 -21
  113. data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_response_bundle_validation_test.rb +29 -29
  114. data/lib/davinci_pas_test_kit/client/v2.2.1/attestations/attestation_instructions.rb +10 -0
  115. data/lib/davinci_pas_test_kit/client/v2.2.1/attestations/client_data_element_expectations_attestation_test.rb +44 -0
  116. data/lib/davinci_pas_test_kit/client/v2.2.1/attestations/client_provider_review_attestation_test.rb +45 -0
  117. data/lib/davinci_pas_test_kit/client/v2.2.1/attestations/client_security_attestation_test.rb +42 -0
  118. data/lib/davinci_pas_test_kit/client/v2.2.1/attestations/client_subscription_error_recovery_attestation_test.rb +42 -0
  119. data/lib/davinci_pas_test_kit/client/v2.2.1/client_suite.rb +64 -12
  120. data/lib/davinci_pas_test_kit/client/v2.2.1/error_handling/pas_client_operation_failure_submit_test.rb +20 -10
  121. data/lib/davinci_pas_test_kit/client/v2.2.1/error_handling/pas_client_operation_outcome_validation_test.rb +11 -5
  122. data/lib/davinci_pas_test_kit/client/v2.2.1/error_handling/pas_client_processing_error_response_validation_test.rb +21 -12
  123. data/lib/davinci_pas_test_kit/client/v2.2.1/error_handling/pas_client_processing_error_submit_test.rb +19 -8
  124. data/lib/davinci_pas_test_kit/client/v2.2.1/must_support/must_support_with_attestation_option.rb +90 -40
  125. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_approval_group.rb +12 -11
  126. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_attestations_group.rb +32 -0
  127. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_auth_smart_group.rb +4 -4
  128. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_auth_udap_group.rb +4 -4
  129. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_claim_updates_group.rb +24 -6
  130. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_denial_group.rb +12 -10
  131. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_modification_group.rb +13 -14
  132. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_must_support_group.rb +55 -59
  133. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_operation_failure_group.rb +8 -5
  134. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_pended_group.rb +53 -41
  135. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_processing_error_group.rb +9 -7
  136. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_registration_group.rb +2 -2
  137. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_subscription_setup_group.rb +9 -4
  138. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_subscription_update_delete_group.rb +57 -0
  139. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_workflows_group.rb +22 -2
  140. data/lib/davinci_pas_test_kit/client/v2.2.1/subscription/pas_client_subscription_create_test.rb +2 -1
  141. data/lib/davinci_pas_test_kit/client/v2.2.1/subscription/pas_client_subscription_put_update_pas_conformance_test.rb +49 -0
  142. data/lib/davinci_pas_test_kit/client/v2.2.1/subscription/pas_client_subscription_update_delete_test.rb +12 -0
  143. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_referenced_resources_test.rb +5 -6
  144. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_submit_tests.rb +82 -56
  145. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_inquire_request_bundle_validation_test.rb +17 -20
  146. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_inquire_response_bundle_validation_test.rb +59 -27
  147. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_modification_verification_test.rb +0 -3
  148. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_pended_send_notification_test.rb +138 -0
  149. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_pended_submit_test.rb +32 -85
  150. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_request_bundle_validation_test.rb +16 -21
  151. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_response_bundle_validation_test.rb +27 -27
  152. data/lib/davinci_pas_test_kit/cross_suite/fhirpath_utils.rb +13 -3
  153. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/beneficiary/metadata.yml +4 -0
  154. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/claim_inquiry/metadata.yml +15 -0
  155. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/claim_update/metadata.yml +17 -0
  156. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/claiminquiryresponse/metadata.yml +15 -0
  157. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/claimresponse/metadata.yml +15 -0
  158. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/communication_request/metadata.yml +4 -0
  159. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/coverage/metadata.yml +1 -0
  160. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/device_request/metadata.yml +2 -0
  161. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/encounter/metadata.yml +3 -0
  162. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/insurer/metadata.yml +1 -0
  163. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/medication_request/metadata.yml +2 -0
  164. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/metadata.yml +143 -0
  165. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/nutrition_order/metadata.yml +2 -0
  166. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/pas_inquiry_request_bundle/metadata.yml +2 -0
  167. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/pas_inquiry_response_bundle/metadata.yml +2 -0
  168. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/pas_request_bundle/metadata.yml +2 -0
  169. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/pas_response_bundle/metadata.yml +2 -0
  170. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/practitioner/metadata.yml +1 -0
  171. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/practitioner_role/metadata.yml +1 -0
  172. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/requestor/metadata.yml +1 -0
  173. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/service_request/metadata.yml +3 -0
  174. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/subscriber/metadata.yml +4 -0
  175. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/task/metadata.yml +1 -4
  176. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/beneficiary/metadata.yml +1 -0
  177. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/claim_inquiry/metadata.yml +23 -0
  178. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/claim_update/metadata.yml +31 -0
  179. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/claiminquiryresponse/metadata.yml +42 -0
  180. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/claimresponse/metadata.yml +42 -0
  181. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/communication_request/metadata.yml +4 -0
  182. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/coverage/metadata.yml +1 -0
  183. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/device_request/metadata.yml +2 -0
  184. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/encounter/metadata.yml +3 -0
  185. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/insurer/metadata.yml +1 -0
  186. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/medication_request/metadata.yml +2 -0
  187. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/metadata.yml +265 -1
  188. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/nutrition_order/metadata.yml +2 -0
  189. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/pas_inquiry_request_bundle/metadata.yml +2 -0
  190. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/pas_inquiry_response_bundle/metadata.yml +2 -0
  191. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/pas_request_bundle/metadata.yml +2 -0
  192. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/pas_response_bundle/metadata.yml +2 -0
  193. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/practitioner/metadata.yml +1 -0
  194. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/practitioner_role/metadata.yml +1 -0
  195. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/requestor/metadata.yml +1 -0
  196. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/service_request/metadata.yml +3 -0
  197. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/subscriber/metadata.yml +1 -0
  198. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/task/metadata.yml +4 -4
  199. data/lib/davinci_pas_test_kit/cross_suite/pas_bundle_validation.rb +570 -312
  200. data/lib/davinci_pas_test_kit/cross_suite/pas_constants.rb +13 -0
  201. data/lib/davinci_pas_test_kit/cross_suite/pas_datatype_constraints.rb +166 -0
  202. data/lib/davinci_pas_test_kit/cross_suite/pas_subscription_verification.rb +8 -4
  203. data/lib/davinci_pas_test_kit/cross_suite/referenced_resource_presence_validation.rb +141 -0
  204. data/lib/davinci_pas_test_kit/cross_suite/response_selection_utils.rb +39 -21
  205. data/lib/davinci_pas_test_kit/cross_suite/tags.rb +11 -6
  206. data/lib/davinci_pas_test_kit/cross_suite/validator_configuration.rb +16 -0
  207. data/lib/davinci_pas_test_kit/cross_suite/validator_suppressions.rb +210 -146
  208. data/lib/davinci_pas_test_kit/docs/demo/PAS Client Suite Demonstration.postman_collection.json +7 -7
  209. data/lib/davinci_pas_test_kit/ext/inferno_core/runnable.rb +1 -0
  210. data/lib/davinci_pas_test_kit/generator/client_must_support_group_generator.rb +47 -16
  211. data/lib/davinci_pas_test_kit/generator/must_support_target_profiles.rb +17 -0
  212. data/lib/davinci_pas_test_kit/generator/must_support_test_generator.rb +14 -2
  213. data/lib/davinci_pas_test_kit/generator/pas_must_support_metadata_extractor.rb +1 -2
  214. data/lib/davinci_pas_test_kit/generator/profile_metadata.rb +1 -1
  215. data/lib/davinci_pas_test_kit/generator/server_must_support_group_generator.rb +23 -0
  216. data/lib/davinci_pas_test_kit/generator/server_suite_generator.rb +8 -7
  217. data/lib/davinci_pas_test_kit/generator/templates/client_must_support_group.rb.erb +22 -3
  218. data/lib/davinci_pas_test_kit/generator/templates/client_must_support_response_group.rb.erb +7 -16
  219. data/lib/davinci_pas_test_kit/generator/templates/must_support.rb.erb +11 -10
  220. data/lib/davinci_pas_test_kit/generator/templates/server_must_support_group.rb.erb +22 -0
  221. data/lib/davinci_pas_test_kit/generator/templates/server_suite.rb.erb +9 -11
  222. data/lib/davinci_pas_test_kit/generator/templates/use_case_group.rb.erb +3 -0
  223. data/lib/davinci_pas_test_kit/generator/use_case_group_generator.rb +19 -13
  224. data/lib/davinci_pas_test_kit/parameters_helper.rb +13 -5
  225. data/lib/davinci_pas_test_kit/pas_notification_conformance_test.rb +2 -2
  226. data/lib/davinci_pas_test_kit/requirements/davinci_pas_test_kit_requirements.csv +14 -7
  227. data/lib/davinci_pas_test_kit/requirements/generated/davinci_pas_client_suite_v201_requirements_coverage.csv +21 -21
  228. data/lib/davinci_pas_test_kit/requirements/generated/davinci_pas_client_suite_v221_requirements_coverage.csv +30 -26
  229. data/lib/davinci_pas_test_kit/requirements/generated/davinci_pas_server_suite_v221_requirements_coverage.csv +39 -33
  230. data/lib/davinci_pas_test_kit/requirements/hl7.fhir.us.davinci-pas_2.2.1_requirements.xlsx +0 -0
  231. data/lib/davinci_pas_test_kit/server/claim_operation_logic.rb +1 -1
  232. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/beneficiary/server_inquire_request_must_support_beneficiary_test.rb +1 -1
  233. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/beneficiary/server_inquire_response_must_support_beneficiary_test.rb +1 -1
  234. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/beneficiary/server_submit_request_must_support_beneficiary_test.rb +1 -1
  235. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/beneficiary/server_submit_response_must_support_beneficiary_test.rb +1 -1
  236. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/claim_inquiry/server_inquire_request_must_support_claim_inquiry_test.rb +1 -1
  237. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/claim_update/server_submit_request_must_support_claim_update_test.rb +1 -1
  238. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/claiminquiryresponse/server_inquire_response_must_support_claiminquiryresponse_test.rb +1 -1
  239. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/claimresponse/server_submit_response_must_support_claimresponse_test.rb +1 -1
  240. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/communication_request/server_submit_response_must_support_communication_request_test.rb +1 -1
  241. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/coverage/server_inquire_request_must_support_coverage_test.rb +1 -1
  242. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/coverage/server_submit_request_must_support_coverage_test.rb +1 -1
  243. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/encounter/server_submit_request_must_support_encounter_test.rb +1 -1
  244. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/insurer/server_inquire_request_must_support_insurer_test.rb +1 -1
  245. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/insurer/server_inquire_response_must_support_insurer_test.rb +1 -1
  246. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/insurer/server_submit_request_must_support_insurer_test.rb +1 -1
  247. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/insurer/server_submit_response_must_support_insurer_test.rb +1 -1
  248. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_inquiry_request_bundle/server_inquire_request_must_support_pas_inquiry_request_bundle_test.rb +1 -1
  249. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_inquiry_response_bundle/server_inquire_response_must_support_pas_inquiry_response_bundle_test.rb +1 -1
  250. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_request_bundle/server_submit_request_must_support_pas_request_bundle_test.rb +1 -1
  251. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_response_bundle/server_submit_response_must_support_pas_response_bundle_test.rb +1 -1
  252. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_server_approval_use_case_group.rb +4 -3
  253. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_server_denial_use_case_group.rb +4 -3
  254. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_server_pended_use_case_group.rb +7 -6
  255. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner/server_inquire_request_must_support_practitioner_test.rb +1 -1
  256. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner/server_inquire_response_must_support_practitioner_test.rb +1 -1
  257. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner/server_submit_request_must_support_practitioner_test.rb +1 -1
  258. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner/server_submit_response_must_support_practitioner_test.rb +1 -1
  259. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner_role/server_inquire_request_must_support_practitioner_role_test.rb +1 -1
  260. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner_role/server_inquire_response_must_support_practitioner_role_test.rb +1 -1
  261. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner_role/server_submit_request_must_support_practitioner_role_test.rb +1 -1
  262. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner_role/server_submit_response_must_support_practitioner_role_test.rb +1 -1
  263. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/requestor/server_inquire_request_must_support_requestor_test.rb +1 -1
  264. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/requestor/server_inquire_response_must_support_requestor_test.rb +1 -1
  265. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/requestor/server_submit_request_must_support_requestor_test.rb +1 -1
  266. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/requestor/server_submit_response_must_support_requestor_test.rb +1 -1
  267. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/server_suite.rb +9 -11
  268. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/subscriber/server_inquire_request_must_support_subscriber_test.rb +1 -1
  269. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/subscriber/server_submit_request_must_support_subscriber_test.rb +1 -1
  270. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/task/server_inquire_response_must_support_task_test.rb +1 -1
  271. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/task/server_submit_response_must_support_task_test.rb +1 -1
  272. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/beneficiary/server_inquire_request_must_support_beneficiary_test.rb +1 -1
  273. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/beneficiary/server_inquire_response_must_support_beneficiary_test.rb +1 -1
  274. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/beneficiary/server_submit_request_must_support_beneficiary_test.rb +1 -1
  275. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/beneficiary/server_submit_response_must_support_beneficiary_test.rb +1 -1
  276. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/claim_inquiry/server_inquire_request_must_support_claim_inquiry_test.rb +1 -1
  277. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/claim_update/server_submit_request_must_support_claim_update_test.rb +1 -1
  278. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/claiminquiryresponse/server_inquire_response_must_support_claiminquiryresponse_test.rb +3 -1
  279. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/claimresponse/server_submit_response_must_support_claimresponse_test.rb +3 -1
  280. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/communication_request/server_submit_response_must_support_communication_request_test.rb +1 -1
  281. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/coverage/server_inquire_request_must_support_coverage_test.rb +1 -1
  282. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/coverage/server_submit_request_must_support_coverage_test.rb +1 -1
  283. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/encounter/server_submit_request_must_support_encounter_test.rb +1 -1
  284. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/insurer/server_inquire_request_must_support_insurer_test.rb +1 -1
  285. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/insurer/server_inquire_response_must_support_insurer_test.rb +1 -1
  286. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/insurer/server_submit_request_must_support_insurer_test.rb +1 -1
  287. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/insurer/server_submit_response_must_support_insurer_test.rb +1 -1
  288. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_inquiry_request_bundle/server_inquire_request_must_support_pas_inquiry_request_bundle_test.rb +1 -1
  289. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_inquiry_response_bundle/server_inquire_response_must_support_pas_inquiry_response_bundle_test.rb +1 -1
  290. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_request_bundle/server_submit_request_must_support_pas_request_bundle_test.rb +1 -1
  291. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_response_bundle/server_submit_response_must_support_pas_response_bundle_test.rb +1 -1
  292. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_server_approval_use_case_group.rb +5 -3
  293. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_server_denial_use_case_group.rb +5 -3
  294. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_server_must_support_group.rb +12 -0
  295. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_server_pended_use_case_group.rb +9 -4
  296. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner/server_inquire_request_must_support_practitioner_test.rb +1 -1
  297. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner/server_inquire_response_must_support_practitioner_test.rb +1 -1
  298. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner/server_submit_request_must_support_practitioner_test.rb +1 -1
  299. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner/server_submit_response_must_support_practitioner_test.rb +1 -1
  300. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner_role/server_inquire_request_must_support_practitioner_role_test.rb +1 -1
  301. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner_role/server_inquire_response_must_support_practitioner_role_test.rb +1 -1
  302. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner_role/server_submit_request_must_support_practitioner_role_test.rb +1 -1
  303. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner_role/server_submit_response_must_support_practitioner_role_test.rb +1 -1
  304. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/requestor/server_inquire_request_must_support_requestor_test.rb +1 -1
  305. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/requestor/server_inquire_response_must_support_requestor_test.rb +1 -1
  306. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/requestor/server_submit_request_must_support_requestor_test.rb +1 -1
  307. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/requestor/server_submit_response_must_support_requestor_test.rb +1 -1
  308. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/server_suite.rb +9 -11
  309. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/subscriber/server_inquire_request_must_support_subscriber_test.rb +1 -1
  310. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/subscriber/server_submit_request_must_support_subscriber_test.rb +1 -1
  311. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/task/server_inquire_response_must_support_task_test.rb +1 -1
  312. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/task/server_submit_response_must_support_task_test.rb +1 -1
  313. data/lib/davinci_pas_test_kit/server/pas_claim_response_decision_test.rb +2 -2
  314. data/lib/davinci_pas_test_kit/server/server_request_bundle_validation_test.rb +4 -6
  315. data/lib/davinci_pas_test_kit/server/server_response_bundle_validation_test.rb +17 -10
  316. data/lib/davinci_pas_test_kit/server/v2.0.1/must_support/pas_server_must_support_request_profiles_test.rb +1 -1
  317. data/lib/davinci_pas_test_kit/server/v2.0.1/pas_server_subscription_setup.rb +1 -1
  318. data/lib/davinci_pas_test_kit/server/v2.2.1/claim_inquiry/server_claim_inquiry_response_tests.rb +89 -0
  319. data/lib/davinci_pas_test_kit/server/v2.2.1/must_support/pas_server_must_support_request_profiles_test.rb +1 -1
  320. data/lib/davinci_pas_test_kit/server/v2.2.1/pas_error_group.rb +2 -0
  321. data/lib/davinci_pas_test_kit/server/v2.2.1/pas_server_claim_inquiry_responses_group.rb +17 -0
  322. data/lib/davinci_pas_test_kit/server/v2.2.1/pas_server_claim_updates_group.rb +1 -1
  323. data/lib/davinci_pas_test_kit/server/v2.2.1/pas_server_no_custom_extensions_test.rb +241 -0
  324. data/lib/davinci_pas_test_kit/server/v2.2.1/pas_server_subscription_capability_statement_test.rb +40 -0
  325. data/lib/davinci_pas_test_kit/server/v2.2.1/pas_server_subscription_setup.rb +15 -10
  326. data/lib/davinci_pas_test_kit/server/v2.2.1/server_replaced_pa_inquire_reference_input_test.rb +63 -0
  327. data/lib/davinci_pas_test_kit/server/v2.2.1/server_replaced_pa_inquire_reference_test.rb +109 -0
  328. data/lib/davinci_pas_test_kit/version.rb +2 -2
  329. metadata +38 -13
  330. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/task/client_inquire_response_must_support_task_test.rb +0 -45
  331. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/task/client_submit_response_must_support_task_test.rb +0 -45
  332. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/task/client_inquire_response_must_support_task_test.rb +0 -55
  333. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/task/client_submit_response_must_support_task_test.rb +0 -55
  334. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_error_handling_group.rb +0 -20
@@ -1,5 +1,11 @@
1
+ require_relative '../cross_suite/response_selection_utils'
2
+
1
3
  module DaVinciPASTestKit
2
4
  module UserInputResponse
5
+ # Raised when a tester-provided response input is present but cannot be used. The
6
+ # message explains why in terms the tester can act on.
7
+ class InvalidInputError < StandardError; end
8
+
3
9
  def self.included(klass)
4
10
  klass.extend ClassMethods
5
11
  end
@@ -21,26 +27,42 @@ module DaVinciPASTestKit
21
27
 
22
28
  # Returns the tester-provided response candidates for the must support workflow
23
29
  # as a list of parsed JSON hashes. The input value may be a single entry or a
24
- # JSON array of entries, where each entry is either a bare FHIR Bundle or a
25
- # wrapper object holding the response Bundle under "bundle" alongside optional
26
- # selection "criteria".
27
- # Returns nil if the input is not present, not parseable, or malformed.
28
- def self.response_candidates(result, operation)
30
+ # JSON array of entries, where each entry is either a bare FHIR Bundle or Parameters
31
+ # or a wrapper object holding the response resource under "bundle" alongside optional
32
+ # selection "criteria" - see ResponseSelectionUtils.
33
+ # Returns nil if the input has no value and raises InvalidInputError if the value
34
+ # is present but unusable. The configurable (the waiting test) supplies the input
35
+ # title so that the error names the input as the tester sees it.
36
+ def self.response_candidates(configurable, operation, result)
29
37
  input_name = operation == 'submit' ? 'ms_submit_responses' : 'ms_inquire_responses'
30
- input_value = JSON.parse(result.input_json)&.find { |i| i['name'] == input_name }&.dig('value')
38
+ input_value = read_input(result, input_name)
31
39
  return unless input_value.present?
32
40
 
33
41
  candidates = JSON.parse(input_value)
34
42
  candidates = [candidates] unless candidates.is_a?(Array)
35
- candidates if candidates.all? { |candidate| valid_candidate?(candidate) }
43
+ invalid_index = candidates.index { |candidate| !valid_candidate?(candidate) }
44
+ if invalid_index.present?
45
+ raise InvalidInputError,
46
+ "Entry #{invalid_index + 1} of the '#{input_title(configurable, input_name)}' input is not " \
47
+ 'a FHIR Bundle or Parameters resource, or a wrapper object with one in the "bundle" key.'
48
+ end
49
+
50
+ candidates
36
51
  rescue JSON::ParserError
37
- nil
52
+ raise InvalidInputError, "The '#{input_title(configurable, input_name)}' input is not valid JSON."
53
+ end
54
+
55
+ # Title of an input as shown to the tester in the Inferno UI, falling back to its name
56
+ def self.input_title(configurable, input_key)
57
+ input = configurable.config.inputs[input_key.to_sym]
58
+ (input&.title || input&.name || input_key).to_s
38
59
  end
39
60
 
40
61
  def self.valid_candidate?(candidate)
41
62
  return false unless candidate.is_a?(Hash)
42
63
 
43
- candidate['resourceType'] == 'Bundle' || candidate['bundle'].is_a?(Hash)
64
+ ResponseSelectionUtils::RESPONSE_RESOURCE_TYPES.include?(candidate['resourceType']) ||
65
+ candidate[ResponseSelectionUtils::BUNDLE_KEY].is_a?(Hash)
44
66
  end
45
67
 
46
68
  def user_inputted_response?(input_key)
@@ -48,7 +70,25 @@ module DaVinciPASTestKit
48
70
  end
49
71
 
50
72
  def input_title(input_key)
51
- config.inputs[input_key]&.title || config.inputs[input_key]&.name
73
+ UserInputResponse.input_title(self, input_key)
74
+ end
75
+
76
+ def response_description_for_wait(user_input, user_input_title, operation)
77
+ if user_input
78
+ <<~DESCRIPTION.strip
79
+ Inferno will respond to `#{operation}` requests with the content provided in the
80
+ '**#{user_input_title}**' input, with `{{...}}` fhirpath expressions replaced with
81
+ their value when evaluated against the request and timestamps and resources references
82
+ updated to be current and consistent. See the ["Response Instantiation" section](https://github.com/inferno-framework/davinci-pas-test-kit/wiki/Controlling-Simulated-Responses#response-instantiation)
83
+ of the Da Vinci PAS Test Kit wiki for details on these updates.
84
+ DESCRIPTION
85
+ else
86
+ <<~DESCRIPTION.strip
87
+ Inferno will respond to `#{operation}` requests with a mocked response based on the request.
88
+ See the ["Mocked Responses" section](https://github.com/inferno-framework/davinci-pas-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses)
89
+ of the Da Vinci PAS Test Kit wiki for details on the mocked response.
90
+ DESCRIPTION
91
+ end
52
92
  end
53
93
 
54
94
  module ClassMethods
@@ -1,11 +1,13 @@
1
1
  require 'subscriptions_test_kit'
2
2
  require 'udap_security_test_kit'
3
3
  require 'smart_app_launch_test_kit'
4
+ require_relative '../../cross_suite/validator_configuration'
4
5
  require_relative '../../cross_suite/validator_suppressions'
5
6
  require_relative '../../cross_suite/tags'
6
7
  require_relative '../endpoints/claim_endpoint'
7
8
  require_relative '../endpoints/token_endpoint'
8
9
  require_relative '../endpoints/subscription_create_endpoint'
10
+ require_relative '../endpoints/subscription_read_endpoint'
9
11
  require_relative '../endpoints/subscription_status_endpoint'
10
12
  require_relative '../pas_client_options'
11
13
  require_relative 'pas_client_workflows_group'
@@ -22,33 +24,33 @@ module DaVinciPASTestKit
22
24
  id :davinci_pas_client_suite_v201
23
25
  title 'Da Vinci PAS Client Suite v2.0.1'
24
26
  description %(
25
- The Da Vinci PAS Test Kit Client Suite validates the conformance of client
26
- systems to the STU 2 version of the HL7® FHIR®
27
+ The Da Vinci PAS Test Kit Client Suite validates the conformance of PAS clients
28
+ to the STU 2 version of the HL7® FHIR®
27
29
  [Da Vinci Prior Authorization Support Implementation Guide](https://hl7.org/fhir/us/davinci-pas/STU2/).
28
30
 
29
31
  These tests are a **DRAFT** intended to allow PAS client implementers to perform
30
- preliminary checks of their clients against PAS IG requirements and [provide
32
+ preliminary checks of their PAS clients against PAS IG requirements and [provide
31
33
  feedback](https://github.com/inferno-framework/davinci-pas-test-kit/issues)
32
34
  on the tests. Future versions of these tests may validate other
33
35
  requirements and may change the test validation logic.
34
36
 
35
37
  The best place to get started is the [Client Testing
36
38
  Walkthrough](https://github.com/inferno-framework/davinci-pas-test-kit/wiki/Client-Instructions-v2.0.1),
37
- which provides a step-by-step guide for running the tests against a client and provides
39
+ which provides a step-by-step guide for running the tests against a PAS client and provides
38
40
  an example client implemented in Postman. Visit the [Client Testing
39
41
  Details](https://github.com/inferno-framework/davinci-pas-test-kit/wiki/Client-Details)
40
42
  documentation for information about technical implementation and known limitations of these tests.
41
43
 
42
- In this test suite, Inferno simulates a PAS server for the client under test to
43
- interact with. The client will be expected to initiate requests to the server
44
+ In this test suite, Inferno simulates a PAS server for the PAS client to
45
+ interact with. The PAS client will be expected to initiate requests to the server
44
46
  and demonstrate its ability to react to the returned responses. Over the course
45
47
  of these interactions, Inferno will seek to observe conformant handling of PAS
46
48
  requirements, including:
47
- - The ability of the client to initiate a prior authorization submission and react to
49
+ - The ability of the PAS client to initiate a prior authorization submission and react to
48
50
  - The approval of the request
49
51
  - The denial of the request
50
52
  - The pending of the request and a subsequent notification that a final decision was made
51
- - The ability of the client to provide data covering the full scope of required by PAS, including
53
+ - The ability of the PAS client to provide data covering the full scope of required by PAS, including
52
54
  - The ability to send prior auth requests and inquiries with all PAS
53
55
  profiles and all must support elements on those profiles
54
56
  - The ability to handle responses that contain all PAS profiles and all must support elements on those
@@ -93,16 +95,29 @@ module DaVinciPASTestKit
93
95
  )
94
96
 
95
97
  fhir_resource_validator do
96
- igs 'hl7.fhir.us.davinci-pas#2.0.1'
98
+ igs(*V201_VALIDATOR_IGS)
97
99
 
98
100
  exclude_message do |message|
99
- # Messages expected of the form `<ResourceType>: <FHIRPath>: <message>`
100
- # We strip `<ResourceType>: <FHIRPath>: ` for the sake of matching
101
- SUPPRESSED_MESSAGES.match?(message.message.sub(/\A\S+: \S+: /, ''))
101
+ V201_SUPPRESSED_MESSAGES.match?(message.message.sub(VALIDATOR_MESSAGE_LOCATION_PREFIX, ''))
102
102
  end
103
103
 
104
104
  validation_context do
105
- snomedCT '731000124108'
105
+ snomedCT SNOMED_CT_US_EDITION
106
+ end
107
+ end
108
+
109
+ # Used to verify responses sent by Inferno, which may be tester-provided, to
110
+ # ensure they don't contain extensions not defined in the PAS IG or its dependencies.
111
+ fhir_resource_validator NO_CUSTOM_EXTENSIONS_VALIDATOR do
112
+ igs(*V201_VALIDATOR_IGS)
113
+
114
+ exclude_message do |message|
115
+ V201_SUPPRESSED_MESSAGES.match?(message.message.sub(VALIDATOR_MESSAGE_LOCATION_PREFIX, ''))
116
+ end
117
+
118
+ validation_context do
119
+ snomedCT SNOMED_CT_US_EDITION
120
+ extensions [] # no extensions not in the spec
106
121
  end
107
122
  end
108
123
 
@@ -140,8 +155,8 @@ module DaVinciPASTestKit
140
155
  suite_endpoint :post, SESSION_INQUIRE_PATH, ClaimEndpoint
141
156
  suite_endpoint :post, FHIR_SUBSCRIPTION_PATH, SubscriptionCreateEndpoint
142
157
  suite_endpoint :post, SESSION_FHIR_SUBSCRIPTION_PATH, SubscriptionCreateEndpoint
143
- suite_endpoint :get, FHIR_SUBSCRIPTION_INSTANCE_PATH, SubscriptionsTestKit::SubscriptionReadEndpoint
144
- suite_endpoint :get, SESSION_FHIR_SUBSCRIPTION_INSTANCE_PATH, SubscriptionsTestKit::SubscriptionReadEndpoint
158
+ suite_endpoint :get, FHIR_SUBSCRIPTION_INSTANCE_PATH, SubscriptionReadEndpoint
159
+ suite_endpoint :get, SESSION_FHIR_SUBSCRIPTION_INSTANCE_PATH, SubscriptionReadEndpoint
145
160
  suite_endpoint :post, FHIR_SUBSCRIPTION_INSTANCE_STATUS_PATH, SubscriptionStatusEndpoint
146
161
  suite_endpoint :post, SESSION_FHIR_SUBSCRIPTION_INSTANCE_STATUS_PATH, SubscriptionStatusEndpoint
147
162
  suite_endpoint :get, FHIR_SUBSCRIPTION_INSTANCE_STATUS_PATH, SubscriptionStatusEndpoint
@@ -18,7 +18,7 @@ module DaVinciPASTestKit
18
18
  * PAS Device Request
19
19
  * PAS Nutrition Order
20
20
 
21
- System are allowed to support only the request profiles that fit their use cases. However,
21
+ PAS clients are allowed to support only the request profiles that fit their use cases. However,
22
22
  they must support at least one of them (because `Claim.item.extension:requestedService` is a
23
23
  must support element) and for any request profiles they support, they must be able to
24
24
  populate all of the defined must support elements.
@@ -27,7 +27,7 @@ module DaVinciPASTestKit
27
27
  profile listed above. Then for each profile observed, it checks for the presence of
28
28
  each must support element defined in that profile.
29
29
 
30
- The test will look through the instances included in submissions made by the client
30
+ The test will look through the instances included in submissions made by the PAS client
31
31
  for the following must support elements:
32
32
 
33
33
  ### PAS Medication Request
@@ -8,10 +8,10 @@ module DaVinciPASTestKit
8
8
  module DaVinciPASV201
9
9
  class PASClientApprovalGroup < Inferno::TestGroup
10
10
  id :pas_client_v201_approval_group
11
- title 'Approval Workflow'
11
+ title 'Approval Response'
12
12
  description %(
13
- During these tests, the client will initiate a prior authorization
14
- request and show it can respond appropriately to an 'approved' decision.
13
+ During these tests, the PAS client will initiate a prior authorization
14
+ request and show it can react appropriately to an 'approved' decision.
15
15
  )
16
16
  run_as_group
17
17
 
@@ -24,16 +24,17 @@ module DaVinciPASTestKit
24
24
  test from: :pas_client_v201_response_bundle_validation_test,
25
25
  config: { options: { workflow_tag: APPROVAL_WORKFLOW_TAG } }
26
26
  test from: :pas_client_v201_response_attest,
27
- title: 'Check that the client registers the request as approved (Attestation)',
27
+ title: 'Check that the PAS client registers the request as approved',
28
28
  description: %(
29
- This test provides the tester an opportunity to observe their client following
29
+ During this test, the tester will observe the PAS client following
30
30
  the receipt of the approved response and attest that users are able to determine
31
31
  that the response has been approved.
32
32
  ),
33
33
  config: { options: {
34
34
  workflow_tag: APPROVAL_WORKFLOW_TAG,
35
- attest_message: "I attest that the client system displays the submitted claim as 'approved' meaning " \
36
- 'that the user can proceed with ordering or providing the requested service.'
35
+ attest_message: 'I attest that the PAS client did not error when handling the `$submit` ' \
36
+ "response and displays the submitted claim as 'approved' meaning that the " \
37
+ 'user can proceed with ordering or providing the requested service.'
37
38
  } }
38
39
  end
39
40
  end
@@ -7,13 +7,13 @@ module DaVinciPASTestKit
7
7
  id :pas_client_v201_auth_smart
8
8
  title 'Review Authentication Interactions'
9
9
  description %(
10
- During these tests, Inferno will verify that the client interacted with Inferno's
10
+ During these tests, Inferno will verify that the PAS client interacted with Inferno's
11
11
  simulated SMART authorization server in a conformant manner when requesting access tokens
12
- and that the client under test was able to use provided access tokens to make PAS
12
+ and that the PAS client was able to use provided access tokens to make PAS
13
13
  requests.
14
14
 
15
- Before running these tests, execute the tests for at least one "PAS workflows" sub-group
16
- so that the client will request an access token and use it on a PAS request.
15
+ Before running these tests, execute the tests for at least one "PAS Scenarios" sub-group
16
+ so that the PAS client will request an access token and use it on a PAS request.
17
17
  )
18
18
  run_as_group
19
19
 
@@ -7,13 +7,13 @@ module DaVinciPASTestKit
7
7
  id :pas_client_v201_auth_udap
8
8
  title 'Review UDAP Authentication Interactions'
9
9
  description %(
10
- During these tests, Inferno will verify that the client interacted with Inferno's
10
+ During these tests, Inferno will verify that the PAS client interacted with Inferno's
11
11
  simulated UDAP authorization server in a conformant manner when requesting access tokens
12
- and that the client under test was able to use provided access tokens to make PAS
12
+ and that the PAS client was able to use provided access tokens to make PAS
13
13
  requests.
14
14
 
15
- Before running these tests, execute the tests for at least one "PAS workflows" sub-group
16
- so that the client will request an access token and use it on a PAS request.
15
+ Before running these tests, execute the tests for at least one "PAS Scenarios" sub-group
16
+ so that the PAS client will request an access token and use it on a PAS request.
17
17
  )
18
18
  run_as_group
19
19
 
@@ -11,10 +11,10 @@ module DaVinciPASTestKit
11
11
  include UserInputResponse
12
12
 
13
13
  id :pas_client_v201_denial_group
14
- title 'Denial Workflow'
14
+ title 'Denial Response'
15
15
  description %(
16
- During these tests, the client will initiate a prior authorization
17
- request and show it can respond appropriately to a 'denied' decision.
16
+ During these tests, the PAS client will initiate a prior authorization
17
+ request and show it can react appropriately to a 'denied' decision.
18
18
  )
19
19
  run_as_group
20
20
 
@@ -30,17 +30,18 @@ module DaVinciPASTestKit
30
30
  test from: :pas_client_v201_response_bundle_validation_test,
31
31
  config: { options: { workflow_tag: DENIAL_WORKFLOW_TAG } }
32
32
  test from: :pas_client_v201_response_attest,
33
- title: 'Check that the client registers the request as denied (Attestation)',
33
+ title: 'Check that the PAS client registers the request as denied',
34
34
  description: %(
35
- This test provides the tester an opportunity to observe their client following
35
+ During this test, the tester will observe the PAS client following
36
36
  the receipt of the denied response and attest that users are able to determine
37
37
  that the response has been denied.
38
38
  ),
39
39
  config: { options: {
40
40
  workflow_tag: DENIAL_WORKFLOW_TAG,
41
- attest_message: "I attest that the client system displays the submitted claim as 'denied', meaning " \
41
+ attest_message: 'I attest that the PAS client did not error when handling the `$submit` ' \
42
+ "response and displays the submitted claim as 'denied', meaning " \
42
43
  'that the user cannot proceed with ordering or providing the requested service without ' \
43
- 'making adjustments and submitting for further approval.'
44
+ 'making adjustments and submitting for further review.'
44
45
  } }
45
46
  end
46
47
  end
@@ -7,6 +7,7 @@ require_relative 'workflows/pas_client_request_bundle_validation_test'
7
7
  require_relative 'workflows/pas_client_response_bundle_validation_test'
8
8
  require_relative 'workflows/pas_client_inquire_request_bundle_validation_test'
9
9
  require_relative 'workflows/pas_client_inquire_response_bundle_validation_test'
10
+ require_relative '../client_input_descriptions'
10
11
 
11
12
  module DaVinciPASTestKit
12
13
  module DaVinciPASV201
@@ -14,54 +15,55 @@ module DaVinciPASTestKit
14
15
  id :pas_client_v201_must_support
15
16
  title 'Must Support Elements'
16
17
  run_as_group
17
- description %(
18
- During these tests, the client will show that it supports all PAS-defined profiles and the must support
19
- elements defined in them. This includes
18
+ description DaVinciPASTestKit.must_support_group_description('v2.0.1', 'da-vinci-pas-v201')
20
19
 
21
- - The ability to make prior authorization submission and inquiry requests that contain all
22
- PAS-defined profiles and their must support elements.
23
- - The ability to receive in responses to those requests all PAS-defined profiles and their
24
- must support elements.
20
+ # The must support response inputs already belong to pas_client_v201_gather_must_support
21
+ # (the wait test below); declaring them here too, before the receive group is defined,
22
+ # propagates them onto the bundle validation tests in that group as well, so they can tell
23
+ # whether a tester-provided response was used - see
24
+ # PasClientResponseBundleValidationTest/PasClientInquireResponseBundleValidationTest
25
+ # #failed_entities_description.
26
+ input :ms_submit_responses, optional: true
27
+ input :ms_inquire_responses, optional: true
25
28
 
26
- Clients under test will be asked to make additional requests to Inferno demonstrating coverage
27
- of all must support items in the requests. Clients must also demonstrate that they can handle
28
- all response must support elements. Because Inferno's mocked responses do not include all must
29
- support elements, testers will need to provide responses that include examples of all must
30
- support elements for Inferno to respond with.
31
-
32
- Note that Inferno will consider requests made during the workflow group of tests, so only
33
- profiles and must support elements not demonstrated during those tests need to be submitted
34
- as a part of these.
35
- )
29
+ input_order :ms_submit_responses,
30
+ :ms_inquire_responses,
31
+ :client_id,
32
+ :session_url_path
36
33
 
37
34
  # Combined receive group - single wait test for both submit and inquire
38
35
  group do
39
36
  id :pas_client_v201_must_support_receive
40
- title 'Demonstrate Must Support Coverage'
41
- description %(
42
- Submit $submit and $inquire requests demonstrating coverage of must support elements.
43
- Optionally, provide response bundles for Inferno to use when responding. Inferno will
44
- verify both the requests received and the responses provided.
45
- )
37
+ title MUST_SUPPORT_RECEIVE_GROUP_TITLE
38
+ description MUST_SUPPORT_RECEIVE_GROUP_DESCRIPTION
46
39
  run_as_group
47
40
 
48
41
  test from: :pas_client_v201_gather_must_support
49
- end
50
-
51
- # $submit Bundle Conformance Validation
52
- group do
53
- title '$submit Bundle Conformance'
54
- description %(
55
- Verify that the $submit request bundles sent by the client are conformant
56
- and that the $submit response bundles provided for Inferno to send back
57
- are conformant.
58
- )
59
- run_as_group
42
+ test from: :pas_client_v201_response_attest,
43
+ id: :pas_client_v201_response_attest_ms_submit_inquire,
44
+ title: MUST_SUPPORT_SUBMIT_INQUIRE_ATTEST_TITLE,
45
+ description: MUST_SUPPORT_SUBMIT_INQUIRE_ATTEST_DESCRIPTION,
46
+ config: { options: {
47
+ workflow_tag: MUST_SUPPORT_WORKFLOW_TAG,
48
+ no_requests_ok: true,
49
+ multiple_requests_ok: true,
50
+ attest_message: MUST_SUPPORT_SUBMIT_INQUIRE_ATTEST_MESSAGE
51
+ } } do
52
+ verifies_requirements 'hl7.fhir.us.davinci-pas_2.0.1@41'
53
+ end
60
54
 
61
55
  test from: :pas_client_v201_request_bundle_validation_test,
62
- config: { options: { workflow_tag: MUST_SUPPORT_WORKFLOW_TAG } }
56
+ config: { options: { workflow_tag: MUST_SUPPORT_WORKFLOW_TAG, no_requests_ok: true,
57
+ multiple_requests_ok: true } }
63
58
  test from: :pas_client_v201_response_bundle_validation_test,
64
- config: { options: { workflow_tag: MUST_SUPPORT_WORKFLOW_TAG } }
59
+ config: { options: { workflow_tag: MUST_SUPPORT_WORKFLOW_TAG, no_requests_ok: true,
60
+ multiple_requests_ok: true } }
61
+ test from: :pas_client_v201_inquire_request_bundle_validation_test,
62
+ config: { options: { workflow_tag: MUST_SUPPORT_WORKFLOW_TAG, no_requests_ok: true,
63
+ multiple_requests_ok: true } }
64
+ test from: :pas_client_v201_inquire_response_bundle_validation_test,
65
+ config: { options: { workflow_tag: MUST_SUPPORT_WORKFLOW_TAG, no_requests_ok: true,
66
+ multiple_requests_ok: true } }
65
67
  end
66
68
 
67
69
  # $submit Request Must Support (fail when errors detected)
@@ -70,22 +72,6 @@ module DaVinciPASTestKit
70
72
  # $submit Response Must Support (skip when errors detected)
71
73
  group from: :pas_client_v201_submit_response_must_support
72
74
 
73
- # $inquire Bundle Conformance Validation
74
- group do
75
- title '$inquire Bundle Conformance'
76
- description %(
77
- Verify that the $inquire request bundles sent by the client are conformant
78
- and that the $inquire response bundles provided for Inferno to send back
79
- are conformant.
80
- )
81
- run_as_group
82
-
83
- test from: :pas_client_v201_inquire_request_bundle_validation_test,
84
- config: { options: { workflow_tag: MUST_SUPPORT_WORKFLOW_TAG } }
85
- test from: :pas_client_v201_inquire_response_bundle_validation_test,
86
- config: { options: { workflow_tag: MUST_SUPPORT_WORKFLOW_TAG } }
87
- end
88
-
89
75
  # $inquire Request Must Support (fail when errors detected)
90
76
  group from: :pas_client_v201_inquire_must_support
91
77
 
@@ -13,10 +13,10 @@ module DaVinciPASTestKit
13
13
  include UserInputResponse
14
14
 
15
15
  id :pas_client_v201_pended_group
16
- title 'Pended Workflow'
16
+ title 'Pended Response'
17
17
  description %(
18
- During these tests, the client will initiate a prior authorization
19
- request and show it can respond appropriately to a 'pended' decision, including
18
+ During these tests, the PAS client will initiate a prior authorization
19
+ request and show it can react appropriately to a 'pended' decision, including
20
20
  waiting for a notification that an update has been made
21
21
  and making an inquiry request to retrieve the final result.
22
22
  )
@@ -31,15 +31,15 @@ module DaVinciPASTestKit
31
31
  :session_url_path
32
32
 
33
33
  group do
34
- title 'Perform the pended workflow'
34
+ title 'Perform the pended scenario'
35
35
  description %(
36
- All interactions for the pended prior authorization request workflow
37
- between Inferno and the client under test will be performed during this test
36
+ All interactions for the pended prior authorization request scenario
37
+ between Inferno and the PAS client will be performed during this group
38
38
  including
39
- - A `$submit` request from the client to Inferno where Inferno returns a pended response.
39
+ - A `$submit` request from the PAS client to Inferno where Inferno returns a pended response.
40
40
  - A notification that the prior authorization decision has been finalized from Inferno
41
- to the client under test.
42
- - An `$inquire` request from the client to Inferno where Inferno returns an approved response.
41
+ to the PAS client.
42
+ - An `$inquire` request from the PAS client to Inferno where Inferno returns an approved response.
43
43
  )
44
44
 
45
45
  test from: :pas_client_v201_pended_submit_test
@@ -53,17 +53,19 @@ module DaVinciPASTestKit
53
53
  test from: :pas_client_v201_response_bundle_validation_test,
54
54
  config: { options: { workflow_tag: PENDED_WORKFLOW_TAG } }
55
55
  test from: :pas_client_v201_response_attest,
56
- title: 'Check that the client registers the request as pended (Attestation)',
56
+ title: 'Check that the PAS client registers the request as pended',
57
57
  description: %(
58
- This test provides the tester an opportunity to observe their client following
58
+ During this test, the tester will observe the PAS client following
59
59
  the receipt of the pended response and attest that users are able to determine
60
60
  that the response has been pended and a decision will be forthcoming.
61
61
  ),
62
62
  config: { options: {
63
63
  workflow_tag: PENDED_WORKFLOW_TAG,
64
- attest_message: "I attest that following the receipt of the 'pended' response to the submitted " \
65
- 'claim, the client system indicates to users that a final decision on request ' \
66
- 'has not yet been made.'
64
+ operation_tag: SUBMIT_TAG,
65
+ multiple_requests_ok: true,
66
+ attest_message: "I attest that the PAS client did not error when handling the 'pended' " \
67
+ 'response to the submitted claim and that it indicated to users that a final decision ' \
68
+ 'on the request had not yet been made.'
67
69
  } }
68
70
  end
69
71
 
@@ -73,7 +75,7 @@ module DaVinciPASTestKit
73
75
  test from: :subscriptions_r4_client_notification_input_verification,
74
76
  title: 'Tester-provided event notification Bundle is conformant',
75
77
  description: %(
76
- This test checks that the notification Bundle sent to the client, which will be either
78
+ This test checks that the notification Bundle sent to the PAS client, which will be either
77
79
  the tester-provided notification Bundle in the **Claim updated notification JSON** input
78
80
  or mocked by Inferno based on details in the Subscription and submitted Claim, is conformant
79
81
  to Subscription Backport IG requirements.
@@ -87,10 +89,10 @@ module DaVinciPASTestKit
87
89
  test from: :subscriptions_r4_client_notification_input_payload_verification,
88
90
  title: 'Tester-provided event notification Bundle matches the Subscription',
89
91
  description: %(
90
- This test checks that the notification Bundle sent to the client, which will be either
92
+ This test checks that the notification Bundle sent to the PAS client, which will be either
91
93
  the tester-provided notification Bundle in the **Claim updated notification JSON** input
92
94
  or mocked by Inferno based on details in the Subscription and submitted Claim, matches the details
93
- requested in the Subscription provided during the **2.1** "PAS Subscription Setup" tests.
95
+ requested in the Subscription provided during the "Subscription Setup" tests.
94
96
  ),
95
97
  simulation_verification: true,
96
98
  config: {
@@ -102,9 +104,9 @@ module DaVinciPASTestKit
102
104
  # and testers have to demonstrate and attest that their systems work, which will require some
103
105
  # correspondence.
104
106
  test from: :subscriptions_r4_client_event_notification_verification,
105
- title: 'Client accepts the "claim updated" event notification',
107
+ title: 'PAS client accepts the "claim updated" event notification',
106
108
  description: %(
107
- This test checks that the client responds appropriately to the event notification request.
109
+ This test checks that the PAS client responds appropriately to the event notification request.
108
110
  )
109
111
  end
110
112
 
@@ -116,15 +118,19 @@ module DaVinciPASTestKit
116
118
  test from: :pas_client_v201_inquire_response_bundle_validation_test,
117
119
  config: { options: { workflow_tag: PENDED_WORKFLOW_TAG } }
118
120
  test from: :pas_client_v201_response_attest,
119
- title: 'Check that the client registers the request as approved (Attestation)',
121
+ title: 'Check that the PAS client registers the request as approved',
120
122
  description: %(
121
- This test provides the tester an opportunity to observe their client following
123
+ During this test, the tester will observe the PAS client following
122
124
  the receipt of the inquiry response with a final decision and attest that users
123
125
  are able to determine that the response has been approved in full.
124
126
  ),
125
127
  config: { options: {
126
128
  workflow_tag: PENDED_WORKFLOW_TAG,
127
- attest_message: "I attest that the client system displays the submitted claim as 'approved' meaning that the user can proceed with ordering or providing the requested service." # rubocop:disable Layout/LineLength
129
+ operation_tag: INQUIRE_TAG,
130
+ multiple_requests_ok: true,
131
+ attest_message: 'I attest that the PAS client did not error when handling the `$inquire` ' \
132
+ "response and displays the submitted claim as 'approved' meaning that the " \
133
+ 'user can proceed with ordering or providing the requested service.'
128
134
  } }
129
135
  end
130
136
  end
@@ -12,8 +12,8 @@ module DaVinciPASTestKit
12
12
  id :pas_client_v201_registration
13
13
  title 'Client Registration'
14
14
  description %(
15
- Register the client under test with Inferno's simulated PAS Server,
16
- including configuration of the system under test to make requests against
15
+ Register the PAS client with Inferno's simulated PAS Server,
16
+ including configuration necessary to make requests against
17
17
  Inferno's simulated PAS endpoints and enable authentication and authorization of PAS requests.
18
18
  )
19
19
  run_as_group
@@ -8,8 +8,8 @@ module DaVinciPASTestKit
8
8
  id :pas_client_v201_subscription_setup
9
9
  title 'Subscription Setup'
10
10
  description %(
11
- These tests verify that the client can create a Subscription instance
12
- that will tell the Payer how to notify the client when pended claims
11
+ These tests verify that the PAS client can create a Subscription instance
12
+ that will tell the Payer how to notify the PAS client when pended claims
13
13
  are updated.
14
14
  )
15
15
  run_as_group
@@ -6,9 +6,9 @@ module DaVinciPASTestKit
6
6
  module DaVinciPASV201
7
7
  class PASClientWorkflowsGroup < Inferno::TestGroup
8
8
  id :pas_client_v201_workflows
9
- title 'PAS Workflows'
9
+ title 'PAS Scenarios'
10
10
  description %(
11
- The workflow tests verify that the client can participate in complete end-to-end prior
11
+ The scenario tests verify that the PAS client can participate in complete end-to-end prior
12
12
  authorization interactions, initiating requests and reacting appropriately to the
13
13
  responses returned.
14
14
  )