Class: Pact::Consumer::PactPost

Inherits:
MockServiceAdministrationEndpoint show all
Defined in:
lib/pact/consumer/mock_service/pact_post.rb

Constant Summary

Constants included from RackRequestHelper

RackRequestHelper::REQUEST_KEYS

Instance Attribute Summary collapse

Attributes inherited from MockServiceAdministrationEndpoint

#logger, #name

Instance Method Summary collapse

Methods inherited from MockServiceAdministrationEndpoint

#match?

Methods included from RackRequestHelper

#params_hash, #request_as_hash_from

Constructor Details

#initialize(name, logger, interactions) ⇒ PactPost



10
11
12
13
# File 'lib/pact/consumer/mock_service/pact_post.rb', line 10

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

Instance Attribute Details

#consumer_contractObject

Returns the value of attribute consumer_contract.



8
9
10
# File 'lib/pact/consumer/mock_service/pact_post.rb', line 8

def consumer_contract
  @consumer_contract
end

#interactionsObject

Returns the value of attribute interactions.



8
9
10
# File 'lib/pact/consumer/mock_service/pact_post.rb', line 8

def interactions
  @interactions
end

Instance Method Details

#request_methodObject



19
20
21
# File 'lib/pact/consumer/mock_service/pact_post.rb', line 19

def request_method
  'POST'
end

#request_pathObject



15
16
17
# File 'lib/pact/consumer/mock_service/pact_post.rb', line 15

def request_path
  '/pact'
end

#respond(env) ⇒ Object



23
24
25
26
27
28
29
30
# File 'lib/pact/consumer/mock_service/pact_post.rb', line 23

def respond env
  consumer_contract_details = JSON.parse(env['rack.input'].string, symbolize_names: true)
  logger.info "Writing pact with details #{consumer_contract_details}"
  consumer_contract_writer = ConsumerContractWriter.new(consumer_contract_details.merge(interactions: interactions), logger)
  json = consumer_contract_writer.write

  [200, {'Content-Type' =>'application/json'}, [json]]
end