Class: Pact::MockService::RequestHandlers::InteractionPost

Inherits:
BaseAdministrationRequestHandler show all
Defined in:
lib/pact/mock_service/request_handlers/interaction_post.rb

Constant Summary

Constants inherited from BaseRequestHandler

BaseRequestHandler::NOT_FOUND_RESPONSE

Constants included from Consumer::RackRequestHelper

Consumer::RackRequestHelper::REQUEST_KEYS

Instance Attribute Summary

Attributes inherited from BaseAdministrationRequestHandler

#logger, #name

Instance Method Summary collapse

Methods inherited from BaseAdministrationRequestHandler

#has_mock_service_header?, #match?, #method_matches?, #path_matches?

Methods inherited from BaseRequestHandler

#call, #match?

Methods included from Consumer::RackRequestHelper

#params_hash, #request_as_hash_from

Constructor Details

#initialize(name, logger, session) ⇒ InteractionPost

Returns a new instance of InteractionPost.



9
10
11
12
# File 'lib/pact/mock_service/request_handlers/interaction_post.rb', line 9

def initialize name, logger, session
  super name, logger
  @session = session
end

Instance Method Details

#request_methodObject



18
19
20
# File 'lib/pact/mock_service/request_handlers/interaction_post.rb', line 18

def request_method
  'POST'
end

#request_pathObject



14
15
16
# File 'lib/pact/mock_service/request_handlers/interaction_post.rb', line 14

def request_path
  '/interactions'
end

#respond(env) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/pact/mock_service/request_handlers/interaction_post.rb', line 22

def respond env
  request_body = env['rack.input'].string
  interaction = Interaction.from_hash(JSON.load(request_body)) # Load creates the Pact::XXX classes

  begin
    session.add_expected_interaction interaction
    [200, {}, ['Set interactions']]
  rescue AlmostDuplicateInteractionError => e
    [500, {}, [e.message]]
  end

end