subscriptions_test_kit 0.12.1 → 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 +40 -4
@@ -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.1'.freeze
3
- LAST_UPDATED = '2026-04-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.1
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-04-28 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
@@ -24,20 +24,40 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.10.5
27
+ - !ruby/object:Gem::Dependency
28
+ name: hana
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
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'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: inferno_core
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - "~>"
32
46
  - !ruby/object:Gem::Version
33
- version: 1.2.1
47
+ version: '1.4'
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: 1.4.6
34
51
  type: :runtime
35
52
  prerelease: false
36
53
  version_requirements: !ruby/object:Gem::Requirement
37
54
  requirements:
38
55
  - - "~>"
39
56
  - !ruby/object:Gem::Version
40
- version: 1.2.1
57
+ version: '1.4'
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 1.4.6
41
61
  description: Inferno test kit for FHIR R5-style Subscriptions
42
62
  email:
43
63
  executables: []
@@ -60,9 +80,13 @@ files:
60
80
  - lib/subscriptions_test_kit/docs/subscriptions_r5_backport_r4_client_suite_description.md
61
81
  - lib/subscriptions_test_kit/docs/subscriptions_r5_backport_r4_server_suite_description.md
62
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
63
85
  - lib/subscriptions_test_kit/endpoints/subscription_read_endpoint.rb
64
86
  - lib/subscriptions_test_kit/endpoints/subscription_rest_hook_endpoint.rb
65
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
66
90
  - lib/subscriptions_test_kit/igs/.keep
67
91
  - lib/subscriptions_test_kit/igs/README.md
68
92
  - lib/subscriptions_test_kit/jobs/send_subscription_notifications.rb
@@ -73,6 +97,13 @@ files:
73
97
  - lib/subscriptions_test_kit/requirements/subscriptions_test_kit_requirements.csv
74
98
  - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/common/subscription_simulation_utils.rb
75
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
76
107
  - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/workflow/conformance_verification/notification_input_payload_verification_test.rb
77
108
  - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/workflow/conformance_verification/notification_input_verification_test.rb
78
109
  - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/workflow/conformance_verification/processing_attestation_test.rb
@@ -96,6 +127,7 @@ files:
96
127
  - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/common/interaction_verification_group.rb
97
128
  - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/common/subscription_creation.rb
98
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
99
131
  - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/event_notification/empty_content/empty_conformance_test.rb
100
132
  - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/event_notification/empty_content_group.rb
101
133
  - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/event_notification/full_resource_content/full_resource_conformance_test.rb
@@ -116,6 +148,10 @@ files:
116
148
  - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/subscription_rejection/reject_subscription_payload_type_test.rb
117
149
  - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/subscription_rejection/reject_subscription_topic_test.rb
118
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
119
155
  - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server/workflow_group.rb
120
156
  - lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_server_suite.rb
121
157
  - lib/subscriptions_test_kit/tags.rb