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 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
@@ -1,6 +1,14 @@
1
1
  Metrics/LineLength:
2
2
  Max: 120
3
3
 
4
+ Metrics/ModuleLength:
5
+ Exclude:
6
+ - "**/*_spec.rb"
7
+
8
+ Metrics/BlockLength:
9
+ Exclude:
10
+ - "**/*_spec.rb"
11
+
4
12
  Style/AccessorMethodName:
5
13
  Enabled: false
6
14
 
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 1.9.3-p484
1
+ 2.4.0
data/.travis.yml CHANGED
@@ -2,7 +2,6 @@ language: ruby
2
2
  script: 'bundle exec rake; bundle exec codeclimate-test-reporter'
3
3
  cache: bundler
4
4
  rvm:
5
- - 1.9.3
6
5
  - 2.0.0
7
6
  - 2.3.0
8
7
  - ruby-head
@@ -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(ANY DELETE GET HEAD OPTIONS POST PUT TRACE).freeze
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
@@ -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
@@ -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 = '1.1.0'
5
+ spec.version = '2.0.0'
6
6
  spec.platform = Gem::Platform::RUBY
7
- spec.required_ruby_version = '>= 1.9.3'
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', '1.8.3'
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', '0.41.2'
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', '1.4.6'
31
- spec.add_development_dependency 'webmock', '2.2.0'
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: 1.1.0
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-06-12 00:00:00.000000000 Z
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: 1.8.3
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: 1.8.3
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.41.2
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.41.2
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: 1.4.6
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: 1.4.6
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: 2.2.0
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: 2.2.0
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: 1.9.3
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: 1.8.23
192
+ rubygems_version: 2.6.8
211
193
  signing_key:
212
- specification_version: 3
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