wiremock_mapper 1.1.0 → 2.0.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 +7 -0
- data/.rubocop.yml +8 -0
- data/.ruby-version +1 -1
- data/.travis.yml +0 -1
- data/lib/builders/request_builder.rb +1 -1
- data/lib/builders/scenario_builder.rb +35 -0
- data/lib/configuration.rb +4 -2
- data/lib/wiremock_mapper.rb +17 -2
- data/spec/scenario_builder_spec.rb +29 -0
- data/wiremock_mapper.gemspec +6 -6
- metadata +41 -58
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b2bf65eb2e07bb9e11aee464ee86bce1f5925340
|
4
|
+
data.tar.gz: 5ba280cf3880ef46e422bf88c4a19d2bbd00b3e6
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 8a6ea8b268363f0d39d3c7754d056704e1e321acd6bee6bc6d7abe8b9292fb39cf9b47f7ad72126c1eed0eea779586af0783f6378600c5990854247378edc7e8
|
7
|
+
data.tar.gz: cd46bc4f5cc386d0f3803ed1f2a34fee10da58518090046dfd39be0e8723a71e4f1a26d2c1f768880e77e90010fee5f6879954d15ec3d0621e718d60955006eb
|
data/.rubocop.yml
CHANGED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
2.4.0
|
data/.travis.yml
CHANGED
@@ -47,7 +47,7 @@ module WireMockMapper
|
|
47
47
|
# @!method is_a_trace
|
48
48
|
# Sets the request HTTP method to TRACE
|
49
49
|
# @return [RequestBuilder] request builder for chaining
|
50
|
-
HTTP_VERBS = %w
|
50
|
+
HTTP_VERBS = %w[ANY DELETE GET HEAD OPTIONS POST PUT TRACE].freeze
|
51
51
|
private_constant :HTTP_VERBS
|
52
52
|
|
53
53
|
HTTP_VERBS.each do |verb|
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module WireMockMapper
|
2
|
+
module Builders
|
3
|
+
class ScenarioBuilder
|
4
|
+
# Scenarios allow for stateful behavior
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
@options = {}
|
8
|
+
end
|
9
|
+
|
10
|
+
def in_scenario(scenario)
|
11
|
+
@options[:scenarioName] = scenario
|
12
|
+
self
|
13
|
+
end
|
14
|
+
|
15
|
+
def with_state(state)
|
16
|
+
@options[:requiredScenarioState] = state
|
17
|
+
self
|
18
|
+
end
|
19
|
+
|
20
|
+
def will_set_state(state)
|
21
|
+
@options[:newScenarioState] = state
|
22
|
+
self
|
23
|
+
end
|
24
|
+
|
25
|
+
def to_hash(*)
|
26
|
+
options_with_url_match = @options.merge(@url_match.to_hash) if @url_match
|
27
|
+
options_with_url_match || @options
|
28
|
+
end
|
29
|
+
|
30
|
+
def to_json(*)
|
31
|
+
to_hash.to_json
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/configuration.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require_relative 'builders/request_builder'
|
2
2
|
require_relative 'builders/response_builder'
|
3
|
+
require_relative 'builders/scenario_builder'
|
3
4
|
|
4
5
|
module WireMockMapper
|
5
6
|
class Configuration
|
@@ -7,13 +8,14 @@ module WireMockMapper
|
|
7
8
|
|
8
9
|
@request_builder = Builders::RequestBuilder.new
|
9
10
|
@response_builder = Builders::ResponseBuilder.new
|
11
|
+
@scenario_builder = Builders::ScenarioBuilder.new
|
10
12
|
|
11
13
|
class << self
|
12
|
-
attr_reader :request_builder, :response_builder, :wiremock_url
|
14
|
+
attr_reader :request_builder, :response_builder, :wiremock_url, :scenario_builder
|
13
15
|
|
14
16
|
# Add mappings to include for all future mappings
|
15
17
|
def create_global_mapping
|
16
|
-
yield @request_builder, @response_builder
|
18
|
+
yield @request_builder, @response_builder, @scenario_builder
|
17
19
|
end
|
18
20
|
|
19
21
|
# Set the WireMock url
|
data/lib/wiremock_mapper.rb
CHANGED
@@ -6,10 +6,13 @@ module WireMockMapper
|
|
6
6
|
def create_mapping(url = Configuration.wiremock_url)
|
7
7
|
request_builder = deep_clone(Configuration.request_builder)
|
8
8
|
response_builder = deep_clone(Configuration.response_builder)
|
9
|
+
scenario_builder = deep_clone(Configuration.scenario_builder)
|
9
10
|
|
10
|
-
yield request_builder, response_builder
|
11
|
+
yield request_builder, response_builder, scenario_builder
|
12
|
+
|
13
|
+
body = { request: request_builder, response: response_builder }.merge(scenario_builder)
|
14
|
+
response = send_to_wiremock(url, body)
|
11
15
|
|
12
|
-
response = send_to_wiremock(url, request: request_builder, response: response_builder)
|
13
16
|
JSON.parse(response.body).fetch('id')
|
14
17
|
end
|
15
18
|
|
@@ -21,10 +24,15 @@ module WireMockMapper
|
|
21
24
|
clear_wiremock_mappings(url)
|
22
25
|
end
|
23
26
|
|
27
|
+
def reset_scenarios(url = Configuration.wiremock_url)
|
28
|
+
reset_wiremock_scenarios(url)
|
29
|
+
end
|
30
|
+
|
24
31
|
private
|
25
32
|
|
26
33
|
WIREMOCK_MAPPINGS_PATH = '__admin/mappings'.freeze
|
27
34
|
WIREMOCK_CLEAR_MAPPINGS_PATH = "#{WIREMOCK_MAPPINGS_PATH}/reset".freeze
|
35
|
+
WIREMOCK_RESET_SCENARIOS_PATH = '__admin/scenarios/reset'.freeze
|
28
36
|
|
29
37
|
def deep_clone(object)
|
30
38
|
Marshal.load(Marshal.dump(object))
|
@@ -51,5 +59,12 @@ module WireMockMapper
|
|
51
59
|
request.body = body.to_json
|
52
60
|
http.request(request)
|
53
61
|
end
|
62
|
+
|
63
|
+
def reset_wiremock_scenarios(url)
|
64
|
+
uri = URI([url, WIREMOCK_RESET_SCENARIOS_PATH].join('/'))
|
65
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
66
|
+
request = Net::HTTP::Post.new(uri.path)
|
67
|
+
http.request(request)
|
68
|
+
end
|
54
69
|
end
|
55
70
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe WireMockMapper::Builders::ScenarioBuilder do
|
4
|
+
let(:builder) { WireMockMapper::Builders::ScenarioBuilder.new }
|
5
|
+
|
6
|
+
describe 'in_scenario' do
|
7
|
+
it 'sets the scenario name' do
|
8
|
+
builder.in_scenario('some scenario')
|
9
|
+
result = builder.to_hash
|
10
|
+
expect(result[:scenarioName]).to eq('some scenario')
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe 'with_state' do
|
15
|
+
it 'sets the required state of the request' do
|
16
|
+
builder.with_state('initial state')
|
17
|
+
result = builder.to_hash
|
18
|
+
expect(result[:requiredScenarioState]).to eq('initial state')
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe 'will_set_state' do
|
23
|
+
it 'sets the state value to be toggled to' do
|
24
|
+
builder.will_set_state('updated state')
|
25
|
+
result = builder.to_hash
|
26
|
+
expect(result[:newScenarioState]).to eq('updated state')
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/wiremock_mapper.gemspec
CHANGED
@@ -2,9 +2,9 @@ $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 = '
|
5
|
+
spec.version = '2.0.0'
|
6
6
|
spec.platform = Gem::Platform::RUBY
|
7
|
-
spec.required_ruby_version = '>=
|
7
|
+
spec.required_ruby_version = '>= 2.0.0'
|
8
8
|
spec.authors = ['Isaac Datlof']
|
9
9
|
spec.email = 'ike18t@gmail.com'
|
10
10
|
|
@@ -20,13 +20,13 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.require_paths = ['lib']
|
21
21
|
|
22
22
|
spec.add_development_dependency 'codeclimate-test-reporter'
|
23
|
-
spec.add_development_dependency 'json'
|
23
|
+
spec.add_development_dependency 'json'
|
24
24
|
spec.add_development_dependency 'pry'
|
25
25
|
spec.add_development_dependency 'rake'
|
26
26
|
spec.add_development_dependency 'require_all'
|
27
27
|
spec.add_development_dependency 'rspec'
|
28
|
-
spec.add_development_dependency 'rubocop'
|
28
|
+
spec.add_development_dependency 'rubocop'
|
29
29
|
# public_suffix needed to be included and locked down due to webmock
|
30
|
-
spec.add_development_dependency 'public_suffix'
|
31
|
-
spec.add_development_dependency 'webmock'
|
30
|
+
spec.add_development_dependency 'public_suffix'
|
31
|
+
spec.add_development_dependency 'webmock'
|
32
32
|
end
|
metadata
CHANGED
@@ -1,160 +1,141 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wiremock_mapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
5
|
-
prerelease:
|
4
|
+
version: 2.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Isaac Datlof
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2017-
|
11
|
+
date: 2017-10-19 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: codeclimate-test-reporter
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: json
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
|
-
version:
|
33
|
+
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ">="
|
44
39
|
- !ruby/object:Gem::Version
|
45
|
-
version:
|
40
|
+
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: pry
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - ">="
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: rake
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - ">="
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - ">="
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: require_all
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - ">="
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - ">="
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: rspec
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - ">="
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '0'
|
102
90
|
type: :development
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - ">="
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: '0'
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: rubocop
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
|
-
- -
|
101
|
+
- - ">="
|
116
102
|
- !ruby/object:Gem::Version
|
117
|
-
version: 0
|
103
|
+
version: '0'
|
118
104
|
type: :development
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
|
-
- -
|
108
|
+
- - ">="
|
124
109
|
- !ruby/object:Gem::Version
|
125
|
-
version: 0
|
110
|
+
version: '0'
|
126
111
|
- !ruby/object:Gem::Dependency
|
127
112
|
name: public_suffix
|
128
113
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
114
|
requirements:
|
131
|
-
- -
|
115
|
+
- - ">="
|
132
116
|
- !ruby/object:Gem::Version
|
133
|
-
version:
|
117
|
+
version: '0'
|
134
118
|
type: :development
|
135
119
|
prerelease: false
|
136
120
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
121
|
requirements:
|
139
|
-
- -
|
122
|
+
- - ">="
|
140
123
|
- !ruby/object:Gem::Version
|
141
|
-
version:
|
124
|
+
version: '0'
|
142
125
|
- !ruby/object:Gem::Dependency
|
143
126
|
name: webmock
|
144
127
|
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
128
|
requirements:
|
147
|
-
- -
|
129
|
+
- - ">="
|
148
130
|
- !ruby/object:Gem::Version
|
149
|
-
version:
|
131
|
+
version: '0'
|
150
132
|
type: :development
|
151
133
|
prerelease: false
|
152
134
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
135
|
requirements:
|
155
|
-
- -
|
136
|
+
- - ">="
|
156
137
|
- !ruby/object:Gem::Version
|
157
|
-
version:
|
138
|
+
version: '0'
|
158
139
|
description: Ruby DSL for setting up WireMock mappings
|
159
140
|
email: ike18t@gmail.com
|
160
141
|
executables: []
|
@@ -163,10 +144,10 @@ extra_rdoc_files:
|
|
163
144
|
- LICENSE.txt
|
164
145
|
- README.md
|
165
146
|
files:
|
166
|
-
- .gitignore
|
167
|
-
- .rubocop.yml
|
168
|
-
- .ruby-version
|
169
|
-
- .travis.yml
|
147
|
+
- ".gitignore"
|
148
|
+
- ".rubocop.yml"
|
149
|
+
- ".ruby-version"
|
150
|
+
- ".travis.yml"
|
170
151
|
- Gemfile
|
171
152
|
- LICENSE.txt
|
172
153
|
- README.md
|
@@ -175,6 +156,7 @@ files:
|
|
175
156
|
- lib/builders/match_builder.rb
|
176
157
|
- lib/builders/request_builder.rb
|
177
158
|
- lib/builders/response_builder.rb
|
159
|
+
- lib/builders/scenario_builder.rb
|
178
160
|
- lib/builders/url_match_builder.rb
|
179
161
|
- lib/configuration.rb
|
180
162
|
- lib/wiremock_mapper.rb
|
@@ -182,6 +164,7 @@ files:
|
|
182
164
|
- spec/match_builder_spec.rb
|
183
165
|
- spec/request_builder_spec.rb
|
184
166
|
- spec/response_builder_spec.rb
|
167
|
+
- spec/scenario_builder_spec.rb
|
185
168
|
- spec/spec_helper.rb
|
186
169
|
- spec/url_match_builder_spec.rb
|
187
170
|
- spec/wiremock_mapper_spec.rb
|
@@ -189,33 +172,33 @@ files:
|
|
189
172
|
homepage: http://github.com/ike18t/wiremock_mapper
|
190
173
|
licenses:
|
191
174
|
- MIT
|
175
|
+
metadata: {}
|
192
176
|
post_install_message:
|
193
177
|
rdoc_options: []
|
194
178
|
require_paths:
|
195
179
|
- lib
|
196
180
|
required_ruby_version: !ruby/object:Gem::Requirement
|
197
|
-
none: false
|
198
181
|
requirements:
|
199
|
-
- -
|
182
|
+
- - ">="
|
200
183
|
- !ruby/object:Gem::Version
|
201
|
-
version:
|
184
|
+
version: 2.0.0
|
202
185
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
203
|
-
none: false
|
204
186
|
requirements:
|
205
|
-
- -
|
187
|
+
- - ">="
|
206
188
|
- !ruby/object:Gem::Version
|
207
189
|
version: '0'
|
208
190
|
requirements: []
|
209
191
|
rubyforge_project:
|
210
|
-
rubygems_version:
|
192
|
+
rubygems_version: 2.6.8
|
211
193
|
signing_key:
|
212
|
-
specification_version:
|
194
|
+
specification_version: 4
|
213
195
|
summary: Ruby DSL for setting up WireMock mappings
|
214
196
|
test_files:
|
215
197
|
- spec/configuration_spec.rb
|
216
198
|
- spec/match_builder_spec.rb
|
217
199
|
- spec/request_builder_spec.rb
|
218
200
|
- spec/response_builder_spec.rb
|
201
|
+
- spec/scenario_builder_spec.rb
|
219
202
|
- spec/spec_helper.rb
|
220
203
|
- spec/url_match_builder_spec.rb
|
221
204
|
- spec/wiremock_mapper_spec.rb
|