rest-assured 1.0.0.rc1 → 1.0.0.rc2
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/README.markdown +6 -6
- data/features/rest_api/doubles.feature +0 -1
- data/features/rest_api/redirects.feature +0 -1
- data/features/ruby_api/test_server.feature +2 -1
- data/features/support/env.rb +15 -8
- data/lib/rest-assured/api/app_session.rb +1 -1
- data/lib/rest-assured/api/server.rb +4 -2
- data/lib/rest-assured/utils/drb_sniffer.rb +2 -2
- data/lib/rest-assured/version.rb +1 -1
- data/spec/api/app_session_spec.rb +2 -2
- data/spec/api/server_spec.rb +3 -1
- data/spec/spec_helper.rb +1 -15
- data/spec/subprocess_spec.rb +6 -2
- metadata +17 -19
data/README.markdown
CHANGED
@@ -9,7 +9,7 @@ There are three main use cases:
|
|
9
9
|
|
10
10
|
* stubbing out external data sources with predefined data
|
11
11
|
* verify requests to external services (aka spying)
|
12
|
-
*
|
12
|
+
* simulate different behavior of external services using web UI; useful in development
|
13
13
|
|
14
14
|
## Usage
|
15
15
|
|
@@ -27,7 +27,7 @@ It is also recommended to have thin installed. This improves startup time (over
|
|
27
27
|
|
28
28
|
Then install gem and run:
|
29
29
|
|
30
|
-
bash$ gem install rest-assured
|
30
|
+
bash$ gem install rest-assured --pre
|
31
31
|
bash$ rest-assured -a mysql &
|
32
32
|
|
33
33
|
Or clone from github and run:
|
@@ -74,7 +74,7 @@ RestAssured::Double.create(fullpath: '/products', content: 'this is content')
|
|
74
74
|
|
75
75
|
Now GET `http://localhost:4578/products` will be returning `this is content`.
|
76
76
|
|
77
|
-
You can also verify what requests happen on a double, or,
|
77
|
+
You can also verify what requests happen on a double, or, if you like, spy on a it. Say this is a Given part of a test:
|
78
78
|
|
79
79
|
```ruby
|
80
80
|
@double = RestAssured::Double.create(fullpath: '/products', verb: 'POST')
|
@@ -87,12 +87,12 @@ Then let us assume that `http://localhost:4578/products` got POSTed as a result
|
|
87
87
|
|
88
88
|
req = @double.requests.first
|
89
89
|
|
90
|
-
req.body.should ==
|
90
|
+
req.body.should == some_expected_payload
|
91
91
|
JSON.parse(req.params).should == expected_params_hash
|
92
|
-
JSON.parse(req.rack_env)['
|
92
|
+
JSON.parse(req.rack_env)['HTTP_ACCEPT'].should == 'text/html'
|
93
93
|
```
|
94
94
|
|
95
|
-
Use plain
|
95
|
+
Use plain REST api to clear doubles/redirects between tests:
|
96
96
|
|
97
97
|
```ruby
|
98
98
|
RestClient.delete "#{RestAssured::Server.address}/redirects/all"
|
@@ -16,7 +16,6 @@ Feature: use doubles via api
|
|
16
16
|
| /api/some?a=3&b=dd | more content | | GET | | 200 |
|
17
17
|
| /api/empty | | POST | POST | | 200 |
|
18
18
|
|
19
|
-
@now
|
20
19
|
Scenario: view created double details
|
21
20
|
When I create a double
|
22
21
|
Then I should be able to get json representation of that double from response
|
@@ -1,7 +1,8 @@
|
|
1
|
+
@api_server
|
1
2
|
Feature: test server
|
2
3
|
In order to have easy integration with my test code
|
3
4
|
As a ruby developer
|
4
|
-
I want to have a client library take care of starting/stopping an instance of rest-assured
|
5
|
+
I want to have a client library take care of starting/stopping an instance of rest-assured
|
5
6
|
|
6
7
|
Scenario: start rest-assured server
|
7
8
|
Given there is free tcp port
|
data/features/support/env.rb
CHANGED
@@ -39,13 +39,24 @@ Spork.prefork do
|
|
39
39
|
|
40
40
|
World(Capybara, Rack::Test::Methods, RackHeaderHack, WorldHelpers)
|
41
41
|
|
42
|
-
|
42
|
+
require 'rest-assured/config'
|
43
|
+
db_opts = { :dbuser => ENV['TRAVIS'] ? "''" : "root", :adapter => 'mysql' }
|
44
|
+
RestAssured::Config.build(db_opts)
|
45
|
+
|
46
|
+
require 'rest-assured'
|
47
|
+
require 'shoulda-matchers'
|
48
|
+
|
49
|
+
RestAssured::Server.start(db_opts.merge(:port => 9876))
|
43
50
|
|
51
|
+
Before "@api_server" do
|
52
|
+
RestAssured::Server.stop
|
53
|
+
end
|
54
|
+
After "@api_server" do
|
55
|
+
RestAssured::Server.start(db_opts.merge(:port => 9876))
|
56
|
+
end
|
57
|
+
end
|
44
58
|
|
45
59
|
Spork.each_run do
|
46
|
-
require 'rest-assured/config'
|
47
|
-
RestAssured::Config.build(:adapter => 'mysql')
|
48
|
-
require 'rest-assured'
|
49
60
|
require 'rest-assured/application'
|
50
61
|
|
51
62
|
def app
|
@@ -59,10 +70,6 @@ Spork.each_run do
|
|
59
70
|
DatabaseCleaner.start
|
60
71
|
end
|
61
72
|
|
62
|
-
Before "@ruby_api" do
|
63
|
-
RestAssured::Server.start(:port => 9876, :dbuser => ENV['TRAVIS'] ? "''" : "root")
|
64
|
-
end
|
65
|
-
|
66
73
|
Before "@ui" do
|
67
74
|
set_headers "HTTP_USER_AGENT" => 'Firefox'
|
68
75
|
end
|
data/lib/rest-assured/version.rb
CHANGED
@@ -6,7 +6,7 @@ module RestAssured
|
|
6
6
|
describe AppSession do
|
7
7
|
context 'either without spork or outside prefork block' do
|
8
8
|
before do
|
9
|
-
AppSession.any_instance.stub(:
|
9
|
+
AppSession.any_instance.stub(:running_in_spork? => false)
|
10
10
|
end
|
11
11
|
|
12
12
|
it 'start application in subprocess' do
|
@@ -26,7 +26,7 @@ module RestAssured
|
|
26
26
|
|
27
27
|
context 'within spork prefork block' do
|
28
28
|
before do
|
29
|
-
AppSession.any_instance.stub(:
|
29
|
+
AppSession.any_instance.stub(:running_in_spork? => true)
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'starts application in childprocess' do
|
data/spec/api/server_spec.rb
CHANGED
@@ -120,7 +120,7 @@ module RestAssured
|
|
120
120
|
end
|
121
121
|
|
122
122
|
it 'stops application subprocess when current process exits' do
|
123
|
-
if not
|
123
|
+
if not running_in_spork?
|
124
124
|
res_file = Tempfile.new('res')
|
125
125
|
AppSession.stub(:new).and_return(session = mock.as_null_object)
|
126
126
|
session.stub(:stop) do
|
@@ -132,6 +132,8 @@ module RestAssured
|
|
132
132
|
end
|
133
133
|
Process.wait
|
134
134
|
res_file.read.should == 'stopped'
|
135
|
+
else
|
136
|
+
pending "Skipped: drb/spork breaks fork sandbox (at_exits are collected and fired all together on master process exit)"
|
135
137
|
end
|
136
138
|
end
|
137
139
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -53,24 +53,10 @@ Spork.prefork do
|
|
53
53
|
require 'rest-assured/application'
|
54
54
|
require 'shoulda-matchers'
|
55
55
|
|
56
|
-
RestAssured::Server.start(db_opts.merge(:port =>
|
56
|
+
RestAssured::Server.start(db_opts.merge(:port => 9877))
|
57
57
|
end
|
58
58
|
|
59
59
|
Spork.each_run do
|
60
|
-
#require 'rest-assured/config'
|
61
|
-
#db_opts = { :dbuser => ENV['TRAVIS'] ? "''" : "root", :adapter => 'mysql' }
|
62
|
-
#RestAssured::Config.build(db_opts)
|
63
|
-
|
64
|
-
#require 'rest-assured'
|
65
|
-
#require 'rest-assured/application'
|
66
|
-
#require 'shoulda-matchers'
|
67
|
-
|
68
|
-
#RSpec.configure do |c|
|
69
|
-
#c.before(:each, "ruby-api" => true) do
|
70
|
-
#RestAssured::Server.start(db_opts.merge(:port => 9876))
|
71
|
-
#end
|
72
|
-
#end
|
73
|
-
|
74
60
|
Capybara.app = RestAssured::Application
|
75
61
|
|
76
62
|
def app
|
data/spec/subprocess_spec.rb
CHANGED
@@ -101,7 +101,7 @@ module RestAssured::Utils
|
|
101
101
|
end
|
102
102
|
|
103
103
|
it 'when exits normally' do
|
104
|
-
if not
|
104
|
+
if not running_in_spork?
|
105
105
|
child_pid # Magic touch. Literally. Else Tempfile gets created in fork and that messes things up
|
106
106
|
|
107
107
|
fork do
|
@@ -113,11 +113,13 @@ module RestAssured::Utils
|
|
113
113
|
|
114
114
|
sleep 0.5
|
115
115
|
child_alive?.should == false
|
116
|
+
else
|
117
|
+
pending "Skipped: drb/spork breaks fork sandbox (at_exits are collected and fired all together on master process exit)"
|
116
118
|
end
|
117
119
|
end
|
118
120
|
|
119
121
|
it 'when killed violently' do
|
120
|
-
if not
|
122
|
+
if not running_in_spork?
|
121
123
|
child_pid
|
122
124
|
|
123
125
|
fork do
|
@@ -131,6 +133,8 @@ module RestAssured::Utils
|
|
131
133
|
|
132
134
|
sleep 0.5
|
133
135
|
child_alive?.should == false
|
136
|
+
else
|
137
|
+
pending "Skipped: drb/spork breaks fork sandbox (at_exits are collected and fired all together on master process exit)"
|
134
138
|
end
|
135
139
|
end
|
136
140
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rest-assured
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.rc2
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,12 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-02-
|
13
|
-
default_executable:
|
12
|
+
date: 2012-02-11 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: sinatra
|
17
|
-
requirement: &
|
16
|
+
requirement: &2160189400 !ruby/object:Gem::Requirement
|
18
17
|
none: false
|
19
18
|
requirements:
|
20
19
|
- - ! '>='
|
@@ -22,10 +21,10 @@ dependencies:
|
|
22
21
|
version: 1.3.1
|
23
22
|
type: :runtime
|
24
23
|
prerelease: false
|
25
|
-
version_requirements: *
|
24
|
+
version_requirements: *2160189400
|
26
25
|
- !ruby/object:Gem::Dependency
|
27
26
|
name: rack
|
28
|
-
requirement: &
|
27
|
+
requirement: &2160188700 !ruby/object:Gem::Requirement
|
29
28
|
none: false
|
30
29
|
requirements:
|
31
30
|
- - <=
|
@@ -33,10 +32,10 @@ dependencies:
|
|
33
32
|
version: 1.3.6
|
34
33
|
type: :runtime
|
35
34
|
prerelease: false
|
36
|
-
version_requirements: *
|
35
|
+
version_requirements: *2160188700
|
37
36
|
- !ruby/object:Gem::Dependency
|
38
37
|
name: childprocess
|
39
|
-
requirement: &
|
38
|
+
requirement: &2160188000 !ruby/object:Gem::Requirement
|
40
39
|
none: false
|
41
40
|
requirements:
|
42
41
|
- - ~>
|
@@ -44,10 +43,10 @@ dependencies:
|
|
44
43
|
version: 0.2.8
|
45
44
|
type: :runtime
|
46
45
|
prerelease: false
|
47
|
-
version_requirements: *
|
46
|
+
version_requirements: *2160188000
|
48
47
|
- !ruby/object:Gem::Dependency
|
49
48
|
name: sinatra-flash
|
50
|
-
requirement: &
|
49
|
+
requirement: &2160187420 !ruby/object:Gem::Requirement
|
51
50
|
none: false
|
52
51
|
requirements:
|
53
52
|
- - ! '>='
|
@@ -55,10 +54,10 @@ dependencies:
|
|
55
54
|
version: '0'
|
56
55
|
type: :runtime
|
57
56
|
prerelease: false
|
58
|
-
version_requirements: *
|
57
|
+
version_requirements: *2160187420
|
59
58
|
- !ruby/object:Gem::Dependency
|
60
59
|
name: haml
|
61
|
-
requirement: &
|
60
|
+
requirement: &2160186660 !ruby/object:Gem::Requirement
|
62
61
|
none: false
|
63
62
|
requirements:
|
64
63
|
- - ! '>='
|
@@ -66,10 +65,10 @@ dependencies:
|
|
66
65
|
version: 3.1.3
|
67
66
|
type: :runtime
|
68
67
|
prerelease: false
|
69
|
-
version_requirements: *
|
68
|
+
version_requirements: *2160186660
|
70
69
|
- !ruby/object:Gem::Dependency
|
71
70
|
name: activerecord
|
72
|
-
requirement: &
|
71
|
+
requirement: &2160185800 !ruby/object:Gem::Requirement
|
73
72
|
none: false
|
74
73
|
requirements:
|
75
74
|
- - ~>
|
@@ -77,10 +76,10 @@ dependencies:
|
|
77
76
|
version: 3.1.0
|
78
77
|
type: :runtime
|
79
78
|
prerelease: false
|
80
|
-
version_requirements: *
|
79
|
+
version_requirements: *2160185800
|
81
80
|
- !ruby/object:Gem::Dependency
|
82
81
|
name: activeresource
|
83
|
-
requirement: &
|
82
|
+
requirement: &2160185300 !ruby/object:Gem::Requirement
|
84
83
|
none: false
|
85
84
|
requirements:
|
86
85
|
- - ~>
|
@@ -88,7 +87,7 @@ dependencies:
|
|
88
87
|
version: 3.1.0
|
89
88
|
type: :runtime
|
90
89
|
prerelease: false
|
91
|
-
version_requirements: *
|
90
|
+
version_requirements: *2160185300
|
92
91
|
description:
|
93
92
|
email:
|
94
93
|
- artem.avetisyan@bbc.co.uk
|
@@ -204,7 +203,6 @@ files:
|
|
204
203
|
- views/redirects/edit.haml
|
205
204
|
- views/redirects/index.haml
|
206
205
|
- views/redirects/new.haml
|
207
|
-
has_rdoc: true
|
208
206
|
homepage: https://github.com/BBC/rest-assured
|
209
207
|
licenses: []
|
210
208
|
post_install_message:
|
@@ -225,7 +223,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
225
223
|
version: 1.3.1
|
226
224
|
requirements: []
|
227
225
|
rubyforge_project: rest-assured
|
228
|
-
rubygems_version: 1.
|
226
|
+
rubygems_version: 1.8.10
|
229
227
|
signing_key:
|
230
228
|
specification_version: 3
|
231
229
|
summary: A tool for high level mocking/stubbing HTTP based REST services
|