subscriptions_test_kit 0.9.1 → 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
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