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