Skip to content
This repository has been archived by the owner on Dec 5, 2019. It is now read-only.

Commit

Permalink
Expand URI templates when generating requests
Browse files Browse the repository at this point in the history
  • Loading branch information
maxlinc committed Jul 18, 2014
1 parent 55a2551 commit e48397c
Showing 1 changed file with 14 additions and 1 deletion.
15 changes: 14 additions & 1 deletion lib/pacto/actors/from_examples.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ def build_request(contract, values = {})
if contract.examples?
example = @selector.select(contract.examples, values)
data = contract.request.to_hash
data['uri'] = contract.request.uri
data['uri'] = build_uri(contract, values)
data['body'] = example.request.body
data['method'] = contract.request.http_method
Pacto::PactoRequest.new(data)
Expand All @@ -49,6 +49,19 @@ def build_response(contract, values = {})
@fallback_actor.build_response contract, values
end
end

def build_uri(contract, values)
values ||= {}
uri_template = Addressable::Template.new(contract.request.uri)
if contract.examples && contract.examples.values.first[:request][:uri]
example_uri = contract.examples.values.first[:request][:uri]
example_values = uri_template.extract example_uri
values = example_values.merge values
end
missing_keys = uri_template.keys - values.keys
logger.warn "Missing keys for building a complete URL: #{missing_keys.inspect}" unless missing_keys.empty?
uri_template.expand values
end
end
end
end

0 comments on commit e48397c

Please sign in to comment.