Sha256: 8186c4788845c8b0da3e02b3d1351b86271fe84d1ce62031aa8a9771075a4c1e

Contents?: true

Size: 1.94 KB

Versions: 4

Compression:

Stored size: 1.94 KB

Contents

require_relative '../mock_service_response'
require_relative '../tags'
module DaVinciCRDTestKit
  class HookRequestEndpoint < Inferno::DSL::SuiteEndpoint
    include DaVinciCRDTestKit::MockServiceResponse

    def selected_response_types
      @selected_response_types ||=
        JSON.parse(result.input_json)
          .find { |input| input['name'].include?('selected_response_types') }
          &.dig('value')
    end

    def custom_response
      @custom_response ||=
        JSON.parse(result.input_json)
          .find { |input| input['name'].include?('custom_response') }
          &.dig('value')
    end

    def test_run_identifier
      "#{hook_name} #{iss}"
    end

    def hook_name
      @hook_name ||= request.params[:hook]
    end

    def iss
      @iss ||=
        begin
          payload, = JWT.decode(token, nil, false)
          payload['iss']
        rescue JWT::DecodeError
          nil
        end
    end

    def token
      @token ||= request.headers['authorization']&.delete_prefix('Bearer ')
    end

    def make_response
      case hook_name
      when 'appointment-book', 'encounter-start', 'encounter-discharge', 'order-select', 'order-sign', 'order-dispatch'
        hook_response
      else
        response.status = 400
        response.body = 'Invalid Request: Request did not contain a valid hook in the `hook` field.'
      end
    end

    def tags
      case hook_name
      when 'appointment-book'
        [APPOINTMENT_BOOK_TAG]
      when 'encounter-start'
        [ENCOUNTER_START_TAG]
      when 'encounter-discharge'
        [ENCOUNTER_DISCHARGE_TAG]
      when 'order-select'
        [ORDER_SELECT_TAG]
      when 'order-sign'
        [ORDER_SIGN_TAG]
      when 'order-dispatch'
        [ORDER_DISPATCH_TAG]
      else
        response.status = 400
        response.body = 'Invalid Request: Request did not contain a valid hook in the `hook` field.'
      end
    end

    def name
      hook_name.gsub('-', '_')
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
davinci_crd_test_kit-0.11.0 lib/davinci_crd_test_kit/routes/hook_request_endpoint.rb
davinci_crd_test_kit-0.10.0 lib/davinci_crd_test_kit/routes/hook_request_endpoint.rb
davinci_crd_test_kit-0.9.1 lib/davinci_crd_test_kit/routes/hook_request_endpoint.rb
davinci_crd_test_kit-0.9.1.rc lib/davinci_crd_test_kit/routes/hook_request_endpoint.rb