subscriptions_test_kit 0.12.2 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/lib/subscriptions_test_kit/common/notification_conformance_verification.rb +6 -4
  3. data/lib/subscriptions_test_kit/common/subscription_conformance_verification.rb +4 -2
  4. data/lib/subscriptions_test_kit/docs/subscriptions_r5_backport_r4_client_suite_description.md +39 -18
  5. data/lib/subscriptions_test_kit/docs/subscriptions_r5_backport_r4_server_suite_description.md +16 -4
  6. data/lib/subscriptions_test_kit/endpoints/subscription_create_endpoint.rb +5 -33
  7. data/lib/subscriptions_test_kit/endpoints/subscription_delete_endpoint.rb +38 -0
  8. data/lib/subscriptions_test_kit/endpoints/subscription_patch_endpoint.rb +69 -0
  9. data/lib/subscriptions_test_kit/endpoints/subscription_read_endpoint.rb +5 -5
  10. data/lib/subscriptions_test_kit/endpoints/subscription_status_endpoint.rb +12 -17
  11. data/lib/subscriptions_test_kit/endpoints/subscription_update_endpoint.rb +81 -0
  12. data/lib/subscriptions_test_kit/fhir_validation.rb +9 -0
  13. data/lib/subscriptions_test_kit/requirements/generated/subscriptions_r5_backport_r4_server_requirements_coverage.csv +2 -2
  14. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/common/subscription_simulation_utils.rb +105 -11
  15. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/fixtures/capability_statement.json +12 -0
  16. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/update_delete_workflow/conformance_verification/delete_verification_test.rb +33 -0
  17. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/update_delete_workflow/conformance_verification/patch_update_verification_test.rb +44 -0
  18. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/update_delete_workflow/conformance_verification/put_update_verification_test.rb +36 -0
  19. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/update_delete_workflow/conformance_verification/update_request_loading.rb +61 -0
  20. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/update_delete_workflow/update_delete_conformance_verification_group.rb +18 -0
  21. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/update_delete_workflow/update_delete_interaction_test.rb +95 -0
  22. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/update_delete_workflow_group.rb +40 -0
  23. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/workflow/conformance_verification/notification_input_verification_test.rb +3 -1
  24. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/workflow/conformance_verification/processing_attestation_test.rb +1 -0
  25. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client_suite.rb +24 -2
  26. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/common/interaction/subscription_conformance_test.rb +3 -2
  27. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/common/subscription_creation.rb +1 -0
  28. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/common/subscription_update_delete.rb +43 -0
  29. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/update_delete/delete_test.rb +30 -0
  30. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/update_delete/update_patch_test.rb +33 -0
  31. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/update_delete/update_put_test.rb +32 -0
  32. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/update_delete_group.rb +27 -0
  33. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/workflow_group.rb +6 -2
  34. data/lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server_suite.rb +18 -2
  35. data/lib/subscriptions_test_kit/tags.rb +2 -0
  36. data/lib/subscriptions_test_kit/version.rb +2 -2
  37. metadata +36 -6
