wiremock_mapper 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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