mirage 3.0.0.alpha.10 → 3.0.0.alpha.11
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/mirage.gemspec +3 -3
- data/server/mock_response.rb +3 -1
- data/spec/server/mock_response_spec.rb +155 -127
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.0.0.alpha.
|
1
|
+
3.0.0.alpha.11
|
data/mirage.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "mirage"
|
8
|
-
s.version = "3.0.0.alpha.
|
8
|
+
s.version = "3.0.0.alpha.11"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Leon Davis"]
|
12
|
-
s.date = "2013-05-
|
12
|
+
s.date = "2013-05-07"
|
13
13
|
s.description = "Mirage aids testing of your applications by hosting mock responses so that your applications do not have to talk to real endpoints. Its accessible via HTTP and has a RESTful interface."
|
14
14
|
s.executables = ["mirage"]
|
15
15
|
s.extra_rdoc_files = [
|
@@ -108,7 +108,7 @@ Gem::Specification.new do |s|
|
|
108
108
|
s.licenses = ["MIT"]
|
109
109
|
s.post_install_message = "\n===============================================================================\nThanks you for installing mirage. \n\nRun Mirage with:\n\nmirage start \n\nFor more information go to: https://github.com/lashd/mirage/wiki\n===============================================================================\n"
|
110
110
|
s.require_paths = ["lib"]
|
111
|
-
s.rubygems_version = "1.8.
|
111
|
+
s.rubygems_version = "1.8.25"
|
112
112
|
s.summary = "Mirage is a easy mock server for testing your applications"
|
113
113
|
|
114
114
|
if s.respond_to? :specification_version then
|
data/server/mock_response.rb
CHANGED
@@ -169,7 +169,9 @@ module Mirage
|
|
169
169
|
@request_spec = Hashie::Mash.new request_defaults.merge(spec['request']||{})
|
170
170
|
@response_spec = Hashie::Mash.new response_defaults.merge(spec['response']||{})
|
171
171
|
|
172
|
-
@request_spec['headers'] = Hash[@request_spec['headers'].collect{|key, value| [key.downcase, value]}]
|
172
|
+
@request_spec['headers'] = Hash[@request_spec['headers'].collect{|key, value| [key.downcase, value.to_s]}]
|
173
|
+
@request_spec['parameters'] = Hash[@request_spec['parameters'].collect{|key, value| [key, value.to_s]}]
|
174
|
+
@request_spec['body_content'] = @request_spec['body_content'].collect{|value|value.to_s}
|
173
175
|
@binary = BinaryDataChecker.contains_binary_data? @response_spec['body']
|
174
176
|
|
175
177
|
MockResponse.add self
|
@@ -110,7 +110,7 @@ describe Mirage::MockResponse do
|
|
110
110
|
response_spec = convert_keys_to_strings({:request => {:http_method => "post"}})
|
111
111
|
response = MockResponse.new("greeting", response_spec)
|
112
112
|
|
113
|
-
options = {:body => "", :params => {}, :endpoint => "greeting", :http_method => "post"
|
113
|
+
options = {:body => "", :params => {}, :endpoint => "greeting", :http_method => "post", :headers => {}}
|
114
114
|
MockResponse.find(options).should == response
|
115
115
|
options[:http_method] = "get"
|
116
116
|
expect { MockResponse.find(options) }.to raise_error(ServerResponseNotFound)
|
@@ -142,49 +142,15 @@ describe Mirage::MockResponse do
|
|
142
142
|
|
143
143
|
end
|
144
144
|
|
145
|
-
describe
|
146
|
-
it 'should
|
147
|
-
|
148
|
-
|
149
|
-
:request => {
|
150
|
-
:http_method => "get",
|
151
|
-
:parameters => {
|
152
|
-
:firstname => "leon"
|
153
|
-
}
|
154
|
-
},
|
155
|
-
:response => {
|
156
|
-
:body => Base64.encode64("get response")
|
157
|
-
}
|
158
|
-
}
|
159
|
-
)
|
160
|
-
|
161
|
-
post_spec = convert_keys_to_strings(
|
162
|
-
{
|
163
|
-
:request => {
|
164
|
-
:http_method => "post",
|
165
|
-
:parameters => {
|
166
|
-
:firstname => "leon"
|
167
|
-
}
|
168
|
-
},
|
169
|
-
:response => {
|
170
|
-
:body => Base64.encode64("post response")
|
171
|
-
}
|
172
|
-
}
|
173
|
-
)
|
174
|
-
get_response = MockResponse.new("greeting", get_spec)
|
175
|
-
post_response = MockResponse.new("greeting", post_spec)
|
176
|
-
|
177
|
-
options = {:body => "", :params => {"firstname" => "leon"}, :endpoint => "greeting", :http_method => "post",:headers => {}}
|
178
|
-
|
179
|
-
MockResponse.find(options).should == post_response
|
180
|
-
MockResponse.find(options.merge(:http_method => "get")).should == get_response
|
181
|
-
end
|
182
|
-
|
183
|
-
it 'should match request parameter values using regexps' do
|
184
|
-
response_spec = convert_keys_to_strings(
|
145
|
+
describe 'matching' do
|
146
|
+
it 'should convert requirements in to strings before matching' do
|
147
|
+
requirement = 1234
|
148
|
+
spec = convert_keys_to_strings(
|
185
149
|
{
|
186
150
|
:request => {
|
187
|
-
:parameters => {:
|
151
|
+
:parameters => {:number => requirement},
|
152
|
+
:body_content => [requirement],
|
153
|
+
:headers => {:number => requirement}
|
188
154
|
},
|
189
155
|
:response => {
|
190
156
|
:body => 'response'
|
@@ -192,107 +158,169 @@ describe Mirage::MockResponse do
|
|
192
158
|
|
193
159
|
}
|
194
160
|
)
|
195
|
-
response = MockResponse.new("greeting", response_spec)
|
196
161
|
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
162
|
+
MockResponse.new("greeting", spec)
|
163
|
+
options = {:headers => {'number' => '1234'},
|
164
|
+
:params => {'number' => "1234"},
|
165
|
+
:endpoint => "greeting",
|
166
|
+
:http_method => "get",
|
167
|
+
:body => "1234", }
|
203
168
|
|
204
|
-
|
205
|
-
|
206
|
-
required_headers = {
|
207
|
-
'HEADER-1' => 'value1',
|
208
|
-
'HEADER-2' => 'value2'
|
209
|
-
}
|
210
|
-
spec = convert_keys_to_strings(
|
211
|
-
{
|
212
|
-
:request => {
|
213
|
-
:headers => required_headers
|
214
|
-
},
|
215
|
-
:response => {
|
216
|
-
:body => 'response'
|
217
|
-
}
|
218
|
-
|
219
|
-
}
|
220
|
-
)
|
221
|
-
response = MockResponse.new("greeting", spec)
|
169
|
+
expect { MockResponse.find(options) }.to_not raise_error
|
170
|
+
end
|
222
171
|
|
223
|
-
|
224
|
-
|
225
|
-
|
172
|
+
describe "matching on request parameters" do
|
173
|
+
it 'should find the response if all required parameters are present' do
|
174
|
+
get_spec = convert_keys_to_strings(
|
175
|
+
{
|
176
|
+
:request => {
|
177
|
+
:http_method => "get",
|
178
|
+
:parameters => {
|
179
|
+
:firstname => "leon"
|
180
|
+
}
|
181
|
+
},
|
182
|
+
:response => {
|
183
|
+
:body => Base64.encode64("get response")
|
184
|
+
}
|
185
|
+
}
|
186
|
+
)
|
187
|
+
|
188
|
+
post_spec = convert_keys_to_strings(
|
189
|
+
{
|
190
|
+
:request => {
|
191
|
+
:http_method => "post",
|
192
|
+
:parameters => {
|
193
|
+
:firstname => "leon"
|
194
|
+
}
|
195
|
+
},
|
196
|
+
:response => {
|
197
|
+
:body => Base64.encode64("post response")
|
198
|
+
}
|
199
|
+
}
|
200
|
+
)
|
201
|
+
get_response = MockResponse.new("greeting", get_spec)
|
202
|
+
post_response = MockResponse.new("greeting", post_spec)
|
203
|
+
|
204
|
+
options = {:body => "", :params => {"firstname" => "leon"}, :endpoint => "greeting", :http_method => "post", :headers => {}}
|
205
|
+
|
206
|
+
MockResponse.find(options).should == post_response
|
207
|
+
MockResponse.find(options.merge(:http_method => "get")).should == get_response
|
208
|
+
end
|
226
209
|
|
210
|
+
it 'should match request parameter values using regexps' do
|
211
|
+
response_spec = convert_keys_to_strings(
|
212
|
+
{
|
213
|
+
:request => {
|
214
|
+
:parameters => {:firstname => "%r{leon.*}"}
|
215
|
+
},
|
216
|
+
:response => {
|
217
|
+
:body => 'response'
|
218
|
+
}
|
219
|
+
|
220
|
+
}
|
221
|
+
)
|
222
|
+
response = MockResponse.new("greeting", response_spec)
|
223
|
+
|
224
|
+
options = {:body => "", :params => {"firstname" => "leon"}, :endpoint => "greeting", :http_method => "get", :headers => {}}
|
225
|
+
MockResponse.find(options).should == response
|
226
|
+
MockResponse.find(options.merge(:params => {"firstname" => "leonard"})).should == response
|
227
|
+
expect { MockResponse.find(options.merge(:params => {"firstname" => "leo"})) }.to raise_error(ServerResponseNotFound)
|
228
|
+
end
|
227
229
|
end
|
228
230
|
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
231
|
+
describe 'matching against request http_headers' do
|
232
|
+
it 'should match using literals' do
|
233
|
+
required_headers = {
|
234
|
+
'HEADER-1' => 'value1',
|
235
|
+
'HEADER-2' => 'value2'
|
236
|
+
}
|
237
|
+
spec = convert_keys_to_strings(
|
238
|
+
{
|
239
|
+
:request => {
|
240
|
+
:headers => required_headers
|
241
|
+
},
|
242
|
+
:response => {
|
243
|
+
:body => 'response'
|
244
|
+
}
|
245
|
+
|
246
|
+
}
|
247
|
+
)
|
248
|
+
response = MockResponse.new("greeting", spec)
|
249
|
+
|
250
|
+
options = {:body => "<name>leon</name>", :params => {}, :endpoint => "greeting", :http_method => "get", :headers => required_headers}
|
251
|
+
MockResponse.find(options).should == response
|
252
|
+
expect { MockResponse.find(options.merge(:headers => {})) }.to raise_error(ServerResponseNotFound)
|
241
253
|
|
242
|
-
|
243
|
-
)
|
244
|
-
response = MockResponse.new("greeting", spec)
|
254
|
+
end
|
245
255
|
|
246
|
-
|
247
|
-
|
248
|
-
|
256
|
+
it 'should match using regex' do
|
257
|
+
required_headers = {
|
258
|
+
'CONTENT-TYPE' => '%r{.*/json}',
|
259
|
+
}
|
260
|
+
spec = convert_keys_to_strings(
|
261
|
+
{
|
262
|
+
:request => {
|
263
|
+
:headers => required_headers
|
264
|
+
},
|
265
|
+
:response => {
|
266
|
+
:body => 'response'
|
267
|
+
}
|
268
|
+
|
269
|
+
}
|
270
|
+
)
|
271
|
+
response = MockResponse.new("greeting", spec)
|
272
|
+
|
273
|
+
options = {:body => "<name>leon</name>", :params => {}, :endpoint => "greeting", :http_method => "get", :headers => {'CONTENT-TYPE' => 'application/json'}}
|
274
|
+
MockResponse.find(options).should == response
|
275
|
+
expect { MockResponse.find(options.merge(:headers => {'CONTENT-TYPE' => 'text/xml'})) }.to raise_error(ServerResponseNotFound)
|
249
276
|
|
277
|
+
end
|
250
278
|
end
|
251
|
-
end
|
252
279
|
|
253
|
-
|
254
|
-
|
280
|
+
describe 'matching against the request body' do
|
281
|
+
it 'should match required fragments in the request body' do
|
255
282
|
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
283
|
+
response_spec = convert_keys_to_strings(
|
284
|
+
{
|
285
|
+
:request => {
|
286
|
+
:body_content => %w(leon)
|
287
|
+
},
|
288
|
+
:response => {
|
289
|
+
:body => 'response'
|
290
|
+
}
|
264
291
|
|
265
|
-
|
266
|
-
|
292
|
+
}
|
293
|
+
)
|
267
294
|
|
268
|
-
|
295
|
+
response = MockResponse.new("greeting", response_spec)
|
269
296
|
|
270
|
-
|
297
|
+
options = {:body => "<name>leon</name>", :params => {}, :endpoint => "greeting", :http_method => "get", :headers => {}}
|
271
298
|
|
272
|
-
|
273
|
-
|
274
|
-
|
299
|
+
MockResponse.find(options).should == response
|
300
|
+
expect { MockResponse.find(options.merge(:body => "<name>jeff</name>")) }.to raise_error(ServerResponseNotFound)
|
301
|
+
end
|
275
302
|
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
303
|
+
it 'should use regexs to match required fragements in the request body' do
|
304
|
+
response_spec = convert_keys_to_strings(
|
305
|
+
{
|
306
|
+
:request => {
|
307
|
+
:body_content => %w(%r{leon.*})
|
308
|
+
},
|
309
|
+
:response => {
|
310
|
+
:body => 'response'
|
311
|
+
}
|
285
312
|
|
286
|
-
|
287
|
-
|
313
|
+
}
|
314
|
+
)
|
288
315
|
|
289
|
-
|
316
|
+
response = MockResponse.new("greeting", response_spec)
|
290
317
|
|
291
318
|
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
319
|
+
options = {:body => "<name>leon</name>", :params => {}, :endpoint => "greeting", :http_method => "get", :headers => {}}
|
320
|
+
MockResponse.find(options).should == response
|
321
|
+
MockResponse.find(options.merge(:body => "<name>leonard</name>")).should == response
|
322
|
+
expect { MockResponse.find(options.merge(:body => "<name>jeff</name>")) }.to raise_error(ServerResponseNotFound)
|
323
|
+
end
|
296
324
|
end
|
297
325
|
end
|
298
326
|
|
@@ -427,7 +455,7 @@ describe Mirage::MockResponse do
|
|
427
455
|
|
428
456
|
MockResponse.new("greeting", default_response_spec)
|
429
457
|
expected_response = MockResponse.new("greeting", specific_response_spec)
|
430
|
-
options = {:body => "<action>login</action>", :params => {"name" => "leon"}, :endpoint => "greeting", :http_method => "get"
|
458
|
+
options = {:body => "<action>login</action>", :params => {"name" => "leon"}, :endpoint => "greeting", :http_method => "get", :headers => {}}
|
431
459
|
MockResponse.find(options).should == expected_response
|
432
460
|
end
|
433
461
|
end
|
@@ -449,7 +477,7 @@ describe Mirage::MockResponse do
|
|
449
477
|
|
450
478
|
|
451
479
|
response = MockResponse.new("greeting", response_spec)
|
452
|
-
options = {:body => "<action>login</action>", :params => {"name" => "leon"}, :endpoint => "greeting", :http_method => "post"
|
480
|
+
options = {:body => "<action>login</action>", :params => {"name" => "leon"}, :endpoint => "greeting", :http_method => "post", :headers => {}}
|
453
481
|
MockResponse.find(options).should == response
|
454
482
|
|
455
483
|
options[:http_method] = 'get'
|
@@ -478,7 +506,7 @@ describe Mirage::MockResponse do
|
|
478
506
|
end
|
479
507
|
|
480
508
|
it 'should raise an exception when a response is not found' do
|
481
|
-
expect { MockResponse.find(:body => "<action>login</action>", :params => {:name => "leon"}, :endpoint => "greeting", :http_method => "post"
|
509
|
+
expect { MockResponse.find(:body => "<action>login</action>", :params => {:name => "leon"}, :endpoint => "greeting", :http_method => "post", :headers => {}) }.to raise_error(ServerResponseNotFound)
|
482
510
|
end
|
483
511
|
|
484
512
|
it 'should return all responses' do
|
@@ -493,7 +521,7 @@ describe Mirage::MockResponse do
|
|
493
521
|
it 'most appropriate response under parent resource and same http method' do
|
494
522
|
level1_response = MockResponse.new("level1", convert_keys_to_strings({:response => {:body => "level1", :default => true}}))
|
495
523
|
MockResponse.new("level1/level2", convert_keys_to_strings({:response => {:body => "level2", :default => true}, :request => {:body_content => %w(body)}}))
|
496
|
-
MockResponse.find_default(:body => "", :http_method => "get", :endpoint => "level1/level2/level3", :params =>{}, :headers =>{}).should == level1_response
|
524
|
+
MockResponse.find_default(:body => "", :http_method => "get", :endpoint => "level1/level2/level3", :params => {}, :headers => {}).should == level1_response
|
497
525
|
end
|
498
526
|
end
|
499
527
|
|
@@ -513,7 +541,7 @@ describe Mirage::MockResponse do
|
|
513
541
|
:parameters => {
|
514
542
|
:name => "leon"
|
515
543
|
},
|
516
|
-
:headers =>{
|
544
|
+
:headers => {
|
517
545
|
:header => 'header'
|
518
546
|
},
|
519
547
|
:http_method => "post"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mirage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.0.alpha.
|
4
|
+
version: 3.0.0.alpha.11
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-05-
|
12
|
+
date: 2013-05-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sinatra
|
@@ -349,7 +349,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
349
349
|
version: '0'
|
350
350
|
segments:
|
351
351
|
- 0
|
352
|
-
hash:
|
352
|
+
hash: -378399899441393951
|
353
353
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
354
354
|
none: false
|
355
355
|
requirements:
|
@@ -358,7 +358,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
358
358
|
version: 1.3.1
|
359
359
|
requirements: []
|
360
360
|
rubyforge_project:
|
361
|
-
rubygems_version: 1.8.
|
361
|
+
rubygems_version: 1.8.25
|
362
362
|
signing_key:
|
363
363
|
specification_version: 3
|
364
364
|
summary: Mirage is a easy mock server for testing your applications
|