rest-assured 2.0.2 → 2.1.0
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.
- checksums.yaml +4 -4
- data/README.markdown +13 -2
- data/bin/rest-assured +1 -1
- data/db/migrate/20170713000515_add_delay_to_doubles.rb +9 -0
- data/db/test.db +0 -0
- data/features/rest_api/doubles.feature +11 -11
- data/features/ruby_api/create_double.feature +19 -0
- data/features/step_definitions/doubles_steps.rb +5 -5
- data/features/support/env.rb +8 -1
- data/features/support/world_helpers.rb +6 -0
- data/features/web_ui/doubles.feature +19 -19
- data/lib/rest-assured/config.rb +1 -1
- data/lib/rest-assured/models/double.rb +10 -0
- data/lib/rest-assured/routes/double.rb +1 -1
- data/lib/rest-assured/routes/response.rb +2 -0
- data/lib/rest-assured/version.rb +1 -1
- data/spec/functional/response_spec.rb +14 -3
- data/spec/models/double_spec.rb +12 -1
- data/spec/spec_helper.rb +6 -1
- data/views/doubles/_form.haml +4 -0
- data/views/doubles/index.haml +2 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7f22fb40a5da375669712d668d450c79397ddd9a
|
4
|
+
data.tar.gz: ee5916c4ee0dac3b82230c24bb606c90205091ab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5333399d35149cd78f6fbb8a2c404a2535fcb75845a77b8352de6955bbbfe332ce429bc4ada5044c0ef8146e986e13385642c4cbbf09ec8c61f72c61ba926721
|
7
|
+
data.tar.gz: 5e90dbf790b43165c31efc5ae29094ae2af86e9ef5acfd3be0ba5a4a1d98fa215f62ddbeb570044375e84d68a196c3bd9945ef5f710034d309ef4ec4e0c26d19
|
data/README.markdown
CHANGED
@@ -111,6 +111,15 @@ JSON.parse(req.params).should == expected_params_hash
|
|
111
111
|
JSON.parse(req.rack_env)['HTTP_ACCEPT'].should == 'text/html'
|
112
112
|
```
|
113
113
|
|
114
|
+
If you want to simulate a delayed time to first byte to test how your application handles latency or time outs you can
|
115
|
+
use the delay property when you create the double.
|
116
|
+
|
117
|
+
```ruby
|
118
|
+
@double = RestAssured::Double.create(fullpath: '/slow-products', delay: 5)
|
119
|
+
```
|
120
|
+
|
121
|
+
Now, when a request is made to `http://localhost:4578/slow-products`, then the server will pause for 5 seconds before responding.
|
122
|
+
|
114
123
|
Use REST api to clear doubles/redirects between tests:
|
115
124
|
|
116
125
|
```ruby
|
@@ -132,6 +141,7 @@ For using REST-assured from non-ruby environments.
|
|
132
141
|
- __verb__ - one of http the following http verbs: `GET`, `POST`, `PUT`, `PATCH`, `DELETE`. Optional. `GET` is default.
|
133
142
|
- __status__ - status returned when double is requested. Optional. `200` is default.
|
134
143
|
- __response_headers__ - key/value map of headers. Optional.
|
144
|
+
- __delay__ - the length of time in seconds the server should pause before sending the response. Optional.
|
135
145
|
|
136
146
|
Example:
|
137
147
|
|
@@ -173,7 +183,8 @@ For using REST-assured from non-ruby environments.
|
|
173
183
|
"content": "awesome",
|
174
184
|
"description": null,
|
175
185
|
"status": 200,
|
176
|
-
"active": true
|
186
|
+
"active": true,
|
187
|
+
"delay" : 0
|
177
188
|
}
|
178
189
|
}
|
179
190
|
|
@@ -219,7 +230,7 @@ Here is the rest API for managing redirects:
|
|
219
230
|
|
220
231
|
## Running tests
|
221
232
|
|
222
|
-
Tests require
|
233
|
+
Tests require postgres. Connection params are read from environment variables `DB_HOST`, `DB_PORT` and `DB_USER` (defaults are `localhost`, `5432` and `postgres`). Cucumber tests also need Chrome.
|
223
234
|
|
224
235
|
$ git clone git://github.com/artemave/REST-assured.git
|
225
236
|
$ cd rest-assured && bundle install
|
data/bin/rest-assured
CHANGED
@@ -19,7 +19,7 @@ OptionParser.new do |opts|
|
|
19
19
|
end
|
20
20
|
|
21
21
|
opts.on('-u', '--dbuser DBUSER', "Db username (mysql, postgresql only)") do |user|
|
22
|
-
user_opts[:
|
22
|
+
user_opts[:dbuser] = user
|
23
23
|
end
|
24
24
|
|
25
25
|
opts.on('--dbpass DBPASSWORD', 'Db password (mysql, postgresql only). Defaults to empty') do |password|
|
data/db/test.db
CHANGED
Binary file
|
@@ -4,19 +4,19 @@ Feature: use doubles via api
|
|
4
4
|
I want to mock rest services my app is consuming from
|
5
5
|
|
6
6
|
Scenario Outline: create double
|
7
|
-
When I create a double with "<fullpath>" as fullpath, "<content>" as response content, "<verb>" as request verb
|
8
|
-
Then there should be 1 double with "<fullpath>" as fullpath, "<content>" as response content, "<result_verb>" as request verb
|
7
|
+
When I create a double with "<fullpath>" as fullpath, "<content>" as response content, "<verb>" as request verb, status as "<status>" and delay as "<delay>"
|
8
|
+
Then there should be 1 double with "<fullpath>" as fullpath, "<content>" as response content, "<result_verb>" as request verb, status as "<result_status>" and delay as "<result_delay>"
|
9
9
|
|
10
10
|
Examples:
|
11
|
-
| fullpath | content | verb | result_verb | status | result_status |
|
12
|
-
| /api/something | created | POST | POST | 200 | 200 |
|
13
|
-
| /api/sss | changed | PUT | PUT | 201 | 201 |
|
14
|
-
| /api/asdfsf | removed | DELETE | DELETE | 300 | 300 |
|
15
|
-
| /api/some | text content | GET | GET | 303 | 303 |
|
16
|
-
| /api/some?a=3&b=dd | more content | | GET | | 200 |
|
17
|
-
| /api/empty | | POST | POST | | 200 |
|
18
|
-
| /api/file | | HEAD | HEAD | | 200 |
|
19
|
-
| /api/file | | PATCH | PATCH | | 200 |
|
11
|
+
| fullpath | content | verb | result_verb | status | result_status | delay | result_delay |
|
12
|
+
| /api/something | created | POST | POST | 200 | 200 | | 0 |
|
13
|
+
| /api/sss | changed | PUT | PUT | 201 | 201 | 0 | 0 |
|
14
|
+
| /api/asdfsf | removed | DELETE | DELETE | 300 | 300 | 1 | 1 |
|
15
|
+
| /api/some | text content | GET | GET | 303 | 303 | 2 | 2 |
|
16
|
+
| /api/some?a=3&b=dd | more content | | GET | | 200 | 3 | 3 |
|
17
|
+
| /api/empty | | POST | POST | | 200 | 4 | 4 |
|
18
|
+
| /api/file | | HEAD | HEAD | | 200 | 5 | 5 |
|
19
|
+
| /api/file | | PATCH | PATCH | | 200 | 6 | 6 |
|
20
20
|
|
21
21
|
Scenario: view created double details
|
22
22
|
When I create a double
|
@@ -74,3 +74,22 @@ Feature: create double
|
|
74
74
|
get @double.fullpath
|
75
75
|
last_response.status == 302
|
76
76
|
"""
|
77
|
+
|
78
|
+
Scenario: specify a delay
|
79
|
+
When I create a double:
|
80
|
+
"""
|
81
|
+
@double = RestAssured::Double.create(:fullpath => '/some/api', :delay => 4)
|
82
|
+
"""
|
83
|
+
Then the following should be true:
|
84
|
+
"""
|
85
|
+
start_time = Time.now
|
86
|
+
|
87
|
+
get @double.fullpath
|
88
|
+
|
89
|
+
end_time = Time.now
|
90
|
+
|
91
|
+
time_elapsed = end_time - start_time
|
92
|
+
|
93
|
+
expect(time_elapsed).to be > 3
|
94
|
+
|
95
|
+
"""
|
@@ -4,8 +4,8 @@ Given /^there are no doubles$/ do
|
|
4
4
|
RestAssured::Models::Double.destroy_all
|
5
5
|
end
|
6
6
|
|
7
|
-
When /^I create a double with "([^""]*)" as fullpath, "([^""]*)" as response content, "([^""]*)" as request verb and
|
8
|
-
post '/doubles.json', { :fullpath => fullpath, :content => content, :verb => verb, :status => status }
|
7
|
+
When /^I create a double with "([^""]*)" as fullpath, "([^""]*)" as response content, "([^""]*)" as request verb, status as "([^""]*)" and delay as "([^""]*)"$/ do |fullpath, content, verb, status, delay|
|
8
|
+
post '/doubles.json', { :fullpath => fullpath, :content => content, :verb => verb, :status => status, :delay => delay}
|
9
9
|
last_response.should be_ok
|
10
10
|
end
|
11
11
|
|
@@ -23,8 +23,8 @@ Then /^I should get (#{CAPTURE_A_NUMBER}) in response status$/ do |status|
|
|
23
23
|
last_response.status.should == status
|
24
24
|
end
|
25
25
|
|
26
|
-
Then /^there should be (#{CAPTURE_A_NUMBER}) double with "([^""]*)" as fullpath, "([^""]*)" as response content, "([^""]*)" as request verb and
|
27
|
-
RestAssured::Models::Double.where(:fullpath => fullpath, :content => content, :verb => verb, :status => status).count.should == n
|
26
|
+
Then /^there should be (#{CAPTURE_A_NUMBER}) double with "([^""]*)" as fullpath, "([^""]*)" as response content, "([^""]*)" as request verb, status as "(#{CAPTURE_A_NUMBER})" and delay as "(#{CAPTURE_A_NUMBER})"$/ do |n, fullpath, content, verb, status, delay|
|
27
|
+
RestAssured::Models::Double.where(:fullpath => fullpath, :content => content, :verb => verb, :status => status, :delay => delay).count.should == n
|
28
28
|
end
|
29
29
|
|
30
30
|
Given /^there is double with "([^"]*)" as fullpath and "([^"]*)" as response content$/ do |fullpath, content|
|
@@ -152,7 +152,7 @@ Given /^I choose to delete double with fullpath "([^"]*)"$/ do |fullpath|
|
|
152
152
|
end
|
153
153
|
|
154
154
|
Then /^I should be asked to confirm delete$/ do
|
155
|
-
|
155
|
+
js_confirm
|
156
156
|
end
|
157
157
|
|
158
158
|
Given /^there are the following doubles:$/ do |table|
|
data/features/support/env.rb
CHANGED
@@ -5,6 +5,7 @@ require 'rspec'
|
|
5
5
|
require 'rack/test'
|
6
6
|
require 'capybara'
|
7
7
|
require 'capybara/cucumber'
|
8
|
+
require 'capybara/poltergeist'
|
8
9
|
require 'database_cleaner'
|
9
10
|
require 'anticipate'
|
10
11
|
require 'awesome_print'
|
@@ -29,11 +30,17 @@ end
|
|
29
30
|
Capybara.register_driver :selenium do |app|
|
30
31
|
Capybara::Selenium::Driver.new(app, :browser => :chrome)
|
31
32
|
end
|
33
|
+
Capybara.javascript_driver = ENV['FF'] ? :selenium : :poltergeist
|
32
34
|
|
33
35
|
World(Capybara, Rack::Test::Methods, RackHeaderHack, WorldHelpers, Anticipate)
|
34
36
|
|
35
37
|
require 'rest-assured/config'
|
36
|
-
db_opts = {
|
38
|
+
db_opts = {
|
39
|
+
adapter: 'postgres',
|
40
|
+
dbhost: ENV.fetch('DB_HOST', 'localhost'),
|
41
|
+
dbport: ENV.fetch('DB_PORT', 5432),
|
42
|
+
dbuser: ENV.fetch('DB_USER', 'postgres')
|
43
|
+
}
|
37
44
|
RestAssured::Config.build(db_opts)
|
38
45
|
|
39
46
|
require 'rest-assured'
|
@@ -6,28 +6,28 @@ Feature: manage doubles via ui
|
|
6
6
|
|
7
7
|
Scenario: view existing doubles
|
8
8
|
Given the following doubles exist:
|
9
|
-
| fullpath | description | content | verb |
|
10
|
-
| /url1/aaa | twitter | test content | GET |
|
11
|
-
| /url2/bbb | geo location | more content | POST |
|
12
|
-
| /u/b?c=1 | wikipedia | article | PUT |
|
9
|
+
| fullpath | description | content | verb | delay |
|
10
|
+
| /url1/aaa | twitter | test content | GET | 0 |
|
11
|
+
| /url2/bbb | geo location | more content | POST | 1 |
|
12
|
+
| /u/b?c=1 | wikipedia | article | PUT | 2 |
|
13
13
|
When I visit "doubles" page
|
14
14
|
Then I should see existing doubles:
|
15
|
-
| fullpath | description | verb |
|
16
|
-
| /url1/aaa | twitter | GET |
|
17
|
-
| /url2/bbb | geo location | POST |
|
18
|
-
| /u/b?c=1 | wikipedia | PUT |
|
15
|
+
| fullpath | description | verb | delay |
|
16
|
+
| /url1/aaa | twitter | GET | 0 |
|
17
|
+
| /url2/bbb | geo location | POST | 1 |
|
18
|
+
| /u/b?c=1 | wikipedia | PUT | 2 |
|
19
19
|
|
20
20
|
Scenario: add new double
|
21
21
|
Given I am on "doubles" page
|
22
22
|
When I choose to create a double
|
23
23
|
And I enter double details:
|
24
|
-
| fullpath | description | content | verb | status |
|
25
|
-
| /url2/bb?a=b5 | google api | test content | POST | 200 |
|
24
|
+
| fullpath | description | content | verb | status | delay |
|
25
|
+
| /url2/bb?a=b5 | google api | test content | POST | 200 | 1 |
|
26
26
|
And I save it
|
27
27
|
Then I should see "Double created"
|
28
28
|
And I should see existing doubles:
|
29
|
-
| fullpath | description | verb | status |
|
30
|
-
| /url2/bb?a=b5 | google api | POST | 200 |
|
29
|
+
| fullpath | description | verb | status | delay |
|
30
|
+
| /url2/bb?a=b5 | google api | POST | 200 | 1 |
|
31
31
|
|
32
32
|
@javascript
|
33
33
|
Scenario: choose active double
|
@@ -40,22 +40,22 @@ Feature: manage doubles via ui
|
|
40
40
|
|
41
41
|
Scenario: edit double
|
42
42
|
Given the following doubles exist:
|
43
|
-
| fullpath | description | content | verb | status |
|
44
|
-
| /url1/aaa | twitter | test content | POST | 404 |
|
43
|
+
| fullpath | description | content | verb | status | delay |
|
44
|
+
| /url1/aaa | twitter | test content | POST | 404 | 0 |
|
45
45
|
And I visit "doubles" page
|
46
46
|
And I choose to edit double
|
47
47
|
When I change "double" "description" to "google"
|
48
48
|
And I save it
|
49
49
|
Then I should see existing doubles:
|
50
|
-
| fullpath | description | verb | status |
|
51
|
-
| /url1/aaa | google | POST | 404 |
|
50
|
+
| fullpath | description | verb | status | delay |
|
51
|
+
| /url1/aaa | google | POST | 404 | 0 |
|
52
52
|
|
53
53
|
@javascript
|
54
54
|
Scenario: delete double
|
55
55
|
Given the following doubles exist:
|
56
|
-
| fullpath
|
57
|
-
| /url1/aaa | twitter | test content |
|
58
|
-
| /url/cc/bb | google | other content |
|
56
|
+
| fullpath | description | content | delay |
|
57
|
+
| /url1/aaa | twitter | test content | 0 |
|
58
|
+
| /url/cc/bb | google | other content | 1 |
|
59
59
|
And I visit "doubles" page
|
60
60
|
And I choose to delete double with fullpath "/url1/aaa"
|
61
61
|
Then I should be asked to confirm delete
|
data/lib/rest-assured/config.rb
CHANGED
@@ -8,6 +8,7 @@ module RestAssured
|
|
8
8
|
|
9
9
|
VERBS = %w{GET POST PUT DELETE HEAD PATCH}
|
10
10
|
STATUSES = Net::HTTPResponse::CODE_TO_OBJ.keys.map(&:to_i)
|
11
|
+
MAX_DELAY = 30
|
11
12
|
|
12
13
|
validates_presence_of :fullpath
|
13
14
|
validates_inclusion_of :verb, :in => VERBS
|
@@ -16,6 +17,7 @@ module RestAssured
|
|
16
17
|
after_initialize :set_status
|
17
18
|
after_initialize :set_verb
|
18
19
|
after_initialize :set_response_headers
|
20
|
+
after_initialize :set_delay
|
19
21
|
|
20
22
|
before_save :toggle_active
|
21
23
|
after_destroy :set_active
|
@@ -50,6 +52,14 @@ module RestAssured
|
|
50
52
|
f.save
|
51
53
|
end
|
52
54
|
end
|
55
|
+
|
56
|
+
def set_delay
|
57
|
+
self.delay = 0 unless delay.present?
|
58
|
+
if self.delay > MAX_DELAY
|
59
|
+
puts "delay #{self.delay} exceeds maxmium. Defaulting to #{MAX_DELAY}"
|
60
|
+
self.delay = MAX_DELAY
|
61
|
+
end
|
62
|
+
end
|
53
63
|
end
|
54
64
|
end
|
55
65
|
end
|
@@ -51,7 +51,7 @@ module RestAssured
|
|
51
51
|
end
|
52
52
|
rescue
|
53
53
|
d = params['double'] ||
|
54
|
-
params.slice(*%w[fullpath content description verb status response_headers])
|
54
|
+
params.slice(*%w[fullpath content description verb status response_headers delay])
|
55
55
|
end
|
56
56
|
|
57
57
|
@double = Models::Double.create(d)
|
data/lib/rest-assured/version.rb
CHANGED
@@ -29,7 +29,8 @@ module RestAssured
|
|
29
29
|
:fullpath => '/some/path',
|
30
30
|
:content => 'content',
|
31
31
|
:response_headers => { 'ACCEPT' => 'text/html' },
|
32
|
-
:status => 201
|
32
|
+
:status => 201,
|
33
|
+
:delay => 0
|
33
34
|
|
34
35
|
allow(request).to receive(:fullpath).and_return(@double.fullpath)
|
35
36
|
end
|
@@ -54,7 +55,7 @@ module RestAssured
|
|
54
55
|
|
55
56
|
it 'records request' do
|
56
57
|
requests = double
|
57
|
-
allow(Models::Double).to receive_message_chain('where.first').and_return(double(:requests => requests).as_null_object)
|
58
|
+
allow(Models::Double).to receive_message_chain('where.first').and_return(double(:requests => requests, :delay => 0).as_null_object)
|
58
59
|
|
59
60
|
expect(requests).to receive(:create!).with(:rack_env => 'env', :body => 'body', :params => 'params')
|
60
61
|
|
@@ -96,12 +97,22 @@ module RestAssured
|
|
96
97
|
# TODO change to instead exclude anything that does not respond_to?(:to_s)
|
97
98
|
it 'excludes "rack.input" and "rack.errors" as they break with "IOError - not opened for reading:" on consequent #to_json (as they are IO and StringIO)' do
|
98
99
|
requests = double.as_null_object
|
99
|
-
allow(Models::Double).to receive_message_chain('where.first').and_return(double(:requests => requests).as_null_object)
|
100
|
+
allow(Models::Double).to receive_message_chain('where.first').and_return(double(:requests => requests, :delay => 0).as_null_object)
|
100
101
|
|
101
102
|
expect(env).to receive(:except).with('rack.input', 'rack.errors', 'rack.logger')
|
102
103
|
|
103
104
|
Response.perform(rest_assured_app)
|
104
105
|
end
|
105
106
|
|
107
|
+
it 'it sleeps for delay seconds' do
|
108
|
+
requests = double.as_null_object
|
109
|
+
allow(Models::Double).to receive_message_chain('where.first').and_return(double(:requests => requests, :delay => 10).as_null_object)
|
110
|
+
|
111
|
+
Response.stub(:sleep)
|
112
|
+
expect(Response).to receive(:sleep).with(10)
|
113
|
+
|
114
|
+
Response.perform(rest_assured_app)
|
115
|
+
end
|
116
|
+
|
106
117
|
end
|
107
118
|
end
|
data/spec/models/double_spec.rb
CHANGED
@@ -8,7 +8,8 @@ module RestAssured::Models
|
|
8
8
|
:content => 'some content',
|
9
9
|
:verb => 'GET',
|
10
10
|
:status => '303',
|
11
|
-
:response_headers => { 'ACCEPT' => 'text/html' }
|
11
|
+
:response_headers => { 'ACCEPT' => 'text/html' },
|
12
|
+
:delay => 5
|
12
13
|
}
|
13
14
|
end
|
14
15
|
|
@@ -38,6 +39,16 @@ module RestAssured::Models
|
|
38
39
|
expect(f.active).to be true
|
39
40
|
end
|
40
41
|
|
42
|
+
it "defaults delay to 0" do
|
43
|
+
f = Double.create valid_params.except(:delay)
|
44
|
+
expect(f.delay).to be 0
|
45
|
+
end
|
46
|
+
|
47
|
+
it "defaults delay of greater than 30 seconds to 30 seconds" do
|
48
|
+
f = Double.create valid_params.merge(:delay => 99)
|
49
|
+
expect(f.delay).to be 30
|
50
|
+
end
|
51
|
+
|
41
52
|
describe 'when created' do
|
42
53
|
it "toggles active double for the same fullpath and verb" do
|
43
54
|
f1 = Double.create valid_params
|
data/spec/spec_helper.rb
CHANGED
@@ -20,7 +20,12 @@ require 'rack/test'
|
|
20
20
|
require 'awesome_print'
|
21
21
|
require 'rest-assured/config'
|
22
22
|
|
23
|
-
DB_OPTS = {
|
23
|
+
DB_OPTS = {
|
24
|
+
adapter: 'postgres',
|
25
|
+
dbhost: ENV.fetch('DB_HOST', 'localhost'),
|
26
|
+
dbport: ENV.fetch('DB_PORT', 5432),
|
27
|
+
dbuser: ENV.fetch('DB_USER', 'postgres')
|
28
|
+
}
|
24
29
|
RestAssured::Config.build(DB_OPTS)
|
25
30
|
|
26
31
|
require 'rest-assured'
|
data/views/doubles/_form.haml
CHANGED
@@ -18,6 +18,10 @@
|
|
18
18
|
- statuses.each do |s|
|
19
19
|
%option{:name => s, :selected => (@double.status == s)}= s
|
20
20
|
|
21
|
+
%p
|
22
|
+
%label{:for => 'double_delay'} Delay
|
23
|
+
%input.wide#double_delay{:type => 'text', :name => 'double[delay]', :value => @double.delay}
|
24
|
+
|
21
25
|
%p
|
22
26
|
%label{:for => 'double_description'} Description
|
23
27
|
%textarea.wide#double_description{:name => 'double[description]', :rows => 3}= @double.description
|
data/views/doubles/index.haml
CHANGED
@@ -7,6 +7,7 @@
|
|
7
7
|
%th Description
|
8
8
|
%th Verb
|
9
9
|
%th Status
|
10
|
+
%th Delay
|
10
11
|
%th Active?
|
11
12
|
%th
|
12
13
|
%tbody
|
@@ -22,6 +23,7 @@
|
|
22
23
|
%td= f.description
|
23
24
|
%td= f.verb
|
24
25
|
%td= f.status
|
26
|
+
%td= f.delay
|
25
27
|
%td.label.text-center
|
26
28
|
- if fs.size > 1
|
27
29
|
%input.active-double-toggle{:type => 'radio', :name => group, :checked => f.active, :data => { 'double-id' => f.id }}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rest-assured
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Artem Avetisyan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-08-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sinatra
|
@@ -133,6 +133,7 @@ files:
|
|
133
133
|
- db/migrate/20111021113953_add_status_to_doubles.rb
|
134
134
|
- db/migrate/20111208155906_add_response_headers_to_doubles.rb
|
135
135
|
- db/migrate/20120320200820_change_fullpath_to_text.rb
|
136
|
+
- db/migrate/20170713000515_add_delay_to_doubles.rb
|
136
137
|
- db/test.db
|
137
138
|
- features/command_line_options.feature
|
138
139
|
- features/rest_api/doubles.feature
|
@@ -229,7 +230,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
229
230
|
version: '0'
|
230
231
|
requirements: []
|
231
232
|
rubyforge_project: rest-assured
|
232
|
-
rubygems_version: 2.
|
233
|
+
rubygems_version: 2.6.11
|
233
234
|
signing_key:
|
234
235
|
specification_version: 4
|
235
236
|
summary: Real stubs and spies for HTTP(S) services
|