subscriptions_test_kit 0.9.1 → 0.9.3

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 (49) 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 +4 -2
  5. data/lib/subscriptions_test_kit/endpoints/subscription_create_endpoint.rb +7 -3
  6. data/lib/subscriptions_test_kit/endpoints/subscription_status_endpoint.rb +16 -11
  7. data/lib/subscriptions_test_kit/requirements/generated/subscriptions-test-kit_requirements_coverage.csv +50 -50
  8. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/common/subscription_simulation_utils.rb +9 -6
  9. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/workflow/conformance_verification/notification_input_payload_verification_test.rb +3 -3
  10. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/workflow/conformance_verification/notification_input_verification_test.rb +2 -2
  11. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/workflow/conformance_verification/processing_attestation_test.rb +2 -2
  12. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/workflow/conformance_verification/subscription_verification_test.rb +3 -3
  13. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/workflow/conformance_verification_group.rb +6 -6
  14. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/workflow/interaction_test.rb +15 -12
  15. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/workflow/interaction_verification/event_notification_verification_test.rb +7 -6
  16. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/workflow/interaction_verification/handshake_notification_verification_test.rb +6 -6
  17. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/workflow/interaction_verification_group.rb +4 -4
  18. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/workflow_group.rb +4 -4
  19. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client_suite.rb +6 -4
  20. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/{coverage/capability_statement → capability_statement}/cs_conformance_test.rb +2 -2
  21. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/{coverage/capability_statement → capability_statement}/topic_discovery_test.rb +5 -5
  22. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/capability_statement_group.rb +21 -0
  23. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/common/interaction/creation_response_conformance_test.rb +2 -2
  24. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/common/interaction/notification_delivery_test.rb +1 -1
  25. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/common/interaction/subscription_conformance_test.rb +11 -10
  26. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/common/interaction_group.rb +7 -7
  27. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/common/interaction_verification/notification_conformance_test.rb +1 -1
  28. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/common/interaction_verification_group.rb +2 -2
  29. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/common/subscription_status_operation.rb +3 -2
  30. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/{coverage/event_notification → event_notification}/empty_content/empty_conformance_test.rb +2 -2
  31. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/{coverage/event_notification → event_notification}/empty_content_group.rb +11 -10
  32. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/{coverage/event_notification → event_notification}/full_resource_content/full_resource_conformance_test.rb +4 -4
  33. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/{coverage/event_notification → event_notification}/full_resource_content_group.rb +11 -10
  34. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/{coverage/event_notification → event_notification}/id_only_content/id_only_conformance_test.rb +4 -4
  35. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/{coverage/event_notification → event_notification}/id_only_content_group.rb +11 -10
  36. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/{coverage/event_notification_group.rb → event_notification_group.rb} +6 -6
  37. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/{coverage/handshake_heartbeat → handshake_heartbeat}/handshake_conformance_test.rb +9 -8
  38. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/{coverage/handshake_heartbeat → handshake_heartbeat}/heartbeat_conformance_test.rb +6 -4
  39. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/{coverage/handshake_heartbeat_group.rb → handshake_heartbeat_group.rb} +3 -3
  40. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/{coverage/status_operation → status_operation}/status_invocation_test.rb +4 -4
  41. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/{coverage/status_operation_group.rb → status_operation_group.rb} +3 -3
  42. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/{coverage/subscription_rejection → subscription_rejection}/reject_subscriptions_test.rb +31 -27
  43. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/{coverage/subscription_rejection_group.rb → subscription_rejection_group.rb} +2 -2
  44. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/workflow_group.rb +3 -3
  45. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server_suite.rb +14 -5
  46. data/lib/subscriptions_test_kit/version.rb +1 -3
  47. metadata +21 -92
  48. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/coverage/capability_statement_group.rb +0 -21
  49. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/coverage_group.rb +0 -26
@@ -8,13 +8,13 @@ require_relative 'conformance_verification/processing_attestation_test'
8
8
  module SubscriptionsTestKit
9
9
  module SubscriptionsR5BackportR4Client
10
10
  class ConformanceVerificationGroup < Inferno::TestGroup
11
- id :subscriptions_r5_backport_r4_client_conformance_verification
11
+ id :subscriptions_r4_client_conformance_verification
12
12
  title 'Rest-Hook Subscription Conformance Verification'
13
13
 
14
- test from: :subscriptions_r5_backport_r4_client_subscription_verification
15
- test from: :subscriptions_r5_backport_r4_client_notification_input_verification
16
- test from: :subscriptions_r5_backport_r4_client_notification_input_payload_verification
17
- test from: :subscriptions_r5_backport_r4_client_processing_attestation
14
+ test from: :subscriptions_r4_client_subscription_verification
15
+ test from: :subscriptions_r4_client_notification_input_verification
16
+ test from: :subscriptions_r4_client_notification_input_payload_verification
17
+ test from: :subscriptions_r4_client_processing_attestation
18
18
  end
