subscriptions_test_kit 0.9.2 → 0.9.4

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 (55) hide show
  1. checksums.yaml +4 -4
  2. data/lib/inferno_requirements_tools/tasks/collect_requirements.rb +51 -50
  3. data/lib/inferno_requirements_tools/tasks/requirements_coverage.rb +22 -19
  4. data/lib/subscriptions_test_kit/common/notification_conformance_verification.rb +11 -12
  5. data/lib/subscriptions_test_kit/common/subscription_conformance_verification.rb +14 -2
  6. data/lib/subscriptions_test_kit/docs/samples/Subscription_empty.json +1 -1
  7. data/lib/subscriptions_test_kit/docs/samples/Subscription_full-resource.json +1 -1
  8. data/lib/subscriptions_test_kit/docs/samples/Subscription_id-only.json +1 -1
  9. data/lib/subscriptions_test_kit/docs/subscriptions_r5_backport_r4_client_suite_description.md +4 -1
  10. data/lib/subscriptions_test_kit/docs/subscriptions_r5_backport_r4_server_suite_description.md +4 -1
  11. data/lib/subscriptions_test_kit/endpoints/subscription_create_endpoint.rb +7 -3
  12. data/lib/subscriptions_test_kit/endpoints/subscription_status_endpoint.rb +19 -13
  13. data/lib/subscriptions_test_kit/jobs/send_subscription_notifications.rb +7 -2
  14. data/lib/subscriptions_test_kit/requirements/generated/subscriptions-test-kit_requirements_coverage.csv +51 -51
  15. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/common/subscription_simulation_utils.rb +47 -16
  16. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/workflow/conformance_verification/notification_input_payload_verification_test.rb +15 -8
  17. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/workflow/conformance_verification/notification_input_verification_test.rb +8 -5
  18. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/workflow/conformance_verification/processing_attestation_test.rb +1 -1
  19. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/workflow/conformance_verification/subscription_verification_test.rb +3 -2
  20. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/workflow/conformance_verification_group.rb +1 -1
  21. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/workflow/interaction_test.rb +15 -11
  22. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/workflow/interaction_verification/event_notification_verification_test.rb +6 -5
  23. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/workflow/interaction_verification/handshake_notification_verification_test.rb +5 -5
  24. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/workflow/interaction_verification_group.rb +1 -1
  25. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client_suite.rb +5 -3
  26. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/capability_statement/cs_conformance_test.rb +1 -1
  27. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/capability_statement/topic_discovery_test.rb +3 -3
  28. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/capability_statement_group.rb +3 -3
  29. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/common/interaction/creation_response_conformance_test.rb +1 -1
  30. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/common/interaction/subscription_conformance_test.rb +11 -14
  31. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/common/interaction_group.rb +3 -3
  32. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/common/subscription_creation.rb +10 -1
  33. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/common/subscription_status_operation.rb +3 -2
  34. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/event_notification/empty_content_group.rb +3 -2
  35. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/event_notification/full_resource_content/full_resource_conformance_test.rb +3 -4
  36. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/event_notification/full_resource_content_group.rb +3 -2
  37. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/event_notification/id_only_content/id_only_conformance_test.rb +3 -4
  38. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/event_notification/id_only_content_group.rb +3 -2
  39. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/event_notification_group.rb +2 -2
  40. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/handshake_heartbeat/handshake_conformance_test.rb +7 -6
  41. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/handshake_heartbeat/heartbeat_conformance_test.rb +4 -2
  42. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/status_operation/status_invocation_test.rb +2 -2
  43. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/status_operation_group.rb +1 -1
  44. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/subscription_rejection/reject_subscription_channel_endpoint_test.rb +65 -0
  45. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/subscription_rejection/reject_subscription_channel_payload_combo_test.rb +76 -0
  46. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/subscription_rejection/reject_subscription_channel_type_test.rb +68 -0
  47. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/subscription_rejection/reject_subscription_cross_version_extension_test.rb +59 -0
  48. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/subscription_rejection/reject_subscription_filter_test.rb +66 -0
  49. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/subscription_rejection/reject_subscription_payload_type_test.rb +66 -0
  50. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/subscription_rejection/reject_subscription_topic_test.rb +64 -0
  51. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/subscription_rejection_group.rb +14 -2
  52. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server_suite.rb +3 -2
  53. data/lib/subscriptions_test_kit/version.rb +1 -3
  54. metadata +11 -75
  55. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/subscription_rejection/reject_subscriptions_test.rb +0 -181
