mirage 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/features/default_responses.feature +4 -4
- data/features/web_user_interface.feature +1 -1
- data/lib/mirage/core.rb +12 -12
- data/mirage.gemspec +1 -1
- metadata +4 -4
data/Gemfile.lock
CHANGED
@@ -16,7 +16,7 @@ Feature: Mirage can respond with a 'default' response when a when the response r
|
|
16
16
|
| response | another level |
|
17
17
|
And I hit 'http://localhost:7001/mirage/set/level1' with parameters:
|
18
18
|
| response | level 1 |
|
19
|
-
|
|
19
|
+
| default | true |
|
20
20
|
|
21
21
|
When I hit 'http://localhost:7001/mirage/get/level1/level2'
|
22
22
|
Then 'level 1' should be returned
|
@@ -25,17 +25,17 @@ Feature: Mirage can respond with a 'default' response when a when the response r
|
|
25
25
|
Scenario: More than one potential default response exists
|
26
26
|
Given I hit 'http://localhost:7001/mirage/set/level1' with parameters:
|
27
27
|
| response | level 1 |
|
28
|
-
|
|
28
|
+
| default | true |
|
29
29
|
And I hit 'http://localhost:7001/mirage/set/level1/level2' with parameters:
|
30
30
|
| response | level 2 |
|
31
|
-
|
|
31
|
+
| default | true |
|
32
32
|
And I hit 'http://localhost:7001/mirage/set/level1/level2/level3' with parameters:
|
33
33
|
| response | level 3 |
|
34
34
|
And I hit 'http://localhost:7001/mirage/set/level1/level2/level3/level4' with parameters:
|
35
35
|
| pattern | a pattern that wont be matched |
|
36
36
|
And I hit 'http://localhost:7001/mirage/set/level1/level2/level3/level4/level5' with parameters:
|
37
37
|
| response | level 5 |
|
38
|
-
|
|
38
|
+
| default | true |
|
39
39
|
|
40
40
|
When I hit 'http://localhost:7001/mirage/get/level1/level2/level3/level4'
|
41
41
|
Then 'level 2' should be returned
|
@@ -6,7 +6,7 @@ Feature: Mirage's home page allows you to see what response are currently being
|
|
6
6
|
Background: There are already a couple of responses hosted on he Mirage server
|
7
7
|
Given I hit 'http://localhost:7001/mirage/set/greeting' with parameters:
|
8
8
|
| response | hello |
|
9
|
-
|
|
9
|
+
| default | true |
|
10
10
|
And I hit 'http://localhost:7001/mirage/set/leaving' with parameters:
|
11
11
|
| response | goodbye |
|
12
12
|
|
data/lib/mirage/core.rb
CHANGED
@@ -14,16 +14,16 @@ module Mirage
|
|
14
14
|
attr_reader :response_id, :delay, :name, :pattern
|
15
15
|
attr_accessor :response_id
|
16
16
|
|
17
|
-
def initialize name, value, pattern=nil, delay=0,
|
18
|
-
@name, @value, @pattern, @response_id, @delay, @
|
17
|
+
def initialize name, value, pattern=nil, delay=0, default=false
|
18
|
+
@name, @value, @pattern, @response_id, @delay, @default = name, value, pattern, @@id_count+=1, delay, default
|
19
19
|
end
|
20
20
|
|
21
21
|
def self.reset_count
|
22
22
|
@@id_count = 0
|
23
23
|
end
|
24
24
|
|
25
|
-
def
|
26
|
-
@
|
25
|
+
def default?
|
26
|
+
@default
|
27
27
|
end
|
28
28
|
|
29
29
|
def file?
|
@@ -71,7 +71,7 @@ module Mirage
|
|
71
71
|
|
72
72
|
responses.each do |pattern, response|
|
73
73
|
pattern = pattern.is_a?(Regexp) ? pattern.source : pattern
|
74
|
-
@responses["#{name}#{'/*' if response.
|
74
|
+
@responses["#{name}#{'/*' if response.default?}: #{pattern}"] = response
|
75
75
|
end
|
76
76
|
end
|
77
77
|
end
|
@@ -91,9 +91,9 @@ module Mirage
|
|
91
91
|
delay = (request['delay']||0)
|
92
92
|
pattern = request['pattern'] ? /#{request['pattern']}/ : :default
|
93
93
|
name = args.join('/')
|
94
|
-
|
94
|
+
is_default = request['default'] == 'true'
|
95
95
|
|
96
|
-
response = MockResponse.new(name, (request[:file]||response_value), pattern, delay.to_f,
|
96
|
+
response = MockResponse.new(name, (request[:file]||response_value), pattern, delay.to_f, is_default)
|
97
97
|
|
98
98
|
stored_responses = RESPONSES[name]||={}
|
99
99
|
|
@@ -113,11 +113,11 @@ module Mirage
|
|
113
113
|
if stored_responses
|
114
114
|
record = find_response(body, query_string, stored_responses)
|
115
115
|
else
|
116
|
-
|
116
|
+
default_responses, record = find_default_responses(name), nil
|
117
117
|
|
118
|
-
until record ||
|
119
|
-
record = find_response(body, query_string,
|
120
|
-
record = record.
|
118
|
+
until record || default_responses.empty?
|
119
|
+
record = find_response(body, query_string, default_responses.delete_at(0))
|
120
|
+
record = record.default? ? record : nil
|
121
121
|
end
|
122
122
|
end
|
123
123
|
|
@@ -183,7 +183,7 @@ module Mirage
|
|
183
183
|
respond('response or file parameter required', 500)
|
184
184
|
end
|
185
185
|
|
186
|
-
def
|
186
|
+
def find_default_responses(name)
|
187
187
|
matches = RESPONSES.keys.find_all { |key| name.index(key) == 0 }.sort { |a, b| b.length <=> a.length }
|
188
188
|
matches.collect { |key| RESPONSES[key] }
|
189
189
|
end
|
data/mirage.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'mirage'
|
3
|
-
s.version = '0.1.
|
3
|
+
s.version = '0.1.6'
|
4
4
|
s.authors = ["Leon Davis"]
|
5
5
|
s.homepage = 'https://github.com/lashd/mirage'
|
6
6
|
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.'
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: mirage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.1.
|
5
|
+
version: 0.1.6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Leon Davis
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-03-
|
13
|
+
date: 2011-03-27 00:00:00 +00:00
|
14
14
|
default_executable: mirage
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -145,7 +145,7 @@ licenses: []
|
|
145
145
|
|
146
146
|
post_install_message: "\n\
|
147
147
|
===============================================================================\n\
|
148
|
-
Thanks you for installing mirage-0.1.
|
148
|
+
Thanks you for installing mirage-0.1.6. \n\n\
|
149
149
|
Run Mirage with:\n\n\
|
150
150
|
mirage start\n\
|
151
151
|
===============================================================================\n"
|
@@ -171,7 +171,7 @@ rubyforge_project:
|
|
171
171
|
rubygems_version: 1.6.1
|
172
172
|
signing_key:
|
173
173
|
specification_version: 3
|
174
|
-
summary: mirage-0.1.
|
174
|
+
summary: mirage-0.1.6
|
175
175
|
test_files:
|
176
176
|
- features/checking_for_requests.feature
|
177
177
|
- features/clearing_requests_and_responses.feature
|