mirage 2.4.2 → 3.0.0.alpha.1
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/.simplecov +6 -0
- data/Gemfile +11 -3
- data/Gemfile.lock +41 -14
- data/VERSION +1 -1
- data/features/client/clear.feature +41 -50
- data/features/client/configure.feature +2 -2
- data/features/client/put.feature +17 -6
- data/features/client/requests.feature +5 -9
- data/features/client/start.feature +19 -11
- data/features/client/stop.feature +10 -44
- data/features/server/commandline_interface/start.feature +2 -14
- data/features/server/commandline_interface/stop.feature +6 -4
- data/features/server/logging.feature +2 -2
- data/features/server/prime.feature +11 -66
- data/features/server/requests/delete.feature +34 -33
- data/features/server/requests/get.feature +21 -18
- data/features/server/save_and_revert.feature +24 -11
- data/features/server/templates/delete.feature +29 -32
- data/features/server/templates/get.feature +44 -25
- data/features/server/templates/put/put.feature +55 -78
- data/features/server/templates/put/put_with_substitutions.feature +12 -32
- data/features/server/templates/put/required_content.feature +118 -0
- data/features/step_definitions/my_steps.rb +51 -6
- data/features/support/env.rb +1 -1
- data/features/support/hooks.rb +2 -5
- data/{lib/mirage/client → features/support}/web.rb +14 -3
- data/lib/mirage/client.rb +5 -2
- data/lib/mirage/client/client.rb +22 -129
- data/lib/mirage/client/request.rb +25 -0
- data/lib/mirage/client/requests.rb +13 -0
- data/lib/mirage/client/runner.rb +4 -4
- data/lib/mirage/client/template.rb +108 -0
- data/lib/mirage/client/template_configuration.rb +22 -0
- data/lib/mirage/client/templates.rb +26 -0
- data/mirage.gemspec +42 -22
- data/mirage_server.rb +1 -135
- data/rakefile +22 -7
- data/server/app.rb +4 -0
- data/server/binary_data_checker.rb +15 -0
- data/server/helpers.rb +28 -0
- data/server/mock_response.rb +140 -58
- data/server/server.rb +167 -0
- data/spec/{cli_bridge_spec.rb → client/cli_bridge_spec.rb} +15 -11
- data/spec/client/client_spec.rb +139 -0
- data/spec/client/request_spec.rb +52 -0
- data/spec/client/requests_spec.rb +10 -0
- data/spec/{runner_spec.rb → client/runner_spec.rb} +3 -3
- data/spec/client/template_configuration_spec.rb +32 -0
- data/spec/client/template_spec.rb +241 -0
- data/spec/client/templates_spec.rb +79 -0
- data/spec/resources/binary.file +0 -0
- data/spec/server/binary_data_checker_spec.rb +22 -0
- data/spec/server/helpers_spec.rb +34 -0
- data/spec/server/mock_response_spec.rb +526 -0
- data/spec/server/server_spec.rb +132 -0
- data/spec/spec_helper.rb +61 -2
- data/test.html +12 -0
- data/test.rb +20 -17
- data/todo.lst +2 -0
- data/views/index.haml +22 -0
- data/views/response.haml +24 -0
- metadata +134 -49
- data/features/server/templates/put/put_as_default.feature +0 -42
- data/features/server/templates/put/put_with_delay.feature +0 -8
- data/features/server/templates/put/put_with_pattern.feature +0 -80
- data/lib/mirage/client/response.rb +0 -29
- data/spec/client_spec.rb +0 -38
- data/views/index.erb +0 -28
@@ -1,85 +1,62 @@
|
|
1
1
|
Feature: Mirage can be configured with templates that are returned when addressed from ${mirage_url}/responses
|
2
|
-
On setting a template, a unique id is
|
3
|
-
|
4
|
-
Templates can be configured to respond to either, GET, POST, PUT, or DELETE. If you put more than one template to the same address
|
5
|
-
but configure them to respond to different HTTP methods, then they are held as seperate resources and are assigned different ids.
|
6
|
-
|
7
|
-
Templates can have following attributes configured by setting the following HTTP headers:
|
8
|
-
X-mirage-pattern (optional) = criteria for when a response should be returned. see put_with_pattern.feature
|
9
|
-
X-mirage-delay (optional) = the amount of time in seconds that mirage should wait for before responding (defaults to 0)
|
10
|
-
X-mirage-method (optional) = http method that this response applies to. Can be set to GET, POST, PUT or DELETE. Templates are configured to respond to GET requests by default
|
11
|
-
X-mirage-default (optional) = set whether the reponse can act as a default response, see put_as_default.feature (defaults to false)
|
12
|
-
X-mirage-status-code (optional) = set the http status that is returned, defaults to 200
|
13
|
-
content-type (optional) = Set the content type to be returned
|
2
|
+
On setting a template, a unique id is returned. This is a key that can be used to manage the template.
|
14
3
|
|
4
|
+
Templates can be configured to respond to either, GET, POST, PUT, or DELETE. If you put more than one template to the same resource address
|
5
|
+
but configure them to respond to different HTTP methods, then they are held as seperate resources and are assigned different ids.
|
15
6
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
7
|
+
The following can be configured as required in order to invoke a response:
|
8
|
+
* request parameters
|
9
|
+
* body content - defaults to text/plain
|
10
|
+
* HTTP Headers
|
11
|
+
* HTTP Method - defaults to HTTP GET
|
12
|
+
|
13
|
+
The following attributes of a response can be configured
|
14
|
+
* HTTP status code - defaults to 200
|
15
|
+
* Whether this template is to be treated as the default response if a match is not found for a sub URI
|
16
|
+
* A delay before the response is returned to the client. This is in seconds, floats are accepted
|
17
|
+
* Content-Type
|
18
|
+
|
19
|
+
Request defaults
|
20
|
+
|required request parameters | none |
|
21
|
+
|required body content | none |
|
22
|
+
|require HTTP headers | none |
|
23
|
+
|required HTTP method | GET |
|
24
|
+
|
25
|
+
Response defaults
|
26
|
+
| HTTP status code | 200 |
|
27
|
+
| treat as default | false |
|
28
|
+
| delay | 0 |
|
29
|
+
| Content-Type | text/plain |
|
30
|
+
|
31
|
+
|
32
|
+
Scenario: Setting a template on mirage
|
33
|
+
Given the following template template:
|
34
|
+
"""
|
35
|
+
{
|
36
|
+
"request":{
|
37
|
+
"parameters":{},
|
38
|
+
"http_method":"get",
|
39
|
+
"headers": {},
|
40
|
+
"body_content":[]
|
41
|
+
},
|
42
|
+
"response":{
|
43
|
+
"default":false,
|
44
|
+
"body":"Hello",
|
45
|
+
"delay":0,
|
46
|
+
"content_type":"text/plain",
|
47
|
+
"status":200
|
48
|
+
}
|
49
|
+
}
|
50
|
+
"""
|
51
|
+
And 'response.body' is base64 encoded
|
52
|
+
And the template is sent using PUT to 'http://localhost:7001/mirage/templates/greeting'
|
53
|
+
And '{"id":1}' should be returned
|
54
|
+
|
55
|
+
When GET is sent to 'http://localhost:7001/mirage/responses/greeting'
|
20
56
|
Then 'Hello' should be returned
|
21
57
|
And a 200 should be returned
|
22
|
-
|
23
|
-
|
24
|
-
Scenario: A template put under a deeper address
|
25
|
-
Given I send PUT to 'http://localhost:7001/mirage/templates/say/hello/to/me' with body 'Hello to me'
|
26
|
-
|
27
|
-
When I send GET to 'http://localhost:7001/mirage/responses/say/hello/to/me'
|
28
|
-
Then 'Hello to me' should be returned
|
29
|
-
|
30
|
-
|
31
|
-
Scenario: Setting the content-type header
|
32
|
-
Given I send PUT to 'http://localhost:7001/mirage/templates/say/hello/to/me' with body '<xml></xml>' and headers:
|
33
|
-
|content-type|text/xml|
|
34
|
-
|
35
|
-
When I send GET to 'http://localhost:7001/mirage/responses/say/hello/to/me'
|
36
|
-
Then '<xml></xml>' should be returned
|
37
|
-
And the response 'content-type' should be 'text/xml'
|
38
58
|
|
39
|
-
|
40
|
-
|
41
|
-
Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hello'
|
42
|
-
Then '1' should be returned
|
43
|
-
|
44
|
-
Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hi'
|
45
|
-
Then '1' should be returned
|
46
|
-
|
47
|
-
Scenario: Setting the http status code to be returned
|
48
|
-
Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hello' and headers:
|
49
|
-
| X-mirage-status | 202 |
|
50
|
-
When I send GET to 'http://localhost:7001/mirage/responses/greeting'
|
51
|
-
Then a 202 should be returned
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
Scenario Outline: Templates is configured to respond to different http methods
|
57
|
-
Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'GET' and headers:
|
58
|
-
| X-mirage-method | GET |
|
59
|
-
And '1' should be returned
|
60
|
-
|
61
|
-
Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'POST' and headers:
|
62
|
-
| X-mirage-method | POST |
|
63
|
-
And '2' should be returned
|
64
|
-
|
65
|
-
Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'DELETE' and headers:
|
66
|
-
| X-mirage-method | DELETE |
|
67
|
-
And '3' should be returned
|
68
|
-
|
69
|
-
Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'PUT' and headers:
|
70
|
-
| X-mirage-method | PUT |
|
71
|
-
And '4' should be returned
|
72
|
-
|
73
|
-
When I send <method> to 'http://localhost:7001/mirage/responses/greeting'
|
74
|
-
Then '<method>' should be returned
|
75
|
-
Examples:
|
76
|
-
| method |
|
77
|
-
| GET |
|
78
|
-
| POST |
|
79
|
-
| PUT |
|
80
|
-
| DELETE |
|
81
|
-
|
82
|
-
|
83
|
-
Scenario: Getting a response for a template resources that does not exist
|
84
|
-
When I send GET to 'http://localhost:7001/mirage/responses/response_that_does_not_exist'
|
59
|
+
Scenario: Making a request that is unmatched
|
60
|
+
When GET is sent to 'http://localhost:7001/mirage/responses/unmatched'
|
85
61
|
Then a 404 should be returned
|
62
|
+
|
@@ -1,41 +1,21 @@
|
|
1
1
|
Feature: Parts of a response can be substitued for values found in the request body or query string.
|
2
2
|
This allows dynamic content to be sent back to a client.
|
3
3
|
|
4
|
-
To do this, substitution
|
5
|
-
and then the query string for matches. Patterns can be either the name of a parameter found in the query string, or a regular expression with a single
|
6
|
-
matching group which is what is put in to the response.
|
7
|
-
|
4
|
+
To do this, substitution, matchers must be put in the the response value.
|
8
5
|
|
6
|
+
Either a string literal or a regex can be used in between ${} to find a match
|
9
7
|
|
10
8
|
Scenario: A response template populated from matches found in the request body using a regex
|
11
|
-
Given
|
12
|
-
| X-mirage-method | POST |
|
13
|
-
When I send POST to 'http://localhost:7001/mirage/responses/greeting' with request entity
|
9
|
+
Given the following template template:
|
14
10
|
"""
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
11
|
+
{
|
12
|
+
"response":{
|
13
|
+
"body":"Hello ${name}"
|
14
|
+
}
|
15
|
+
}
|
19
16
|
"""
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
Scenario: A response template populated from match found in the query string using a request parameter name
|
24
|
-
Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hello ${name}, how are you?'
|
25
|
-
When I send GET to 'http://localhost:7001/mirage/responses/greeting' with parameters:
|
26
|
-
| name | Leon |
|
27
|
-
Then 'Hello Leon, how are you?' should be returned
|
28
|
-
|
29
|
-
|
30
|
-
Scenario: Response template populated from match found in the query string using a regex
|
31
|
-
Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hello ${name=([L\|l]eon)}, how are you?'
|
17
|
+
And 'response.body' is base64 encoded
|
18
|
+
And the template is sent using PUT to 'http://localhost:7001/mirage/templates/greeting'
|
32
19
|
When I send GET to 'http://localhost:7001/mirage/responses/greeting' with parameters:
|
33
|
-
|
|
34
|
-
|
35
|
-
Then 'Hello Leon, how are you?' should be returned
|
36
|
-
|
37
|
-
|
38
|
-
Scenario: No match is found in either the request body or query string
|
39
|
-
Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hello ${<name>(.*?)</name>}, how are you?'
|
40
|
-
When I send GET to 'http://localhost:7001/mirage/responses/greeting'
|
41
|
-
Then 'Hello ${<name>(.*?)</name>}, how are you?' should be returned
|
20
|
+
|name|Joe |
|
21
|
+
Then 'Hello Joe' should be returned
|
@@ -0,0 +1,118 @@
|
|
1
|
+
Feature: Templates set requirements on the following in order for them to be used to generate responses:
|
2
|
+
|
3
|
+
* request parameters
|
4
|
+
* body content
|
5
|
+
* HTTP Headers
|
6
|
+
* HTTP Method
|
7
|
+
|
8
|
+
When specifying requirements on Headers, request parameters or the body of a request either a litteral string
|
9
|
+
or a regular expression can be used for matching.
|
10
|
+
|
11
|
+
Background: There is already a default response for 'greeting'
|
12
|
+
Given the following template template:
|
13
|
+
"""
|
14
|
+
{
|
15
|
+
"request":{
|
16
|
+
"parameters":{},
|
17
|
+
"http_method":"get",
|
18
|
+
"body_content":[]
|
19
|
+
},
|
20
|
+
"response":{
|
21
|
+
"default":false,
|
22
|
+
"body":"Hello Stranger",
|
23
|
+
"delay":0,
|
24
|
+
"content_type":"text/plain",
|
25
|
+
"status":200
|
26
|
+
}
|
27
|
+
}
|
28
|
+
"""
|
29
|
+
And 'response.body' is base64 encoded
|
30
|
+
And the template is sent using PUT to 'http://localhost:7001/mirage/templates/greeting'
|
31
|
+
|
32
|
+
#TODO support http header matching
|
33
|
+
# Scenario: Configuring a template with requirements on HTTP headers
|
34
|
+
# Given the following template template:
|
35
|
+
# """
|
36
|
+
# {
|
37
|
+
# "request":{
|
38
|
+
# "parameters":{},
|
39
|
+
# "http_method":"get",
|
40
|
+
# "body_content":[]
|
41
|
+
# },
|
42
|
+
# "response":{
|
43
|
+
# "default":false,
|
44
|
+
# "body":"Hello Stranger",
|
45
|
+
# "delay":0,
|
46
|
+
# "content_type":"text/plain",
|
47
|
+
# "status":200
|
48
|
+
# }
|
49
|
+
# }
|
50
|
+
# """
|
51
|
+
# And 'response.body' is base64 encoded
|
52
|
+
# And the template is sent using PUT to 'http://localhost:7001/mirage/templates/greeting'
|
53
|
+
|
54
|
+
|
55
|
+
Scenario: Configuring a template with requirements on request parameters
|
56
|
+
Given the following template template:
|
57
|
+
"""
|
58
|
+
{
|
59
|
+
"request":{
|
60
|
+
"parameters":{
|
61
|
+
"firstname" : "%r\{.*e}",
|
62
|
+
"surname" : "Blogs"
|
63
|
+
},
|
64
|
+
"http_method":"get",
|
65
|
+
"body_content":[]
|
66
|
+
},
|
67
|
+
"response":{
|
68
|
+
"default":false,
|
69
|
+
"body":"Hello Joe",
|
70
|
+
"delay":0,
|
71
|
+
"content_type":"text/plain",
|
72
|
+
"status":200
|
73
|
+
}
|
74
|
+
}
|
75
|
+
"""
|
76
|
+
And 'response.body' is base64 encoded
|
77
|
+
And the template is sent using PUT to 'http://localhost:7001/mirage/templates/greeting'
|
78
|
+
|
79
|
+
When I send GET to 'http://localhost:7001/mirage/responses/greeting' with parameters:
|
80
|
+
|firstname|Joe |
|
81
|
+
|surname |Blogs|
|
82
|
+
Then 'Hello Joe' should be returned
|
83
|
+
|
84
|
+
Scenario: Configuring a template with requirements on the body
|
85
|
+
Given the following template template:
|
86
|
+
"""
|
87
|
+
{
|
88
|
+
"request":{
|
89
|
+
"parameters":{},
|
90
|
+
"http_method":"POST",
|
91
|
+
"body_content":["Joe", "%r{B..gs}"]
|
92
|
+
},
|
93
|
+
"response":{
|
94
|
+
"default":false,
|
95
|
+
"body":"Hello Joe",
|
96
|
+
"delay":0,
|
97
|
+
"content_type":"text/plain",
|
98
|
+
"status":200
|
99
|
+
}
|
100
|
+
}
|
101
|
+
"""
|
102
|
+
And 'response.body' is base64 encoded
|
103
|
+
And the template is sent using PUT to 'http://localhost:7001/mirage/templates/greeting'
|
104
|
+
|
105
|
+
When I send POST to 'http://localhost:7001/mirage/responses/greeting' with body:
|
106
|
+
"""
|
107
|
+
{
|
108
|
+
"credentials" : {
|
109
|
+
"username" : "Joe",
|
110
|
+
"password" : "Blogs"
|
111
|
+
}
|
112
|
+
}
|
113
|
+
"""
|
114
|
+
Then 'Hello Joe' should be returned
|
115
|
+
|
116
|
+
|
117
|
+
|
118
|
+
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'base64'
|
2
|
+
require 'hashie'
|
1
3
|
Then /^'([^']*)' should be returned$/ do |expected_response|
|
2
4
|
response_text = @response.body
|
3
5
|
if response_text != expected_response
|
@@ -78,6 +80,10 @@ Then /^I run$/ do |text|
|
|
78
80
|
end
|
79
81
|
end
|
80
82
|
|
83
|
+
Given /^the following require statements are needed:$/ do |text|
|
84
|
+
@code_snippet = text.gsub("\"", "\\\\\"")
|
85
|
+
end
|
86
|
+
|
81
87
|
Given /^the following gems are required to run the Mirage client test code:$/ do |text|
|
82
88
|
@code_snippet = text.gsub("\"", "\\\\\"")
|
83
89
|
end
|
@@ -94,7 +100,7 @@ When /^I send (POST|PUT) to '(http:\/\/localhost:7001\/mirage\/(.*?))' with requ
|
|
94
100
|
end
|
95
101
|
end
|
96
102
|
|
97
|
-
When /^
|
103
|
+
When /^(GET|PUT|POST|OPTIONS|HEAD|DELETE) is sent to '(http:\/\/localhost:\d{4}\/mirage([^']*))'$/ do |method, url, endpoint|
|
98
104
|
start_time = Time.now
|
99
105
|
@response = case method
|
100
106
|
when 'GET' then
|
@@ -114,9 +120,15 @@ When /^I send (GET|PUT|POST|OPTIONS|HEAD|DELETE) to '(http:\/\/localhost:\d{4}\/
|
|
114
120
|
end
|
115
121
|
|
116
122
|
|
117
|
-
When /^I send PUT to '(http:\/\/localhost:7001\/mirage\/([^']*))' with body
|
123
|
+
When /^I send (PUT|POST) to '(http:\/\/localhost:7001\/mirage\/([^']*))' with body:$/ do |method, url, endpoint, body|
|
118
124
|
start_time = Time.now
|
119
|
-
@response =
|
125
|
+
@response = case method
|
126
|
+
when 'PUT'
|
127
|
+
http_put(url, body)
|
128
|
+
when 'POST'
|
129
|
+
http_post(url, body)
|
130
|
+
end
|
131
|
+
|
120
132
|
@response_time = Time.now - start_time
|
121
133
|
end
|
122
134
|
|
@@ -126,7 +138,7 @@ When /^I send PUT to '(http:\/\/localhost:7001\/mirage\/([^']*))' with body '([^
|
|
126
138
|
parameter, value = row[0], row[1]
|
127
139
|
headers[parameter]=value
|
128
140
|
end
|
129
|
-
@response = http_put(url, body, headers)
|
141
|
+
@response = http_put(url, body, :headers => headers)
|
130
142
|
end
|
131
143
|
|
132
144
|
Then /^I should see '(.*?)' on the command line$/ do |content|
|
@@ -172,7 +184,7 @@ When /^I send (GET|POST) to '(http:\/\/localhost:7001\/mirage\/(.*?))' with para
|
|
172
184
|
end
|
173
185
|
|
174
186
|
Then /^the following should be returned:$/ do |text|
|
175
|
-
|
187
|
+
text.gsub("\n","").gsub(" ", "").should == @response.body
|
176
188
|
end
|
177
189
|
|
178
190
|
Given /^I send PUT to '(http:\/\/localhost:7001\/mirage\/(.*?))' with file: ([^']*) and headers:$/ do |url, endpoint, path, table|
|
@@ -183,10 +195,23 @@ Given /^I send PUT to '(http:\/\/localhost:7001\/mirage\/(.*?))' with file: ([^'
|
|
183
195
|
end
|
184
196
|
|
185
197
|
Dir.chdir SCRATCH do
|
186
|
-
http_put(url, File.new(path), headers)
|
198
|
+
http_put(url, File.new(path), :headers => headers)
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
Given /^I send PUT to '(http:\/\/localhost:7001\/mirage\/(.*?))' with body '([^']*)' and parameters:$/ do |url, endpoint, body, table|
|
203
|
+
headers = {}
|
204
|
+
table.raw.each do |row|
|
205
|
+
parameter, value = row[0], row[1]
|
206
|
+
headers[parameter]=value
|
207
|
+
end
|
208
|
+
|
209
|
+
Dir.chdir SCRATCH do
|
210
|
+
http_put(url, File.new("/home/team/Projects/mirage/pkg/mirage-2.1.2.gem"), :parameters => headers)
|
187
211
|
end
|
188
212
|
end
|
189
213
|
|
214
|
+
|
190
215
|
When /^the response '([^']*)' should be '([^']*)'$/ do |header, value|
|
191
216
|
@response.response[header].should include(value)
|
192
217
|
end
|
@@ -195,4 +220,24 @@ Then /^the response should be the same as the content of '([^']*)'$/ do |path|
|
|
195
220
|
Dir.chdir SCRATCH do
|
196
221
|
@response.body.should == File.read(path)
|
197
222
|
end
|
223
|
+
end
|
224
|
+
Given /^the following template template:$/ do |text|
|
225
|
+
@response_template = Hashie::Mash.new(JSON.parse(text))
|
226
|
+
end
|
227
|
+
When /^'(.*)' is base64 encoded$/ do |template_component|
|
228
|
+
@response_template.send(:eval, "#{template_component}=Base64.encode64(#{template_component})")
|
229
|
+
end
|
230
|
+
When /^the template is sent using PUT to '(http:\/\/localhost:7001\/mirage\/(.*?))'$/ do |url, endpoint|
|
231
|
+
@response = http_put(url, @response_template.to_hash.to_json, :headers => {"Content-Type" => "application/json"})
|
232
|
+
end
|
233
|
+
Given /^a template for '(.*)' has been set with a value of '(.*)'$/ do |endpoint, value|
|
234
|
+
$mirage.templates.put(endpoint, value)
|
235
|
+
end
|
236
|
+
Then /^request data should have been retrieved$/ do
|
237
|
+
puts @response.body
|
238
|
+
request_data = JSON.parse(@response.body)
|
239
|
+
request_data.include?('parameters').should == true
|
240
|
+
request_data.include?('headers').should == true
|
241
|
+
request_data.include?('body').should == true
|
242
|
+
request_data.include?('request_url').should == true
|
198
243
|
end
|
data/features/support/env.rb
CHANGED
data/features/support/hooks.rb
CHANGED
@@ -1,11 +1,8 @@
|
|
1
1
|
Before do
|
2
2
|
FileUtils.mkdir_p(SCRATCH)
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
else
|
7
|
-
$mirage = start_mirage_in_scratch_dir
|
8
|
-
end
|
4
|
+
$mirage = start_mirage_in_scratch_dir
|
5
|
+
$mirage.templates.delete_all
|
9
6
|
|
10
7
|
Dir["#{SCRATCH}/*"].each do |file|
|
11
8
|
FileUtils.rm_rf(file) unless file == "#{SCRATCH}/mirage.log"
|
@@ -13,7 +13,10 @@ module Mirage
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
-
def http_put url, entity,
|
16
|
+
def http_put url, entity, options={}
|
17
|
+
if options[:parameters]
|
18
|
+
url << "?#{options[:parameters].to_a.collect{|pair|pair.join("=")}.join("&")}"
|
19
|
+
end
|
17
20
|
uri = URI.parse(url)
|
18
21
|
request = Net::HTTP::Put.new(uri.request_uri)
|
19
22
|
|
@@ -23,8 +26,15 @@ module Mirage
|
|
23
26
|
else
|
24
27
|
request.body=entity
|
25
28
|
end
|
26
|
-
|
27
|
-
|
29
|
+
|
30
|
+
if options[:headers]
|
31
|
+
options[:headers].each { |field, value| request.add_field(field, value) }
|
32
|
+
end
|
33
|
+
|
34
|
+
#if options[:parameters]
|
35
|
+
# request.set_form_data options[:parameters]
|
36
|
+
#end
|
37
|
+
|
28
38
|
Net::HTTP.new(uri.host, uri.port).request(request)
|
29
39
|
end
|
30
40
|
|
@@ -56,3 +66,4 @@ module Mirage
|
|
56
66
|
|
57
67
|
end
|
58
68
|
end
|
69
|
+
World(Mirage::Web)
|