@@ -1,181 +0,0 @@
1
- require_relative '../common/subscription_creation'
2
-
3
- module SubscriptionsTestKit
4
- module SubscriptionsR5BackportR4Server
5
- class RejectSubscriptionsTest < Inferno::Test
6
- include SubscriptionCreation
7
-
8
- id :subscriptions_r4_server_reject_subscriptions
9
- title 'Server Handles Unsupported Subscriptions'
10
- description %(
11
- When processing a request for a Subscription a server SHOULD verify that the Subscription is supported and does not
12
- contain any information not implemented by the server. If the Subscription is no supported, the server should reject
13
- the Subscription create request, or it should attempt to adjust the Subscription. This test checks that the server
14
- correctly rejects or adjusts the Subscription in the following cases:
15
-
16
- - The Subscription contains cross-version extension
17
- - The Subscription contains a Subscription Topic not implemented by the server
18
- - The Subscription contains a filtering criteria not implemented by the server
19
- - The Subscription contains channel type not implemented by the server
20
- - The Subscription contains an unsupported channel endpoint
21
- - The Subscription contains a payload type not implemented by the server
22
- - The Subscription contains an unsupported channel and payload type combination
23
-
24
- The test will pass if the server either
25
- 1. rejects the Subscription by responding with a non-201 response, or
26
- 2. updates the Subscription resource to remove or replace the unsupported value.
27
- )
28
-
29
- verifies_requirements 'hl7.fhir.uv.subscriptions_1.1.0@8',
30
- 'hl7.fhir.uv.subscriptions_1.1.0@9',
31
- 'hl7.fhir.uv.subscriptions_1.1.0@10',
32
- 'hl7.fhir.uv.subscriptions_1.1.0@11',
33
- 'hl7.fhir.uv.subscriptions_1.1.0@12',
34
- 'hl7.fhir.uv.subscriptions_1.1.0@13'
35
-
36
- input :subscription_resource,
37
- title: 'Workflow Subscription Resource',
38
- type: 'textarea',
39
- description: %(
40
- A Subscription resource in JSON format that Inferno will send to the server under test
41
- so that it can demonstrate its ability to perform the Subscription creation and Notification
42
- response workflow. The instance must be conformant to the R4/B Topic-Based Subscription profile.
43
- Inferno may modify the Subscription before submission, e.g., to point to Inferno's notification endpoint.
44
- This input is also used by the unsupported Subscription test as the base on which to add unsupported element
45
- values to test for server rejection.
46
- )
47
- input :unsupported_subscription_topic,
48
- title: 'Unsupported Subscription Topic',
49
- description: 'A Subscription Topic for the `criteria` element that is not implemented by the server to test for Subscription rejection.',
50
- optional: true
51
- input :unsupported_subscription_filter,
52
- title: 'Unsupported Subscription Filter',
53
- description: 'A value for `filterCriteria` extension under the `criteria` that is not implemented by the server to test for Subscription rejection.',
54
- optional: true
55
- input :unsupported_subscription_channel_type,
56
- title: 'Unsupported Subscription Channel Type',
57
- description: 'A value for the `channel.type` element that is not implemented by the server to test for Subscription rejection.',
58
- optional: true
59
- input :unsupported_subscription_channel_endpoint,
60
- title: 'Unsupported Subscription Channel Endpoint',
61
- description: 'An unsupported value for the `channel.endpoint` element to test for Subscription rejection.',
62
- optional: true
63
- input :unsupported_subscription_payload_type,
64
- title: 'Unsupported Subscription Payload Type',
65
- description: 'A value for the `content` extension under the `channel.payload` element that is not implemented by the server to test for Subscription rejection.',
66
- optional: true
67
- input :unsupported_subscription_channel_payload_combo,
68
- title: 'Unsupported Subscription Channel and Payload Combination',
69
- description: %(
70
- A channel (`channel.type`) and payload type (`content` extension under the `channel.payload` element)
71
- combination not implemented by the server to test for Subscription
72
- rejection. Provide in the json format e.g. {channel: <'channel_type'>, payload: <'payload_type'>}.
73
- ),
74
- optional: true
75
-
76
- def unsupported_subscriptions
77
- [
78
- {
79
- 'unsupported_title' => 'cross-version extensions',
80
- 'field_path' => ['_criteria'],
81
- 'field_value' => { 'extension' => [{
82
- url: 'http://hl7.org/fhir/5.0/subscriptions-backport/StructureDefinition/backport-filter-criteria',
83
- valueString: 'Encounter?patient=Patient/123'
84
- }] }
85
- },
86
- {
87
- 'unsupported_title' => 'unsupported `SubscriptionTopic`',
88
- 'field_path' => ['criteria'],
89
- 'field_value' => unsupported_subscription_topic
90
- },
91
- {
92
- 'unsupported_title' => 'unsupported filter criteria',
93
- 'field_path' => ['_criteria'],
94
- 'field_value' => if unsupported_subscription_filter.nil?
95
- unsupported_subscription_filter
96
- else
97
- { 'extension' => [{
98
- url: 'http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-filter-criteria',
99
- valueString: unsupported_subscription_filter
100
- }] }
101
- end
102
- },
103
- {
104
- 'unsupported_title' => 'unsupported channel type',
105
- 'field_path' => ['channel', 'type'],
106
- 'field_value' => unsupported_subscription_channel_type
107
- },
108
- {
109
- 'unsupported_title' => 'unsupported channel URL',
110
- 'field_path' => ['channel', 'endpoint'],
111
- 'field_value' => unsupported_subscription_channel_endpoint
112
- },
113
- {
114
- 'unsupported_title' => 'unsupported channel type',
115
- 'field_path' => ['channel', 'type'],
116
- 'field_value' => unsupported_subscription_channel_type
117
- },
118
- {
119
- 'unsupported_title' => 'unsupported payload type',
120
- 'field_path' => ['channel', 'payload'],
121
- 'field_value' => unsupported_subscription_payload_type
122
- }
123
- ]
124
- end
125
-
126
- run do
127
- assert_valid_json(subscription_resource)
128
- subscription = JSON.parse(subscription_resource)
129
-
130
- unsupported_subscriptions.each do |unsupported_info|
131
- next if unsupported_info['field_value'].blank?
132
-
133
- field_name = unsupported_info['field_path'].last
134
-
135
- if unsupported_info['field_path'].length > 1
136
- outer_field_name = unsupported_info['field_path'].first
137
- subscription_field = subscription[outer_field_name]
138
- else
139
- subscription_field = subscription
140
- end
141
-
142
- original_field_value = subscription_field[field_name]
143
- subscription_field[field_name] = unsupported_info['field_value']
144
-
145
- send_unsupported_subscription(subscription, unsupported_info['unsupported_title'], [unsupported_info['field_path']],
146
- [unsupported_info['field_value']])
147
-
148
- if original_field_value.nil?
149
- subscription_field.delete(field_name)
150
- else
151
- subscription_field[field_name] = original_field_value
152
- end
153
- end
154
-
155
- if unsupported_subscription_channel_payload_combo.present?
156
- assert_valid_json(unsupported_subscription_channel_payload_combo)
157
- channel_payload_combo = JSON.parse(unsupported_subscription_channel_payload_combo)
158
- channel_value = channel_payload_combo['channel']
159
- payload_value = channel_payload_combo['payload']
160
-
161
- if channel_value.blank? || payload_value.blank?
162
- add_message('error', %(
163
- Channel and payload values are not populated correctly in unsupported channel and payload combination input.))
164
- else
165
- subscription_channel = subscription['channel']
166
- subscription_channel['type'] = channel_value
167
- subscription_channel['payload'] = payload_value
168
-
169
- channel_path = ['channel', 'type']
170
- payload_path = ['channel', 'payload']
171
-
172
- send_unsupported_subscription(subscription, 'unsupported channel and payload combination', [channel_path, payload_path],
173
- [channel_value, payload_value])
174
- end
175
- end
176
-
177
- no_error_verification('Unsupported Subscription creation error handling failures.')
178
- end
179
- end
180
- end
181
- end