19
19
  end
20
- end
20
+ end
@@ -3,7 +3,7 @@
3
3
  module SubscriptionsTestKit
4
4
  module SubscriptionsR5BackportR4Client
5
5
  class InteractionTest < Inferno::Test
6
- id :subscriptions_r5_backport_r4_client_interaction
6
+ id :subscriptions_r4_client_interaction
7
7
  description %(
8
8
  During this test, the client under test will interact with Inferno following the Subscription
9
9
  workflow over a `rest-hook` channel. This includes the following steps
@@ -17,19 +17,20 @@ module SubscriptionsTestKit
17
17
  Afterwards, Inferno will no longer respond to requests.
18
18
 
19
19
  To create the handshake and event notifications, Inferno uses the contents of the *Event
20
- Notification Bundle* input. The provided notification will be modified as appropriate for
20
+ Notification Bundle* input. The provided notification will be modified as appropriate for
21
21
  the request Inferno is making:
22
22
  - General changes for all notification types
23
23
  - update the `subscription` parameter entry reference.
24
24
  - update the `status` parameter entry based on the previous interactions.
25
- - update the `type` parameter entry based on the notification type (e.g., `event-notification` or `handshake`).
25
+ - update the `type` parameter entry based on the notification type (e.g., `event-notification` or
26
+ `handshake`).
26
27
  - update the number of notifications sent in the `events-since-subscription-start` parameter entry.
27
28
  - `handshake`-specific changes:
28
29
  - clear the `events` parameter entry.
29
30
  - clear the `errors` parameter entry.
30
31
 
31
- While the provided Notification must be conformant to the
32
- [R4 Topic-Based Subscription Notification Bundle
32
+ While the provided Notification must be conformant to the
33
+ [R4 Topic-Based Subscription Notification Bundle
33
34
  profile](https://hl7.org/fhir/uv/subscriptions-backport/STU1.1/StructureDefinition-backport-subscription-notification-r4.html)
34
35
  for the tests to pass, the tests can run as long as the notification meets the
35
36
  following minimal requirements:
@@ -49,10 +50,10 @@ module SubscriptionsTestKit
49
50
  optional: true,
50
51
  title: 'Client Notification Access Token',
51
52
  description: %(
52
- The bearer token that Inferno will send on requests to the client under test's rest-hook notification endpoint. Not
53
- needed if the client under test will create a Subscription with an appropriate header value in the
54
- `channel.header` element. If a value for the `authorization` header is provided in `channel.header`, this
55
- value will override it.
53
+ The bearer token that Inferno will send on requests to the client under test's rest-hook notification
54
+ endpoint. Not needed if the client under test will create a Subscription with an appropriate header value
55
+ in the `channel.header` element. If a value for the `authorization` header is provided in
56
+ `channel.header`, this value will override it.
56
57
  )
57
58
  input :notification_bundle,
58
59
  title: 'Event Notification Bundle',
@@ -67,7 +68,9 @@ module SubscriptionsTestKit
67
68
 
68
69
  run do
69
70
  minimally_validate_notification(notification_bundle)
70
- assert(messages.none? { |m| m[:type] == 'error' }, 'Notification Bundle input is invalid for use by Inferno, see error message(s)')
71
+ assert(messages.none? do |m|
72
+ m[:type] == 'error'
73
+ end, 'Notification Bundle input is invalid for use by Inferno, see error message(s)')
71
74
 
72
75
  wait(
73
76
  identifier: access_token,
@@ -118,11 +121,11 @@ module SubscriptionsTestKit
118
121
  # Require the subscription param, just because we need something to later identify the subscription status
119
122
  # bundle entry. Note we could just as easily use a different required param, like status or type.
120
123
  subscription_param = subscription_status.parameter&.find { |p| p.name == 'subscription' }
121
- assert(subscription_param.present?, 'Subscription status entry in notification bundle input must contain a'\
124
+ assert(subscription_param.present?, 'Subscription status entry in notification bundle input must contain a' \
122
125
  'subscription parameter')
123
126
  rescue Inferno::Exceptions::AssertionException => e
124
127
  add_message('error', e.message)
125
128
  end
126
129
  end
127
130
  end
128
- end
131
+ end
@@ -7,7 +7,7 @@ module SubscriptionsTestKit
7
7
  class EventNotificationVerificationTest < Inferno::Test
8
8
  include SubscriptionSimulationUtils
9
9
 
10
- id :subscriptions_r5_backport_r4_client_event_notification_verification
10
+ id :subscriptions_r4_client_event_notification_verification
11
11
  title 'Rest-Hook Event Notification Verification'
12
12
  description %(
13
13
  This test verifies that the client's response to the event notification
@@ -23,18 +23,19 @@ module SubscriptionsTestKit
23
23
  # The SendSubscriptionNotifications job saves a nil status if the request fails entirely
24
24
  assert(request.status.present?, "Handshake notification request failed with error: #{request.response_body}")
25
25
 
26
- assert(request.status.between?(200, 299), "Event notification was not successful, status code #{request.status}")
26
+ assert(request.status.between?(200, 299),
27
+ "Event notification was not successful, status code #{request.status}")
27
28
 
28
29
  subscription = find_subscription(test_session_id)
29
30
  if subscription.present?
30
31
  mime_type = subscription&.channel&.payload
31
32
  unless ALLOWED_MIME_TYPES.include?(mime_type)
32
- add_message('warning', %(Subscription specified '#{mime_type}' for `Subscription.channel.payload`, but Inferno
33
- only supports: #{ALLOWED_MIME_TYPES.map { |type| "'#{type}'" }.join(', ')}.
34
- Event notification was sent with Content-Type: '#{DEFAULT_MIME_TYPE}'.))
33
+ add_message('warning', %(Subscription specified '#{mime_type}' for `Subscription.channel.payload`, but
34
+ Inferno only supports: #{ALLOWED_MIME_TYPES.map { |type| "'#{type}'" }.join(', ')}.
35
+ Event notification was sent with Content-Type: '#{DEFAULT_MIME_TYPE}'.))
35
36
  end
36
37
  end
37
38
  end
38
39
  end
39
40
  end
40
- end
41
+ end
@@ -7,7 +7,7 @@ module SubscriptionsTestKit
7
7
  class HandshakeNotificationVerificationTest < Inferno::Test
8
8
  include SubscriptionSimulationUtils
9
9
 
10
- id :subscriptions_r5_backport_r4_client_handshake_notification_verification
10
+ id :subscriptions_r4_client_handshake_notification_verification
11
11
  title 'Rest-Hook Handshake Notification Verification'
12
12
  description %(
13
13
  This test verifies that the client's response to the handshake notification
@@ -23,18 +23,18 @@ module SubscriptionsTestKit
23
23
  assert(request.status.present?, "Handshake notification request failed with error: #{request.response_body}")
24
24
 
25
25
  assert(request.status.between?(200, 299),
26
- "Handshake notification was not successful, status code #{request.status}")
26
+ "Handshake notification was not successful, status code #{request.status}")
27
27
 
28
28
  subscription = find_subscription(test_session_id)
29
29
  if subscription.present?
30
30
  mime_type = subscription&.channel&.payload
31
31
  unless ALLOWED_MIME_TYPES.include?(mime_type)
32
- add_message('warning', %(Subscription specified '#{mime_type}' for `Subscription.channel.payload`, but Inferno
33
- only supports: #{ALLOWED_MIME_TYPES.map { |type| "'#{type}'" }.join(', ')}.
34
- Handshake notification was sent with Content-Type: '#{DEFAULT_MIME_TYPE}'.))
32
+ add_message('warning', %(Subscription specified '#{mime_type}' for `Subscription.channel.payload`, but
33
+ Inferno only supports: #{ALLOWED_MIME_TYPES.map { |type| "'#{type}'" }.join(', ')}.
34
+ Handshake notification was sent with Content-Type: '#{DEFAULT_MIME_TYPE}'.))
35
35
  end
36
36
  end
37
37
  end
38
38
  end
39
39
  end
40
- end
40
+ end
@@ -6,11 +6,11 @@ require_relative 'interaction_verification/event_notification_verification_test'
6
6
  module SubscriptionsTestKit
7
7
  module SubscriptionsR5BackportR4Client
8
8
  class InteractionVerificationGroup < Inferno::TestGroup
9
- id :subscriptions_r5_backport_r4_client_interaction_verification
9
+ id :subscriptions_r4_client_interaction_verification
10
10
  title 'Rest-Hook Subscription Interaction Verification'
11
11
 
12
- test from: :subscriptions_r5_backport_r4_client_handshake_notification_verification
13
- test from: :subscriptions_r5_backport_r4_client_event_notification_verification
12
+ test from: :subscriptions_r4_client_handshake_notification_verification
13
+ test from: :subscriptions_r4_client_event_notification_verification
14
14
  end
15
15
  end
16
- end
16
+ end
@@ -9,7 +9,7 @@ module SubscriptionsTestKit
9
9
  class WorkflowGroup < Inferno::TestGroup
10
10
  include URLs
11
11
 
12
- id :subscriptions_r5_backport_r4_client_workflow
12
+ id :subscriptions_r4_client_workflow
13
13
  title 'Demonstrate the Rest-Hook Subscription Workflow'
14
14
  description %(
15
15
  Demonstrate the ability of the client to request the
@@ -23,11 +23,11 @@ module SubscriptionsTestKit
23
23
  run_as_group
24
24
 
25
25
  group 'Rest-Hook Subscription Interaction' do
26
- test from: :subscriptions_r5_backport_r4_client_interaction
26
+ test from: :subscriptions_r4_client_interaction
27
27
  end
28
28
 
29
- group from: :subscriptions_r5_backport_r4_client_interaction_verification
30
- group from: :subscriptions_r5_backport_r4_client_conformance_verification
29
+ group from: :subscriptions_r4_client_interaction_verification
30
+ group from: :subscriptions_r4_client_conformance_verification
31
31
  end
32
32
  end
33
33
  end
@@ -13,7 +13,8 @@ module SubscriptionsTestKit
13
13
  title 'Subscriptions R5 Backport IG v1.1.0 FHIR R4 Client Test Suite'
14
14
  short_title 'Subscriptions R4 Client'
15
15
  version VERSION
16
- description File.read(File.join(__dir__, '..', 'docs', 'subscriptions_r5_backport_r4_client_suite_description.md'))
16
+ description File.read(File.join(__dir__, '..', 'docs',
17
+ 'subscriptions_r5_backport_r4_client_suite_description.md'))
17
18
 
18
19
  links [
19
20
  {
@@ -43,7 +44,8 @@ module SubscriptionsTestKit
43
44
  end
44
45
  end
45
46
 
46
- capability_statement = File.read(File.join(__dir__, 'subscriptions_r5_backport_r4_client', 'fixtures', 'capability_statement.json'))
47
+ capability_statement = File.read(File.join(__dir__, 'subscriptions_r5_backport_r4_client', 'fixtures',
48
+ 'capability_statement.json'))
47
49
  route(:get, '/fhir/metadata', proc { [200, { 'Content-Type' => 'application/json' }, [capability_statement]] })
48
50
 
49
51
  suite_endpoint :post, FHIR_SUBSCRIPTION_PATH, SubscriptionCreateEndpoint
@@ -60,7 +62,7 @@ module SubscriptionsTestKit
60
62
  request.query_parameters['test_run_identifier']
61
63
  end
62
64
 
63
- group from: :subscriptions_r5_backport_r4_client_workflow
65
+ group from: :subscriptions_r4_client_workflow
64
66
  end
65
67
  end
66
- end
68
+ end
@@ -1,7 +1,7 @@
1
1
  module SubscriptionsTestKit
2
2
  module SubscriptionsR5BackportR4Server
3
3
  class CSConformanceTest < Inferno::Test
4
- id :subscriptions_r5_backport_r4_server_cs_conformance
4
+ id :subscriptions_r4_server_cs_conformance
5
5
  title 'Capability Statement Conformance Verification'
6
6
  description %(
7
7
  This test attempts to retreive the server's Capability Statement in order to verify that it
@@ -33,7 +33,7 @@ module SubscriptionsTestKit
33
33
  assert(rest_subscription.present?, 'Capability Statement missing `Subscription` resource in `rest` field')
34
34
 
35
35
  assert(rest_subscription.supportedProfile.present?,
36
- 'Capability Statement missing the `supportedProfile` field in `Subscription` resource')
36
+ 'Capability Statement missing the `supportedProfile` field in `Subscription` resource')
37
37
 
38
38
  subscription_profile_present = rest_subscription.supportedProfile.any? do |profile|
39
39
  profile == subscription_profile_url
@@ -1,11 +1,11 @@
1
- require_relative '../../../../common/subscription_conformance_verification'
1
+ require_relative '../../../common/subscription_conformance_verification'
2
2
 
3
3
  module SubscriptionsTestKit
4
4
  module SubscriptionsR5BackportR4Server
5
5
  class TopicDiscoveryTest < Inferno::Test
6
6
  include SubscriptionConformanceVerification
7
7
 
8
- id :subscriptions_r5_backport_r4_server_topic_discovery
8
+ id :subscriptions_r4_server_topic_discovery
9
9
  title 'Attempt topic discovery'
10
10
  description %(
11
11
  This test attempts to perform topic discovery with the server. In order to allow for [discovery of supported
@@ -59,7 +59,7 @@ module SubscriptionsTestKit
59
59
  assert(rest_subscription.present?, 'Capability Statement missing `Subscription` resource in `rest` field')
60
60
 
61
61
  assert(rest_subscription.extension.present?,
62
- 'Capability Statement missing the `extension` field on the Subscription resource')
62
+ 'Capability Statement missing the `extension` field on the Subscription resource')
63
63
  subscription_topic_extension = rest_subscription.extension.select do |elem|
64
64
  elem.url == capability_statement_subscriptiontopic_extension
65
65
  end
@@ -97,8 +97,8 @@ module SubscriptionsTestKit
97
97
  )
98
98
  else
99
99
  add_message('warning', %(
100
- No Subscription requests have been made in previous tests. Run the Subscription workflow tests first in order
101
- to verify topics found in the SubscriptionTopic Canonical extension))
100
+ No Subscription requests have been made in previous tests. Run the Subscription workflow tests first in
101
+ order to verify topics found in the SubscriptionTopic Canonical extension))
102
102
  end
103
103
  end
104
104
  end
@@ -0,0 +1,21 @@
1
+ require_relative 'capability_statement/cs_conformance_test'
2
+ require_relative 'capability_statement/topic_discovery_test'
3
+
4
+ module SubscriptionsTestKit
5
+ module SubscriptionsR5BackportR4Server
6
+ class CapabilityStatementGroup < Inferno::TestGroup
7
+ id :subscriptions_r4_server_capability_statement
8
+ title 'Capability Statement Verification'
9
+ description %(
10
+ Verify the Backport Subscriptions Server has a conformant Capability Statement and that it declares support for
11
+ the Backport Subscription Profile on the Subscription resource in the rest field. Then the group will verify if
12
+ the server supports topic discovert via the Capability Statement, which is an optional requirement.
13
+ )
14
+
15
+ run_as_group
16
+
17
+ test from: :subscriptions_r4_server_cs_conformance
18
+ test from: :subscriptions_r4_server_topic_discovery
19
+ end
20
+ end
21
+ end
@@ -1,7 +1,7 @@
1
1
  module SubscriptionsTestKit
2
2
  module SubscriptionsR5BackportR4Server
3
3
  class CreationResponseConformanceTest < Inferno::Test
4
- id :subscriptions_r5_backport_r4_server_creation_response_conformance
4
+ id :subscriptions_r4_server_creation_response_conformance
5
5
  title 'Verify Subscription Creation Response'
6
6
  description %(
7
7
  This test ensures that the server responded to the Subscription creation test with the new created Subscription
@@ -43,7 +43,7 @@ module SubscriptionsTestKit
43
43
  assert_resource_type('Subscription', resource: subscription)
44
44
 
45
45
  assert(subscription.channel.type == 'rest-hook' && subscription.status == 'requested',
46
- "The Subscription resource should have it's status set to 'requested', was '#{subscription.status}'")
46
+ "The Subscription resource should have it's status set to 'requested', was '#{subscription.status}'")
47
47
  end
48
48
  end
49
49
  end
@@ -7,7 +7,7 @@ module SubscriptionsTestKit
7
7
  include SubscriptionCreation
8
8
  include URLs
9
9
 
10
- id :subscriptions_r5_backport_r4_server_notification_delivery
10
+ id :subscriptions_r4_server_notification_delivery
11
11
  title 'Send Subscription and Receive Notification Requests from Server'
12
12
  description %(
13
13
  This test sends a request to create the Subscription resource to the Subscriptions Backport FHIR Server.
@@ -5,27 +5,28 @@ module SubscriptionsTestKit
5
5
  class SubscriptionConformanceTest < Inferno::Test
6
6
  include SubscriptionConformanceVerification
7
7
 
8
- id :subscriptions_r5_backport_r4_server_subscription_conformance
8
+ id :subscriptions_r4_server_subscription_conformance
9
9
  title '[USER INPUT VERIFICATION] Verify Subscription to Send to Server'
10
10
  description %(
11
11
  The Subscription resource is used to request notifications for a specific client about a specific topic
12
12
  Conceptually, a subscription is a concrete request for a single client to receive notifications per a single
13
13
  topic. In order to support topic-based subscriptions in R4, this guide defines several extensions for use on the
14
- [R4 Subscription resource](http://hl7.org/fhir/R4/subscription.html). A list of extensions defined by this guide can
15
- be found on the [Subscriptions R5 Backport IG's Artifacts page](https://hl7.org/fhir/uv/subscriptions-backport/STU1.1/artifacts.html#5).
14
+ [R4 Subscription resource](http://hl7.org/fhir/R4/subscription.html). A list of extensions defined by this guide
15
+ can be found on the
16
+ [Subscriptions R5 Backport IG's Artifacts page](https://hl7.org/fhir/uv/subscriptions-backport/STU1.1/artifacts.html#5).
16
17
 
17
- This test accepts a Subscription resource as an input and verifies that it is conformant to the
18
+ This test accepts a Subscription resource as an input and verifies that it is conformant to the
18
19
  [R4/B Topic-Based Subscription profile](https://hl7.org/fhir/uv/subscriptions-backport/STU1.1/StructureDefinition-backport-subscription.html).
19
20
 
20
21
  The Subscription channel should have it's fields populated with the following information:
21
22
  - The `endpoint` field must be set to
22
- `#{Inferno::Application['base_url']}/custom/subscriptions_r5_backport_r4_server/subscription/channel/notification_listener`.
23
+ `#{Inferno::Application['base_url']}/custom/subscriptions_r5_backport_r4_server#{SUBSCRIPTION_CHANNEL_PATH}`.
23
24
  The test will add the correct url to this field if it is not properly set.
24
25
  - The `type` field must be set to `rest-hook`, as the Inferno subscription workflow tests use a `rest-hook`
25
26
  subscription channel to receive incoming notifications. The test will add the correct type to this field if it
26
27
  is not properly set.
27
- - The `payload` field must be set to `application/json`, as Inferno will only accept resources in requests with
28
- this content type.
28
+ - The `payload` field must be set to `application/json`, as Inferno will only accept resources in requests
29
+ with this content type.
29
30
  - The `header` field must include the `Authorization` header with a Bearer token set to the inputted Inferno
30
31
  access token.
31
32
  )
@@ -41,8 +42,8 @@ module SubscriptionsTestKit
41
42
  so that it can demonstrate its ability to perform the Subscription creation and Notification
42
43
  response workflow. The instance must be conformant to the R4/B Topic-Based Subscription profile.
43
44
  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.
45
+ This input is also used by the unsupported Subscription test as the base on which to add unsupported
46
+ element values to test for server rejection.
46
47
  )
47
48
  input :access_token,
48
49
  title: 'Notification Access Token',
@@ -61,7 +62,7 @@ module SubscriptionsTestKit
61
62
  no_error_verification('Subscription resource is not conformant.')
62
63
 
63
64
  assert(subscription['criteria'].present?,
64
- 'The `criteria` field SHALL be populated and contain the canonical URL for the Subscription Topic.')
65
+ 'The `criteria` field SHALL be populated and contain the canonical URL for the Subscription Topic.')
65
66
  output subscription_topic: subscription['criteria']
66
67
 
67
68
  subscription = server_check_channel(subscription, access_token)
@@ -5,20 +5,20 @@ require_relative 'interaction/creation_response_conformance_test'
5
5
  module SubscriptionsTestKit
6
6
  module SubscriptionsR5BackportR4Server
7
7
  class InteractionGroup < Inferno::TestGroup
8
- id :subscriptions_r5_backport_r4_server_interaction
8
+ id :subscriptions_r4_server_interaction
9
9
  title 'Subscription Workflow Interaction'
10
10
  description %(
11
11
  Verify that the Subscription instance the tester provided is conformant, and then demonstrate the ability of the
12
- server under test to accept a request for the creation of a FHIR Subscription instance and deliver a notification
13
- for that Subscription. Inferno will act as a client, creating the Subscription and waiting for a notification
14
- based on it.
12
+ server under test to accept a request for the creation of a FHIR Subscription instance and deliver a
13
+ notification for that Subscription. Inferno will act as a client, creating the Subscription and waiting for a
14
+ notification based on it.
15
15
  )
16
16
 
17
17
  run_as_group
18
18
 
19
- test from: :subscriptions_r5_backport_r4_server_subscription_conformance
20
- test from: :subscriptions_r5_backport_r4_server_notification_delivery
21
- test from: :subscriptions_r5_backport_r4_server_creation_response_conformance
19
+ test from: :subscriptions_r4_server_subscription_conformance
20
+ test from: :subscriptions_r4_server_notification_delivery
21
+ test from: :subscriptions_r4_server_creation_response_conformance
22
22
  end
23
23
  end
24
24
  end
@@ -5,7 +5,7 @@ module SubscriptionsTestKit
5
5
  class NotificationConformanceTest < Inferno::Test
6
6
  include NotificationConformanceVerification
7
7
 
8
- id :subscriptions_r5_backport_r4_server_notification_conformance
8
+ id :subscriptions_r4_server_notification_conformance
9
9
  title 'Subscription Notification Verification'
10
10
  description %(
11
11
  As described in [Topic-Based Subscription Components](https://hl7.org/fhir/uv/subscriptions-backport/STU1.1/components.html#subscription-notifications),
@@ -3,7 +3,7 @@ require_relative 'interaction_verification/notification_conformance_test'
3
3
  module SubscriptionsTestKit
4
4
  module SubscriptionsR5BackportR4Server
5
5
  class InteractionVerificationGroup < Inferno::TestGroup
6
- id :subscriptions_r5_backport_r4_server_interaction_verification
6
+ id :subscriptions_r4_server_interaction_verification
7
7
  title 'Subscription Workflow Interaction Verification'
8
8
  description %(
9
9
  Inferno takes the received event-notification Bundle and verifies that it is conformant to the
@@ -13,7 +13,7 @@ module SubscriptionsTestKit
13
13
 
14
14
  run_as_group
15
15
 
16
- test from: :subscriptions_r5_backport_r4_server_notification_conformance
16
+ test from: :subscriptions_r4_server_notification_conformance
17
17
  end
18
18
  end
19
19
  end
@@ -17,7 +17,8 @@ module SubscriptionsTestKit
17
17
  assert_resource_type('Bundle')
18
18
 
19
19
  unless resource.type == 'searchset'
20
- add_message('error', "Bundle returned from $status operation should be type 'searchset', was #{resource.type}")
20
+ add_message('error',
21
+ "Bundle returned from $status operation should be type 'searchset', was #{resource.type}")
21
22
  end
22
23
 
23
24
  assert_valid_resource
@@ -39,7 +40,7 @@ module SubscriptionsTestKit
39
40
  entry.resource.resourceType == 'Parameters' && subscription_ref_found?(entry, subscription_id)
40
41
  end
41
42
  assert(subscription_status_entry,
42
- "No Subscription status with id #{subscription_id} returned from $status operation")
43
+ "No Subscription status with id #{subscription_id} returned from $status operation")
43
44
 
44
45
  subscription_status_resource = subscription_status_entry.resource
45
46
  assert_valid_resource(resource: subscription_status_resource,
@@ -1,11 +1,11 @@
1
- require_relative '../../../../../common/notification_conformance_verification'
1
+ require_relative '../../../../common/notification_conformance_verification'
2
2
 
3
3
  module SubscriptionsTestKit
4
4
  module SubscriptionsR5BackportR4Server
5
5
  class EmptyConformanceTest < Inferno::Test
6
6
  include NotificationConformanceVerification
7
7
 
8
- id :subscriptions_r5_backport_r4_server_empty_conformance
8
+ id :subscriptions_r4_server_empty_conformance
9
9
  title 'Subscription Empty Notification Verification'
10
10
  description %(
11
11
  This test takes the received empty notification bundle and ensures it is conformant to the
@@ -1,11 +1,11 @@
1
- require_relative '../../common/interaction_group'
2
- require_relative '../../common/interaction_verification_group'
1
+ require_relative '../common/interaction_group'
2
+ require_relative '../common/interaction_verification_group'
3
3
  require_relative 'empty_content/empty_conformance_test'
4
4
 
5
5
  module SubscriptionsTestKit
6
6
  module SubscriptionsR5BackportR4Server
7
7
  class EmptyContentGroup < Inferno::TestGroup
8
- id :subscriptions_r5_backport_r4_server_empty_content
8
+ id :subscriptions_r4_server_empty_content
9
9
  title 'Empty Notification Verification'
10
10
  description %(
11
11
  Verify that the received Notifications are conformant to the
@@ -18,8 +18,8 @@ module SubscriptionsTestKit
18
18
 
19
19
  input_order :url, :credentials, :access_token, :empty_subscription_resource
20
20
 
21
- group from: :subscriptions_r5_backport_r4_server_interaction do
22
- id :subscriptions_r5_backport_r4_server_empty_content_interaction
21
+ group from: :subscriptions_r4_server_interaction do
22
+ id :subscriptions_r4_server_empty_content_interaction
23
23
  optional
24
24
 
25
25
  config(
@@ -31,9 +31,10 @@ module SubscriptionsTestKit
31
31
  type: 'textarea',
32
32
  description: %(
33
33
  A Subscription resource in JSON format that Inferno will send to the server under test
34
- so that it can demonstrate its ability to send an empty Notification.
34
+ so that it can demonstrate its ability to send an empty Notification.
35
35
  The instance must be conformant to the R4/B Topic-Based Subscription profile.
36
- Inferno may modify the Subscription before submission, e.g., to point to Inferno's notification endpoint.
36
+ Inferno may modify the Subscription before submission, e.g., to point to Inferno's notification
37
+ endpoint.
37
38
  ),
38
39
  optional: true
39
40
  },
@@ -44,14 +45,14 @@ module SubscriptionsTestKit
44
45
  }
45
46
  )
46
47
  end
47
- group from: :subscriptions_r5_backport_r4_server_interaction_verification do
48
- id :subscriptions_r5_backport_r4_server_empty_content_interaction_verification
48
+ group from: :subscriptions_r4_server_interaction_verification do
49
+ id :subscriptions_r4_server_empty_content_interaction_verification
49
50
  optional
50
51
 
51
52
  config(
52
53
  options: { subscription_type: 'empty' }
53
54
  )
54
- test from: :subscriptions_r5_backport_r4_server_empty_conformance
55
+ test from: :subscriptions_r4_server_empty_conformance
55
56
  end
56
57
  end
57
58
  end
@@ -1,19 +1,19 @@
1
- require_relative '../../../../../common/notification_conformance_verification'
1
+ require_relative '../../../../common/notification_conformance_verification'
2
2
 
3
3
  module SubscriptionsTestKit
4
4
  module SubscriptionsR5BackportR4Server
5
5
  class FullResourceConformanceTest < Inferno::Test
6
6
  include NotificationConformanceVerification
7
7
 
8
- id :subscriptions_r5_backport_r4_server_full_resource_conformance
8
+ id :subscriptions_r4_server_full_resource_conformance
9
9
  title 'Subscription Full-Resource Notification Verification'
10
10
  description %(
11
11
  This test takes the received notification bundle and ensures it is conformant to the
12
12
  [R4 Topic-Based Subscription Notification Bundle](https://hl7.org/fhir/uv/subscriptions-backport/STU1.1/StructureDefinition-backport-subscription-notification-r4.html)
13
13
  profle.
14
14
 
15
- With the content type of full-resource, the resources involved in triggering the notification are included in the
16
- notification bundle.
15
+ With the content type of full-resource, the resources involved in triggering the notification are included in
16
+ the notification bundle.
17
17
 
18
18
  When the content type is full-resource, notification bundles SHALL include references to the
19
19
  appropriate focus resources in the SubscriptionStatus.notificationEvent.focus element.
@@ -1,11 +1,11 @@
1
- require_relative '../../common/interaction_group'
2
- require_relative '../../common/interaction_verification_group'
1
+ require_relative '../common/interaction_group'
2
+ require_relative '../common/interaction_verification_group'
3
3
  require_relative 'full_resource_content/full_resource_conformance_test'
4
4
 
5
5
  module SubscriptionsTestKit
6
6
  module SubscriptionsR5BackportR4Server
7
7
  class FullResourceContentGroup < Inferno::TestGroup
8
- id :subscriptions_r5_backport_r4_server_full_resource_content
8
+ id :subscriptions_r4_server_full_resource_content
9
9
  title 'Full Resource Notification Verification'
10
10
  description %(
11
11
  Verify that the received Notifications are conformant to the
@@ -18,8 +18,8 @@ module SubscriptionsTestKit
18
18
 
19
19
  input_order :url, :credentials, :access_token, :full_resource_subscription_resource
20
20
 
21
- group from: :subscriptions_r5_backport_r4_server_interaction do
22
- id :subscriptions_r5_backport_r4_server_full_resource_content_interaction
21
+ group from: :subscriptions_r4_server_interaction do
22
+ id :subscriptions_r4_server_full_resource_content_interaction
23
23
  optional
24
24
 
25
25
  config(
@@ -31,9 +31,10 @@ module SubscriptionsTestKit
31
31
  type: 'textarea',
32
32
  description: %(
33
33
  A Subscription resource in JSON format that Inferno will send to the server under test
34
- so that it can demonstrate its ability to send a full-resource Notification.
34
+ so that it can demonstrate its ability to send a full-resource Notification.
35
35
  The instance must be conformant to the R4/B Topic-Based Subscription profile.
36
- Inferno may modify the Subscription before submission, e.g., to point to Inferno's notification endpoint.
36
+ Inferno may modify the Subscription before submission, e.g., to point to Inferno's notification
37
+ endpoint.
37
38
  ),
38
39
  optional: true
39
40
  },
@@ -44,14 +45,14 @@ module SubscriptionsTestKit
44
45
  }
45
46
  )
46
47
  end
47
- group from: :subscriptions_r5_backport_r4_server_interaction_verification do
48
- id :subscriptions_r5_backport_r4_server_full_resource_content_interaction_verification
48
+ group from: :subscriptions_r4_server_interaction_verification do
49
+ id :subscriptions_r4_server_full_resource_content_interaction_verification
49
50
  optional
50
51
 
51
52
  config(
52
53
  options: { subscription_type: 'full-resource' }
53
54
  )
54
- test from: :subscriptions_r5_backport_r4_server_full_resource_conformance
55
+ test from: :subscriptions_r4_server_full_resource_conformance
55
56
  end
56
57
  end
57
58
  end