@@ -0,0 +1,30 @@
1
+ require_relative '../common/subscription_update_delete'
2
+
3
+ module SubscriptionsTestKit
4
+ module SubscriptionsR5BackportR4Server
5
+ class DeleteTest < Inferno::Test
6
+ include SubscriptionUpdateDelete
7
+
8
+ id :subscriptions_r4_server_delete
9
+ title 'Server supports deleting a Subscription'
10
+ description %(
11
+ During this test, Inferno will send a FHIR [delete](https://hl7.org/fhir/R4/http.html#delete) request
12
+ for the Subscription created during the "Demonstrate the Subscription Workflow" group. Inferno will
13
+ verify that the server responds with a `200`, `202`, or `204` status and that a subsequent read of
14
+ the Subscription returns a `404` or `410` status.
15
+ )
16
+ optional
17
+ verifies_requirements 'hl7.fhir.uv.subscriptions_1.1.0@127'
18
+
19
+ run do
20
+ subscription_id = created_subscription_id
21
+
22
+ fhir_delete(:subscription, subscription_id)
23
+ assert_response_status([200, 202, 204])
24
+
25
+ fhir_read(:subscription, subscription_id)
26
+ assert_response_status([404, 410])
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,33 @@
1
+ require_relative '../common/subscription_update_delete'
2
+
3
+ module SubscriptionsTestKit
4
+ module SubscriptionsR5BackportR4Server
5
+ class UpdatePatchTest < Inferno::Test
6
+ include SubscriptionUpdateDelete
7
+
8
+ id :subscriptions_r4_server_update_patch
9
+ title 'Server supports updating a Subscription using JSON Patch'
10
+ description %(
11
+ During this test, Inferno will send a [patch](https://hl7.org/fhir/R4/http.html#patch) (`PATCH`)
12
+ request using [JSON Patch](https://datatracker.ietf.org/doc/html/rfc6902) to change the `reason`
13
+ of the Subscription created during the "Demonstrate the Subscription Workflow" group. Inferno
14
+ will verify that the server responds with a `200` status and that a subsequent read of the Subscription
15
+ reflects the change. Inferno does not test XML Patch or FHIRPath Patch.
16
+ )
17
+ optional
18
+
19
+ verifies_requirements 'hl7.fhir.uv.subscriptions_1.1.0@126'
20
+
21
+ run do
22
+ subscription_id = created_subscription_id
23
+ subscription = read_subscription_json(subscription_id)
24
+ expected_reason = updated_reason(subscription, 'JSON Patch')
25
+
26
+ fhir_patch(:subscription, subscription_id, [{ op: 'add', path: '/reason', value: expected_reason }])
27
+ assert_response_status(200)
28
+
29
+ verify_reason_updated(subscription_id, expected_reason)
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,32 @@
1
+ require_relative '../common/subscription_update_delete'
2
+
3
+ module SubscriptionsTestKit
4
+ module SubscriptionsR5BackportR4Server
5
+ class UpdatePutTest < Inferno::Test
6
+ include SubscriptionUpdateDelete
7
+
8
+ id :subscriptions_r4_server_update_put
9
+ title 'Server supports updating a Subscription using PUT'
10
+ description %(
11
+ During this test, Inferno will send a FHIR [update](https://hl7.org/fhir/R4/http.html#update)
12
+ (`PUT`) request to change the `reason` of the Subscription created during the "Demonstrate the
13
+ Subscription Workflow" group. Inferno will verify that the server responds with a `200` status
14
+ and that a subsequent read of the Subscription reflects the change.
15
+ )
16
+ optional
17
+
18
+ verifies_requirements 'hl7.fhir.uv.subscriptions_1.1.0@126'
19
+
20
+ run do
21
+ subscription_id = created_subscription_id
22
+ subscription = read_subscription_json(subscription_id)
23
+ expected_reason = updated_reason(subscription, 'PUT')
24
+
25
+ fhir_update(raw_subscription_resource(subscription.merge('reason' => expected_reason)), subscription_id)
26
+ assert_response_status(200)
27
+
28
+ verify_reason_updated(subscription_id, expected_reason)
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,27 @@
1
+ require_relative 'update_delete/update_put_test'
2
+ require_relative 'update_delete/update_patch_test'
3
+ require_relative 'update_delete/delete_test'
4
+
5
+ module SubscriptionsTestKit
6
+ module SubscriptionsR5BackportR4Server
7
+ class UpdateDeleteGroup < Inferno::TestGroup
8
+ id :subscriptions_r4_server_update_delete
9
+ title 'Subscription Update and Deletion Verification'
10
+ description %(
11
+ During this group, Inferno will verify that the Subscriptions server supports requests that
12
+ modify and delete Subscription resources.
13
+
14
+ This group must be run after the "Demonstrate the Subscription Workflow" group because
15
+ it updates and then deletes the Subscription created during that group. Because the
16
+ Subscription is deleted, the "Demonstrate the Subscription Workflow" tests must be run
17
+ again before re-running this group or others, like the "Subscription $status Operation
18
+ Verification" group, that rely on that Subscription.
19
+ )
20
+ optional
21
+
22
+ test from: :subscriptions_r4_server_update_put
23
+ test from: :subscriptions_r4_server_update_patch
24
+ test from: :subscriptions_r4_server_delete
25
+ end
26
+ end
27
+ end
@@ -5,7 +5,7 @@ module SubscriptionsTestKit
5
5
  module SubscriptionsR5BackportR4Server
6
6
  class WorkflowGroup < Inferno::TestGroup
7
7
  id :subscriptions_r4_server_workflow
8
- title 'Demonstrate the subscription workflow'
8
+ title 'Demonstrate the Subscription Workflow'
9
9
  description %(
10
10
  Demonstrate the ability of the server to accept a request for the
11
11
  creation of a FHIR Subscription instance and deliver an event notification
@@ -20,7 +20,11 @@ module SubscriptionsTestKit
20
20
 
21
21
  input_order :url, :smart_auth_info, :access_token, :subscription_resource
22
22
 
23
- group from: :subscriptions_r4_server_interaction
23
+ group from: :subscriptions_r4_server_interaction do
24
+ # tags the Subscription creation request so that later groups, such as update and delete,
25
+ # can find the Subscription created by this group rather than one created in another group
26
+ config(options: { workflow_subscription: true })
27
+ end
24
28
  group from: :subscriptions_r4_server_interaction_verification
25
29
  end
26
30
  end
@@ -4,7 +4,9 @@ require_relative 'subscriptions_r5_backport_r4_server/event_notification_group'
4
4
  require_relative 'subscriptions_r5_backport_r4_server/handshake_heartbeat_group'
5
5
  require_relative 'subscriptions_r5_backport_r4_server/status_operation_group'
6
6
  require_relative 'subscriptions_r5_backport_r4_server/subscription_rejection_group'
7
+ require_relative 'subscriptions_r5_backport_r4_server/update_delete_group'
7
8
  require_relative '../endpoints/subscription_rest_hook_endpoint'
9
+ require_relative '../fhir_validation'
8
10
  require_relative '../urls'
9
11
 
10
12
  module SubscriptionsTestKit
@@ -69,10 +71,23 @@ module SubscriptionsTestKit
69
71
 
70
72
  # All FHIR validation requests will use this FHIR validator
71
73
  fhir_resource_validator do
72
- igs 'hl7.fhir.uv.subscriptions-backport#1.1.0'
74
+ igs SUBSCRIPTIONS_BACKPORT_IG
73
75
 
74
76
  exclude_message do |message|
75
- message.message.match?(/\A\S+: \S+: URL value '.*' does not resolve/)
77
+ message.message.match?(UNRESOLVED_URL_VALIDATION_MESSAGE)
78
+ end
79
+ end
80
+
81
+ # Used to validate tester-provided content so that it cannot rely on extensions not defined in the IG
82
+ fhir_resource_validator :no_custom_extensions do
83
+ igs SUBSCRIPTIONS_BACKPORT_IG
84
+
85
+ validation_context do
86
+ extensions [] # no extensions not in the spec
87
+ end
88
+
89
+ exclude_message do |message|
90
+ message.message.match?(UNRESOLVED_URL_VALIDATION_MESSAGE)
76
91
  end
77
92
  end
78
93
 
@@ -92,6 +107,7 @@ module SubscriptionsTestKit
92
107
  group from: :subscriptions_r4_server_handshake_heartbeat
93
108
  group from: :subscriptions_r4_server_status_operation
94
109
  group from: :subscriptions_r4_server_subscription_rejection
110
+ group from: :subscriptions_r4_server_update_delete
95
111
  end
96
112
  end
97
113
  end
@@ -4,6 +4,8 @@ module SubscriptionsTestKit
4
4
  NOTIFICATION_TAG = 'subscription_notification'
5
5
  SUBSCRIPTION_CREATE_TAG = 'subscription_create'
6
6
  SUBSCRIPTION_READ_TAG = 'subscription_read'
7
+ SUBSCRIPTION_UPDATE_TAG = 'subscription_update'
8
+ SUBSCRIPTION_DELETE_TAG = 'subscription_delete'
7
9
  SUBSCRIPTION_STATUS_TAG = 'subscription_status'
8
10
  REST_HOOK_HANDSHAKE_NOTIFICATION_TAG = 'rest_hook_handshake_notification'
9
11
  REST_HOOK_EVENT_NOTIFICATION_TAG = 'rest_hook_event_notification'
@@ -1,4 +1,4 @@
1
1
  module SubscriptionsTestKit
2
- VERSION = '0.12.2'.freeze
3
- LAST_UPDATED = '2026-05-27'.freeze
2
+ VERSION = '0.13.0'.freeze
3
+ LAST_UPDATED = '2026-10-13'.freeze
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: subscriptions_test_kit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.2
4
+ version: 0.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Karl Naden, Emily Semple, Tom Strassner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-05-27 00:00:00.000000000 Z
11
+ date: 2026-10-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -25,25 +25,39 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.10.5
27
27
  - !ruby/object:Gem::Dependency
28
- name: inferno_core
28
+ name: hana
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.3'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: inferno_core
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.4'
34
48
  - - ">="
35
49
  - !ruby/object:Gem::Version
36
- version: 1.3.1
50
+ version: 1.4.6
37
51
  type: :runtime
38
52
  prerelease: false
39
53
  version_requirements: !ruby/object:Gem::Requirement
40
54
  requirements:
41
55
  - - "~>"
42
56
  - !ruby/object:Gem::Version
43
- version: '1.3'
57
+ version: '1.4'
44
58
  - - ">="
45
59
  - !ruby/object:Gem::Version
46
- version: 1.3.1
60
+ version: 1.4.6
47
61
  description: Inferno test kit for FHIR R5-style Subscriptions
48
62
  email:
49
63
  executables: []
@@ -66,9 +80,13 @@ files:
66
80
  - lib/subscriptions_test_kit/docs/subscriptions_r5_backport_r4_client_suite_description.md
67
81
  - lib/subscriptions_test_kit/docs/subscriptions_r5_backport_r4_server_suite_description.md
68
82
  - lib/subscriptions_test_kit/endpoints/subscription_create_endpoint.rb
83
+ - lib/subscriptions_test_kit/endpoints/subscription_delete_endpoint.rb
84
+ - lib/subscriptions_test_kit/endpoints/subscription_patch_endpoint.rb
69
85
  - lib/subscriptions_test_kit/endpoints/subscription_read_endpoint.rb
70
86
  - lib/subscriptions_test_kit/endpoints/subscription_rest_hook_endpoint.rb
71
87
  - lib/subscriptions_test_kit/endpoints/subscription_status_endpoint.rb
88
+ - lib/subscriptions_test_kit/endpoints/subscription_update_endpoint.rb
89
+ - lib/subscriptions_test_kit/fhir_validation.rb
72
90
  - lib/subscriptions_test_kit/igs/.keep
73
91
  - lib/subscriptions_test_kit/igs/README.md
74
92
  - lib/subscriptions_test_kit/jobs/send_subscription_notifications.rb
@@ -79,6 +97,13 @@ files:
79
97
  - lib/subscriptions_test_kit/requirements/subscriptions_test_kit_requirements.csv
80
98
  - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/common/subscription_simulation_utils.rb
81
99
  - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/fixtures/capability_statement.json
100
+ - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/update_delete_workflow/conformance_verification/delete_verification_test.rb
101
+ - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/update_delete_workflow/conformance_verification/patch_update_verification_test.rb
102
+ - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/update_delete_workflow/conformance_verification/put_update_verification_test.rb
103
+ - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/update_delete_workflow/conformance_verification/update_request_loading.rb
104
+ - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/update_delete_workflow/update_delete_conformance_verification_group.rb
105
+ - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/update_delete_workflow/update_delete_interaction_test.rb
106
+ - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/update_delete_workflow_group.rb
82
107
  - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/workflow/conformance_verification/notification_input_payload_verification_test.rb
83
108
  - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/workflow/conformance_verification/notification_input_verification_test.rb
84
109
  - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/workflow/conformance_verification/processing_attestation_test.rb
@@ -102,6 +127,7 @@ files:
102
127
  - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/common/interaction_verification_group.rb
103
128
  - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/common/subscription_creation.rb
104
129
  - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/common/subscription_status_operation.rb
130
+ - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/common/subscription_update_delete.rb
105
131
  - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/event_notification/empty_content/empty_conformance_test.rb
106
132
  - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/event_notification/empty_content_group.rb
107
133
  - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/event_notification/full_resource_content/full_resource_conformance_test.rb
@@ -122,6 +148,10 @@ files:
122
148
  - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/subscription_rejection/reject_subscription_payload_type_test.rb
123
149
  - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/subscription_rejection/reject_subscription_topic_test.rb
124
150
  - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/subscription_rejection_group.rb
151
+ - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/update_delete/delete_test.rb
152
+ - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/update_delete/update_patch_test.rb
153
+ - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/update_delete/update_put_test.rb
154
+ - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/update_delete_group.rb
125
155
  - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/workflow_group.rb
126
156
  - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server_suite.rb
127
157
  - lib/subscriptions_test_kit/tags.rb