wiremock_mapper 2.0.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b2bf65eb2e07bb9e11aee464ee86bce1f5925340
4
- data.tar.gz: 5ba280cf3880ef46e422bf88c4a19d2bbd00b3e6
3
+ metadata.gz: 86a2777faadebed7a325fa8e2511073cffa866f6
4
+ data.tar.gz: 5591b069dac9203f4389ae0aeaaf351b734c6bad
5
5
  SHA512:
6
- metadata.gz: 8a6ea8b268363f0d39d3c7754d056704e1e321acd6bee6bc6d7abe8b9292fb39cf9b47f7ad72126c1eed0eea779586af0783f6378600c5990854247378edc7e8
7
- data.tar.gz: cd46bc4f5cc386d0f3803ed1f2a34fee10da58518090046dfd39be0e8723a71e4f1a26d2c1f768880e77e90010fee5f6879954d15ec3d0621e718d60955006eb
6
+ metadata.gz: 0233ebdf76153f89d662d7582ed2987210e7b0c08a81defeca637b6ec458ee352bef37cd7dbde02ff8b350d537988eae935bcdc6f765cf9be30b64aee7e5311c
7
+ data.tar.gz: 15494092a60bd952b260a44f3d81b28783557cde98673abe49efd2e439f9ecdaf2b66629b6f41ede32e858b70243221bf658f14a18265e7a187e7603bed33776
@@ -1,3 +1,5 @@
1
+ require_relative 'helpers'
2
+
1
3
  module WireMockMapper
2
4
  module Builders
3
5
  class MatchBuilder
@@ -1,3 +1,5 @@
1
+ require_relative 'helpers'
2
+
1
3
  module WireMockMapper
2
4
  module Builders
3
5
  class UrlMatchBuilder
data/lib/configuration.rb CHANGED
@@ -18,6 +18,12 @@ module WireMockMapper
18
18
  yield @request_builder, @response_builder, @scenario_builder
19
19
  end
20
20
 
21
+ def reset_global_mappings
22
+ @request_builder = Builders::RequestBuilder.new
23
+ @response_builder = Builders::ResponseBuilder.new
24
+ @scenario_builder = Builders::ScenarioBuilder.new
25
+ end
26
+
21
27
  # Set the WireMock url
22
28
  # @param url [String] the url of the WireMock server
23
29
  def set_wiremock_url(url)
@@ -3,7 +3,11 @@ require_relative 'configuration'
3
3
 
4
4
  module WireMockMapper
5
5
  class << self
6
- def create_mapping(url = Configuration.wiremock_url)
6
+ def create_mapping(url = Configuration.wiremock_url, &block)
7
+ create_mapping_with_priority(nil, url, &block)
8
+ end
9
+
10
+ def create_mapping_with_priority(priority = nil, url = Configuration.wiremock_url)
7
11
  request_builder = deep_clone(Configuration.request_builder)
8
12
  response_builder = deep_clone(Configuration.response_builder)
9
13
  scenario_builder = deep_clone(Configuration.scenario_builder)
@@ -11,6 +15,8 @@ module WireMockMapper
11
15
  yield request_builder, response_builder, scenario_builder
12
16
 
13
17
  body = { request: request_builder, response: response_builder }.merge(scenario_builder)
18
+ body[:priority] = priority if priority
19
+
14
20
  response = send_to_wiremock(url, body)
15
21
 
16
22
  JSON.parse(response.body).fetch('id')
@@ -1,6 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe WireMockMapper do
4
+ before(:each) do
5
+ WireMockMapper::Configuration.reset_global_mappings
6
+ end
7
+
4
8
  describe 'create_mapping' do
5
9
  it 'posts the correct json to the wiremock url' do
6
10
  url = 'http://nowhere.com'
@@ -58,6 +62,64 @@ describe WireMockMapper do
58
62
  end
59
63
  end
60
64
 
65
+ describe 'create_mapping_with_priority' do
66
+ it 'posts the correct json to the wiremock url' do
67
+ url = 'http://nowhere.com'
68
+ expected_request_body = { request: { 'method' => 'POST',
69
+ 'urlPath' => '/some/path',
70
+ 'headers' => { 'some_header' => { 'equalTo' => 'some header value' } },
71
+ 'bodyPatterns' => [
72
+ { 'matches' => 'some request body' }
73
+ ] },
74
+ response: { 'body' => 'some response body' },
75
+ priority: 2 }
76
+
77
+ stub = stub_request(:post, "#{url}/__admin/mappings").with(body: expected_request_body)
78
+ .to_return(body: { id: 'whatevs' }.to_json)
79
+
80
+ WireMockMapper.create_mapping_with_priority(2, url) do |request, respond|
81
+ request.is_a_post
82
+ .with_url_path.equal_to('/some/path')
83
+ .with_header('some_header').equal_to('some header value')
84
+ .with_body.matching('some request body')
85
+
86
+ respond.with_body('some response body')
87
+ end
88
+
89
+ expect(stub).to have_been_requested
90
+ end
91
+
92
+ it 'posts the correct json with configured global mappings to the wiremock url' do
93
+ url = 'http://nowhere.com'
94
+ expected_request_body = { request: { 'method' => 'POST',
95
+ 'url' => '/some/url',
96
+ 'headers' => { 'some_global_header' => { 'equalTo' => 'global value' },
97
+ 'some_header' => { 'equalTo' => 'some header value' } },
98
+ 'bodyPatterns' => [
99
+ { 'matches' => 'some request body' }
100
+ ] },
101
+ response: { 'body' => 'some response body' },
102
+ priority: 1 }
103
+
104
+ stub = stub_request(:post, "#{url}/__admin/mappings").with(body: expected_request_body)
105
+ .to_return(body: { id: 'whatevs' }.to_json)
106
+
107
+ WireMockMapper::Configuration.create_global_mapping do |request|
108
+ request.with_header('some_global_header').equal_to('global value')
109
+ end
110
+
111
+ WireMockMapper.create_mapping_with_priority(1, url) do |request, respond|
112
+ request.is_a_post
113
+ .with_url.equal_to('/some/url')
114
+ .with_header('some_header').equal_to('some header value')
115
+ .with_body.matching('some request body')
116
+ respond.with_body('some response body')
117
+ end
118
+
119
+ expect(stub).to have_been_requested
120
+ end
121
+ end
122
+
61
123
  describe 'delete_mapping' do
62
124
  it 'issues a DELETE for the supplied mapping id' do
63
125
  mapping_id = 'james-james-james'
@@ -2,7 +2,7 @@ $LOAD_PATH.unshift(File.expand_path('../lib', __FILE__))
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = 'wiremock_mapper'
5
- spec.version = '2.0.0'
5
+ spec.version = '2.1.0'
6
6
  spec.platform = Gem::Platform::RUBY
7
7
  spec.required_ruby_version = '>= 2.0.0'
8
8
  spec.authors = ['Isaac Datlof']
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wiremock_mapper
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Isaac Datlof
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-19 00:00:00.000000000 Z
11
+ date: 2018-09-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: codeclimate-test-reporter