Module: Inferno::DSL::Assertions
- Included in:
- Entities::TestGroup, Entities::TestSuite
- Defined in:
- lib/inferno/dsl/assertions.rb
Overview
This module contains the assertions used within tests to verify the
behavior of the systems under test. Failing an assertion causes a test to
immediately stop execution and receive a fail
result. Additional
assertions added to this module will be available in all tests.
Instance Method Summary collapse
-
#assert(test, message = '') ⇒ void
Make an assertion.
-
#assert_resource_type(resource_type, resource: self.resource) ⇒ void
Check a FHIR resource’s type.
-
#assert_response_content_type(type, request: self.request) ⇒ void
Check the Content-Type header of a response.
-
#assert_response_status(status, request: self.request, response: nil) ⇒ void
Check a response’s status.
-
#assert_valid_bundle_entries(bundle: resource, resource_types: {}) ⇒ void
Validate each entry of a Bundle.
-
#assert_valid_http_uri(uri, message = '') ⇒ void
Check for a valid http/https uri.
-
#assert_valid_json(maybe_json_string, message = '') ⇒ void
Check for valid JSON.
-
#assert_valid_resource(resource: self.resource, profile_url: nil, validator: :default) ⇒ void
Validate a FHIR resource.
Instance Method Details
#assert(test, message = '') ⇒ void
This method returns an undefined value.
Make an assertion
16 17 18 |
# File 'lib/inferno/dsl/assertions.rb', line 16 def assert(test, = '') raise Exceptions::AssertionException, unless test end |
#assert_resource_type(resource_type, resource: self.resource) ⇒ void
This method returns an undefined value.
Check a FHIR resource’s type
52 53 54 55 56 57 |
# File 'lib/inferno/dsl/assertions.rb', line 52 def assert_resource_type(resource_type, resource: self.resource) resource_type_name = normalize_resource_type(resource_type) assert resource&.resourceType == resource_type_name, (resource_type_name, resource&.resourceType) end |
#assert_response_content_type(type, request: self.request) ⇒ void
This method returns an undefined value.
Check the Content-Type header of a response. This assertion will fail if the response’s content type does not begin with the provided type.
184 185 186 187 188 189 |
# File 'lib/inferno/dsl/assertions.rb', line 184 def assert_response_content_type(type, request: self.request) header = request.response_header('Content-Type') assert header.present?, assert header.value.start_with?(type), (type, header.value) end |
#assert_response_status(status, request: self.request, response: nil) ⇒ void
This method returns an undefined value.
Check a response’s status
32 33 34 35 |
# File 'lib/inferno/dsl/assertions.rb', line 32 def assert_response_status(status, request: self.request, response: nil) response ||= request&.response assert Array.wrap(status).include?(response[:status]), (status, response[:status]) end |
#assert_valid_bundle_entries(bundle: resource, resource_types: {}) ⇒ void
This method returns an undefined value.
Validate each entry of a Bundle
[String,Symbol,FHIR::Model,Array<String,Symbol,FHIR::Model>,Hash] If a string, symbol, or FHIR::Model is provided, only that resource type will be validated. If an array of strings is provided, only those resource types will be validated. If a hash is provided with resource types as keys and profile urls (or nil) as values, only those resource types will be validated against the provided profile url or the base resource if nil.
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'lib/inferno/dsl/assertions.rb', line 106 def assert_valid_bundle_entries(bundle: resource, resource_types: {}) assert_resource_type('Bundle', resource: bundle) types_to_check = normalize_types_to_check(resource_types) invalid_resources = bundle .entry .map(&:resource) .select { |resource| types_to_check.empty? || types_to_check.include?(resource.resourceType) } .reject do |resource| validation_params = { resource: } profile = types_to_check[resource.resourceType] validation_params[:profile_url] = profile if profile resource_is_valid?(**validation_params) end assert invalid_resources.empty?, (invalid_resources) end |
#assert_valid_http_uri(uri, message = '') ⇒ void
This method returns an undefined value.
Check for a valid http/https uri
173 174 175 176 |
# File 'lib/inferno/dsl/assertions.rb', line 173 def assert_valid_http_uri(uri, = '') = .presence || "\"#{uri}\" is not a valid URI" assert uri =~ /\A#{URI::DEFAULT_PARSER.make_regexp(['http', 'https'])}\z/, end |
#assert_valid_json(maybe_json_string, message = '') ⇒ void
This method returns an undefined value.
Check for valid JSON
162 163 164 165 166 |
# File 'lib/inferno/dsl/assertions.rb', line 162 def assert_valid_json(maybe_json_string, = '') assert JSON.parse(maybe_json_string) rescue JSON::ParserError assert false, "Invalid JSON. #{}" end |
#assert_valid_resource(resource: self.resource, profile_url: nil, validator: :default) ⇒ void
This method returns an undefined value.
Validate a FHIR resource
73 74 75 76 |
# File 'lib/inferno/dsl/assertions.rb', line 73 def assert_valid_resource(resource: self.resource, profile_url: nil, validator: :default) assert resource_is_valid?(resource:, profile_url:, validator:), (resource, profile_url) end |