Class: SubscriptionsTestKit::SubscriptionsR5BackportR4Client::InteractionTest

Inherits:
Inferno::Test
  • Object
show all
Includes:
URLs
Defined in:
lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/workflow/interaction_test.rb

Instance Method Summary collapse

Methods included from URLs

#client_suite_base_url, #client_suite_id, #fhir_subscription_url, #resume_fail_url_client, #resume_fail_url_server, #resume_pass_url_client, #resume_pass_url_server, #server_suite_base_url, #server_suite_id, #subscription_channel_url

Instance Method Details

#minimally_validate_notification(notification_bundle) ⇒ Object

Perform only the verification necessary for the Inferno test to function



117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# File 'lib/subscriptions_test_kit/suites/subscriptions_r5_backport_r4_client/workflow/interaction_test.rb', line 117

def minimally_validate_notification(notification_bundle)
  assert_valid_json(notification_bundle)
  begin
    bundle = FHIR.from_contents(notification_bundle)
  rescue StandardError
    assert(false, 'Notification bundle input is not a conformant FHIR Bundle')
  end
  assert_resource_type(:bundle, resource: bundle)
  subscription_status = bundle.entry&.first&.resource
  assert(subscription_status.present?, 'Notification bundle input must contain a subscription status entry')
  assert_resource_type(:parameters, resource: subscription_status)

  # Require the subscription param, just because we need something to later identify the subscription status
  # bundle entry. Note we could just as easily use a different required param, like status or type.
  subscription_param = subscription_status.parameter&.find { |p| p.name == 'subscription' }
  assert(subscription_param.present?, 'Subscription status entry in notification bundle input must contain a' \
                                      'subscription parameter')
rescue Inferno::Exceptions::AssertionException => e
  add_message('error', e.message)
end