mirage 3.0.0.alpha.11 → 3.0.0.alpha.12
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.
- data/Gemfile +1 -1
- data/Gemfile.lock +1 -1
- data/VERSION +1 -1
- data/features/.nav +19 -0
- data/features/client/clear.feature +15 -23
- data/features/client/configure.feature +24 -28
- data/features/client/preview_responses.feature +4 -4
- data/features/client/put.feature +49 -62
- data/features/client/requests.feature +1 -1
- data/features/client/running.feature +2 -2
- data/features/client/save_and_revert.feature +5 -8
- data/features/client/start.feature +3 -3
- data/features/client/stop.feature +8 -8
- data/features/commandline_interface/help.feature +17 -0
- data/features/commandline_interface/readme.md +1 -0
- data/features/{server/commandline_interface → commandline_interface}/start.feature +4 -4
- data/features/{server/commandline_interface → commandline_interface}/stop.feature +22 -24
- data/features/{server/logging.feature → logging.feature} +2 -2
- data/features/{server/prime.feature → prime.feature} +4 -3
- data/features/readme.md +7 -0
- data/features/requests/delete.feature +48 -0
- data/features/{server/requests → requests}/get.feature +6 -5
- data/features/{server/save_and_revert.feature → save_and_revert.feature} +5 -5
- data/features/step_definitions/my_steps.rb +47 -12
- data/features/support/command_line.rb +1 -1
- data/features/templates/delete.feature +45 -0
- data/features/{server/templates → templates}/get.feature +9 -5
- data/features/templates/put.feature +77 -0
- data/features/{server/templates/put → templates}/put_with_substitutions.feature +4 -3
- data/features/templates/readme.md +7 -0
- data/features/{server/templates/put → templates}/required_content.feature +27 -35
- data/features/{server/web_user_interface.feature → web_user_interface.feature} +8 -7
- data/lib/mirage/client/cli_bridge.rb +1 -1
- data/lib/mirage/client/client.rb +16 -3
- data/lib/mirage/client/error.rb +1 -1
- data/lib/mirage/client/runner.rb +1 -1
- data/lib/mirage/client/template.rb +4 -2
- data/lib/mirage/client/template/configuration.rb +10 -0
- data/lib/mirage/client/template/model/instance_methods.rb +3 -4
- data/lib/mirage/client/templates.rb +1 -1
- data/mirage.gemspec +21 -17
- data/mirage_server.rb +1 -1
- data/server/mock_response.rb +18 -17
- data/server/server.rb +15 -15
- data/spec/client/client_spec.rb +44 -10
- data/spec/client/template/model/common_methods_spec.rb +1 -1
- data/spec/client/template/model/instance_methods_spec.rb +2 -2
- data/spec/client/template_spec.rb +11 -4
- data/spec/client/templates_spec.rb +10 -4
- data/spec/server/server_spec.rb +23 -23
- data/test.rb +2 -19
- metadata +22 -18
- data/features/server/commandline_interface/help.feature +0 -16
- data/features/server/requests/delete.feature +0 -47
- data/features/server/templates/delete.feature +0 -44
- data/features/server/templates/put/put.feature +0 -62
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.0.0.alpha.
|
1
|
+
3.0.0.alpha.12
|
data/features/.nav
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
- commandline_interface (Commandline interface):
|
2
|
+
- help.feature
|
3
|
+
- start.feature
|
4
|
+
- stop.featre
|
5
|
+
- templates (Templates):
|
6
|
+
- put.feature
|
7
|
+
- required_content.feature
|
8
|
+
- put_with_substitutions.feature
|
9
|
+
- get.feature
|
10
|
+
- delete.feature
|
11
|
+
- requests:
|
12
|
+
- get.feature
|
13
|
+
- delete.feature
|
14
|
+
- requests:
|
15
|
+
- save_and_revert.feature (Snapshot)
|
16
|
+
- prime.feature
|
17
|
+
- logging.feature (Logs)
|
18
|
+
- web_user_interface.feature
|
19
|
+
- client (Ruby client):
|
@@ -11,11 +11,11 @@ Feature: The client can be used for clearing down Mirage.
|
|
11
11
|
|
12
12
|
And a template for 'greeting' has been set with a value of 'Hello'
|
13
13
|
|
14
|
-
And I send GET to '
|
14
|
+
And I send GET to '/responses/greeting' with parameters:
|
15
15
|
| message | hello there |
|
16
16
|
And a template for 'leaving' has been set with a value of 'Goodbye'
|
17
17
|
|
18
|
-
And I send GET to '
|
18
|
+
And I send GET to '/responses/greeting' with parameters:
|
19
19
|
| message | I'm going |
|
20
20
|
|
21
21
|
|
@@ -24,14 +24,14 @@ Feature: The client can be used for clearing down Mirage.
|
|
24
24
|
"""
|
25
25
|
Mirage::Client.new.templates(1).delete
|
26
26
|
"""
|
27
|
-
When GET is sent to '
|
27
|
+
When GET is sent to '/responses/greeting'
|
28
28
|
Then a 404 should be returned
|
29
|
-
When GET is sent to '
|
29
|
+
When GET is sent to '/requests/1'
|
30
30
|
Then a 404 should be returned
|
31
31
|
|
32
|
-
When GET is sent to '
|
32
|
+
When GET is sent to '/responses/leaving'
|
33
33
|
Then a 200 should be returned
|
34
|
-
When GET is sent to '
|
34
|
+
When GET is sent to '/requests/2'
|
35
35
|
Then a 200 should be returned
|
36
36
|
|
37
37
|
|
@@ -40,9 +40,9 @@ Feature: The client can be used for clearing down Mirage.
|
|
40
40
|
"""
|
41
41
|
Mirage::Client.new.requests(1).delete
|
42
42
|
"""
|
43
|
-
When GET is sent to '
|
43
|
+
When GET is sent to '/requests/1'
|
44
44
|
Then a 404 should be returned
|
45
|
-
When GET is sent to '
|
45
|
+
When GET is sent to '/responses/greeting'
|
46
46
|
Then a 200 should be returned
|
47
47
|
|
48
48
|
|
@@ -51,16 +51,16 @@ Feature: The client can be used for clearing down Mirage.
|
|
51
51
|
"""
|
52
52
|
Mirage::Client.new.templates.delete_all
|
53
53
|
"""
|
54
|
-
And GET is sent to '
|
54
|
+
And GET is sent to '/responses/greeting'
|
55
55
|
Then a 404 should be returned
|
56
56
|
|
57
|
-
When GET is sent to '
|
57
|
+
When GET is sent to '/requests/1'
|
58
58
|
Then a 404 should be returned
|
59
59
|
|
60
|
-
And GET is sent to '
|
60
|
+
And GET is sent to '/responses/leaving'
|
61
61
|
Then a 404 should be returned
|
62
62
|
|
63
|
-
When GET is sent to '
|
63
|
+
When GET is sent to '/requests/2'
|
64
64
|
Then a 404 should be returned
|
65
65
|
|
66
66
|
|
@@ -69,16 +69,8 @@ Feature: The client can be used for clearing down Mirage.
|
|
69
69
|
"""
|
70
70
|
Mirage::Client.new.requests.delete_all
|
71
71
|
"""
|
72
|
-
When GET is sent to '
|
72
|
+
When GET is sent to '/requests/1'
|
73
73
|
Then a 404 should be returned
|
74
74
|
|
75
|
-
When GET is sent to '
|
76
|
-
Then a 404 should be returned
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
75
|
+
When GET is sent to '/requests/2'
|
76
|
+
Then a 404 should be returned
|
@@ -11,17 +11,17 @@ Feature: The client can be configured with default settings to keep your mocking
|
|
11
11
|
Scenario: configuring the client on instance
|
12
12
|
Given I run
|
13
13
|
"""
|
14
|
-
client = Mirage::Client.new do
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
14
|
+
client = Mirage::Client.new do
|
15
|
+
http_method :post
|
16
|
+
status 202
|
17
|
+
default true
|
18
|
+
delay 2
|
19
|
+
content_type "text/xml"
|
20
20
|
end
|
21
21
|
|
22
22
|
client.put('greeting','hello')
|
23
23
|
"""
|
24
|
-
When POST is sent to '
|
24
|
+
When POST is sent to '/responses/greeting/for/someone'
|
25
25
|
Then 'hello' should be returned
|
26
26
|
And a 202 should be returned
|
27
27
|
Then it should take at least '2' seconds
|
@@ -31,17 +31,17 @@ Feature: The client can be configured with default settings to keep your mocking
|
|
31
31
|
Given I run
|
32
32
|
"""
|
33
33
|
client = Mirage::Client.new
|
34
|
-
client.configure do
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
34
|
+
client.configure do
|
35
|
+
http_method :post
|
36
|
+
status 202
|
37
|
+
default false
|
38
|
+
delay 2
|
39
|
+
content_type "text/xml"
|
40
40
|
end
|
41
41
|
|
42
42
|
client.put('greeting','hello')
|
43
43
|
"""
|
44
|
-
When POST is sent to '
|
44
|
+
When POST is sent to '/responses/greeting'
|
45
45
|
Then 'hello' should be returned
|
46
46
|
And a 202 should be returned
|
47
47
|
Then it should take at least '2' seconds
|
@@ -51,24 +51,20 @@ Feature: The client can be configured with default settings to keep your mocking
|
|
51
51
|
Given I run
|
52
52
|
"""
|
53
53
|
client = Mirage::Client.new
|
54
|
-
client.configure do
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
54
|
+
client.configure do
|
55
|
+
http_method :post
|
56
|
+
status 202
|
57
|
+
default true
|
58
|
+
delay 2
|
59
|
+
content_type "text/xml"
|
60
60
|
end
|
61
61
|
|
62
62
|
client.reset
|
63
|
-
|
64
|
-
client.configure do |defaults|
|
65
|
-
defaults.method.should == nil
|
66
|
-
defaults.status.should == nil
|
67
|
-
defaults.default.should == nil
|
68
|
-
defaults.delay.should == nil
|
69
|
-
defaults.content_type.should == nil
|
70
|
-
end
|
63
|
+
client.put('greeting','hello')
|
71
64
|
"""
|
65
|
+
When GET is sent to '/responses/greeting'
|
66
|
+
Then 'hello' should be returned
|
67
|
+
|
72
68
|
|
73
69
|
|
74
70
|
|
@@ -9,21 +9,21 @@ Feature: the client can be used for peeking at responses hosted on Mirage.
|
|
9
9
|
"""
|
10
10
|
|
11
11
|
Scenario: peeking a response
|
12
|
-
Given
|
12
|
+
Given a template for 'greeting' has been set with a value of 'Hello'
|
13
13
|
|
14
14
|
When I run
|
15
15
|
"""
|
16
|
-
Mirage::Client.new.
|
16
|
+
Mirage::Client.new.templates(1).body.should == 'Hello'
|
17
17
|
"""
|
18
18
|
|
19
|
-
When
|
19
|
+
When GET is sent to '/requests/1'
|
20
20
|
Then a 404 should be returned
|
21
21
|
|
22
22
|
Scenario: getting a response that does not exist
|
23
23
|
Given I run
|
24
24
|
"""
|
25
25
|
begin
|
26
|
-
Mirage::Client.new.
|
26
|
+
Mirage::Client.new.templates(2).should == 'this should not have happened'
|
27
27
|
fail("Error should have been thrown")
|
28
28
|
rescue Exception => e
|
29
29
|
puts e
|
data/features/client/put.feature
CHANGED
@@ -17,33 +17,33 @@ Feature: the Mirage client provides methods for setting responses and loading de
|
|
17
17
|
"""
|
18
18
|
Mirage::Client.new.put('greeting','hello')
|
19
19
|
"""
|
20
|
-
When
|
20
|
+
When GET is sent to '/responses/greeting'
|
21
21
|
Then 'hello' should be returned
|
22
22
|
|
23
23
|
Scenario: Setting the method that a response should be returned on
|
24
24
|
Given I run
|
25
25
|
"""
|
26
|
-
Mirage::Client.new.put('greeting', 'Hello Leon') do
|
27
|
-
|
26
|
+
Mirage::Client.new.put('greeting', 'Hello Leon') do
|
27
|
+
http_method 'POST'
|
28
28
|
end
|
29
29
|
"""
|
30
|
-
When
|
30
|
+
When GET is sent to '/responses/greeting'
|
31
31
|
Then a 404 should be returned
|
32
|
-
When
|
32
|
+
When POST is sent to '/responses/greeting'
|
33
33
|
Then 'Hello Leon' should be returned
|
34
34
|
|
35
35
|
|
36
36
|
Scenario: Setting a response with required body content
|
37
37
|
Given I run
|
38
38
|
"""
|
39
|
-
Mirage::Client.new.put('greeting', 'Hello Leon') do
|
40
|
-
|
41
|
-
|
39
|
+
Mirage::Client.new.put('greeting', 'Hello Leon') do
|
40
|
+
http_method 'POST'
|
41
|
+
required_body_content << /leon/
|
42
42
|
end
|
43
43
|
"""
|
44
|
-
When
|
44
|
+
When POST is sent to '/responses/greeting'
|
45
45
|
Then a 404 should be returned
|
46
|
-
When I send POST to '
|
46
|
+
When I send POST to '/responses/greeting' with request entity
|
47
47
|
"""
|
48
48
|
<greetingRequest>
|
49
49
|
<name>leon</name>
|
@@ -54,14 +54,14 @@ Feature: the Mirage client provides methods for setting responses and loading de
|
|
54
54
|
Scenario: Setting a response with a request parameter requirement
|
55
55
|
Given I run
|
56
56
|
"""
|
57
|
-
Mirage::Client.new.put('greeting', 'Hello Leon') do
|
58
|
-
|
59
|
-
|
57
|
+
Mirage::Client.new.put('greeting', 'Hello Leon') do
|
58
|
+
http_method 'POST'
|
59
|
+
required_parameters[:name] = /leon/
|
60
60
|
end
|
61
61
|
"""
|
62
|
-
When
|
62
|
+
When POST is sent to '/responses/greeting'
|
63
63
|
Then a 404 should be returned
|
64
|
-
When I send POST to '
|
64
|
+
When I send POST to '/responses/greeting' with parameters:
|
65
65
|
| name | leon |
|
66
66
|
|
67
67
|
Then 'Hello Leon' should be returned
|
@@ -69,59 +69,46 @@ Feature: the Mirage client provides methods for setting responses and loading de
|
|
69
69
|
Scenario: setting a response as default
|
70
70
|
Given I run
|
71
71
|
"""
|
72
|
-
Mirage
|
73
|
-
|
72
|
+
Mirage.start.clear
|
73
|
+
|
74
|
+
Mirage::Client.new.put('greeting', 'default greeting') do
|
75
|
+
default true
|
74
76
|
end
|
75
77
|
"""
|
76
|
-
When
|
78
|
+
When GET is sent to '/responses/greeting/for/joel'
|
77
79
|
Then 'default greeting' should be returned
|
78
80
|
|
79
81
|
|
80
82
|
Scenario: Setting the content type
|
81
83
|
Given I run
|
82
84
|
"""
|
83
|
-
Mirage::Client.new.put('greeting', '<xml></xml>') do
|
84
|
-
|
85
|
+
Mirage::Client.new.put('greeting', '<xml></xml>') do
|
86
|
+
content_type 'text/xml'
|
85
87
|
end
|
86
88
|
"""
|
87
|
-
When
|
89
|
+
When GET is sent to '/responses/greeting'
|
88
90
|
And the response 'content-type' should be 'text/xml'
|
89
91
|
|
90
|
-
Scenario: Priming Mirage
|
91
|
-
Given Mirage is not running
|
92
|
-
And I run 'mirage start'
|
93
|
-
|
94
|
-
When the file 'responses/default_greetings.rb' contains:
|
95
|
-
"""
|
96
|
-
prime do |mirage|
|
97
|
-
mirage.put('greeting', 'hello')
|
98
|
-
mirage.put('leaving', 'goodbye')
|
99
|
-
end
|
100
|
-
"""
|
101
|
-
And I run
|
102
|
-
"""
|
103
|
-
Mirage::Client.new.prime
|
104
|
-
"""
|
105
|
-
And
|
106
|
-
Then 'hello' should be returned
|
107
|
-
|
108
|
-
When
|
109
|
-
Then 'goodbye' should be returned
|
110
|
-
|
111
|
-
Scenario: Priming Mirage when one of the response file has something bad in it
|
112
|
-
Given the file 'responses/default_greetings.rb' contains:
|
113
|
-
"""
|
114
|
-
Something bad...
|
115
|
-
"""
|
116
|
-
When I run
|
117
|
-
"""
|
118
|
-
begin
|
119
|
-
Mirage::Client.new.prime
|
120
|
-
fail("Error should have been thrown")
|
121
|
-
rescue Exception => e
|
122
|
-
e.is_a?(Mirage::InternalServerException).should == true
|
123
|
-
end
|
124
|
-
"""
|
92
|
+
# Scenario: Priming Mirage
|
93
|
+
# Given Mirage is not running
|
94
|
+
# And I run 'mirage start'
|
95
|
+
#
|
96
|
+
# When the file 'responses/default_greetings.rb' contains:
|
97
|
+
# """
|
98
|
+
# prime do |mirage|
|
99
|
+
# mirage.put('greeting', 'hello')
|
100
|
+
# mirage.put('leaving', 'goodbye')
|
101
|
+
# end
|
102
|
+
# """
|
103
|
+
# And I run
|
104
|
+
# """
|
105
|
+
# Mirage::Client.new.prime
|
106
|
+
# """
|
107
|
+
# And GET is sent to '/responses/greeting'
|
108
|
+
# Then 'hello' should be returned
|
109
|
+
#
|
110
|
+
# When GET is sent to '/responses/leaving'
|
111
|
+
# Then 'goodbye' should be returned
|
125
112
|
|
126
113
|
Scenario: Setting a file as a response
|
127
114
|
Given the file 'test_file.txt' contains:
|
@@ -130,24 +117,24 @@ Feature: the Mirage client provides methods for setting responses and loading de
|
|
130
117
|
"""
|
131
118
|
And I run
|
132
119
|
"""
|
133
|
-
Mirage::Client.new.put('download', File.
|
120
|
+
Mirage::Client.new.put('download', File.read('test_file.txt'))
|
134
121
|
"""
|
135
|
-
When
|
122
|
+
When GET is sent to '/responses/download'
|
136
123
|
Then the response should be the same as the content of 'test_file.txt'
|
137
124
|
|
138
125
|
Scenario: Setting a response status code
|
139
126
|
Given I run
|
140
127
|
"""
|
141
|
-
Mirage::Client.new.put('greeting', 'hello'){
|
128
|
+
Mirage::Client.new.put('greeting', 'hello'){status 203}
|
142
129
|
"""
|
143
|
-
When
|
130
|
+
When GET is sent to '/responses/greeting'
|
144
131
|
Then a 203 should be returned
|
145
132
|
|
146
133
|
|
147
134
|
Scenario: Setting a response with a delay
|
148
135
|
Given I run
|
149
136
|
"""
|
150
|
-
Mirage::Client.new.put('greeting', 'hello'){
|
137
|
+
Mirage::Client.new.put('greeting', 'hello'){delay 2}
|
151
138
|
"""
|
152
|
-
When
|
139
|
+
When GET is sent to '/responses/greeting'
|
153
140
|
Then it should take at least '2' seconds
|
@@ -10,7 +10,7 @@ Feature: Requests made to the Mirage Server can be retrieved using the Mirage cl
|
|
10
10
|
Scenario: Retrieving request data
|
11
11
|
Given a template for 'greeting' has been set with a value of 'Hello'
|
12
12
|
|
13
|
-
When I send GET to '
|
13
|
+
When I send GET to '/responses/greeting' with parameters:
|
14
14
|
| name | leon |
|
15
15
|
Then I run
|
16
16
|
"""
|
@@ -36,7 +36,7 @@ Feature: Use the mirage client api to check if Mirage is running either on the l
|
|
36
36
|
Given I run 'mirage start -p 9001'
|
37
37
|
Then I run
|
38
38
|
"""
|
39
|
-
Mirage.running? "http://localhost:9001
|
39
|
+
Mirage.running? "http://localhost:9001"
|
40
40
|
"""
|
41
41
|
|
42
42
|
|
@@ -44,6 +44,6 @@ Feature: Use the mirage client api to check if Mirage is running either on the l
|
|
44
44
|
Given I run 'mirage start -p 9001'
|
45
45
|
Then I run
|
46
46
|
"""
|
47
|
-
client = Mirage::Client.new "http://localhost:9001
|
47
|
+
client = Mirage::Client.new "http://localhost:9001"
|
48
48
|
client.running?.should == true
|
49
49
|
"""
|
@@ -8,10 +8,7 @@ Feature: The Mirage client can be used to snaphsot and rollback the Mirage serve
|
|
8
8
|
require 'rspec'
|
9
9
|
require 'mirage/client'
|
10
10
|
"""
|
11
|
-
And
|
12
|
-
"""
|
13
|
-
The default greeting
|
14
|
-
"""
|
11
|
+
And a template for 'greeting' has been set with a value of 'The default greeting'
|
15
12
|
|
16
13
|
|
17
14
|
Scenario: saving and reverting
|
@@ -19,12 +16,12 @@ Feature: The Mirage client can be used to snaphsot and rollback the Mirage serve
|
|
19
16
|
"""
|
20
17
|
Mirage::Client.new.save
|
21
18
|
"""
|
22
|
-
And I send PUT to '
|
19
|
+
And I send PUT to '/templates/leaving' with request entity
|
23
20
|
"""
|
24
21
|
Goodbye
|
25
22
|
"""
|
26
23
|
|
27
|
-
And I send PUT to '
|
24
|
+
And I send PUT to '/templates/greeting' with request entity
|
28
25
|
"""
|
29
26
|
Changed
|
30
27
|
"""
|
@@ -33,8 +30,8 @@ Feature: The Mirage client can be used to snaphsot and rollback the Mirage serve
|
|
33
30
|
"""
|
34
31
|
Mirage::Client.new.revert
|
35
32
|
"""
|
36
|
-
And
|
33
|
+
And GET is sent to '/responses/leaving'
|
37
34
|
Then a 404 should be returned
|
38
35
|
|
39
|
-
When
|
36
|
+
When GET is sent to '/responses/greeting'
|
40
37
|
Then 'The default greeting' should be returned
|