wiremock_mapper 1.1.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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