rest-assured 2.0.0 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +4 -0
  3. data/README.markdown +12 -19
  4. data/db/development.db +0 -0
  5. data/db/test.db +0 -0
  6. data/features/ruby_api/test_server.feature +4 -4
  7. data/features/step_definitions/command_line_options_steps.rb +1 -1
  8. data/features/step_definitions/doubles_steps.rb +1 -1
  9. data/features/support/env.rb +3 -3
  10. data/features/support/world_helpers.rb +2 -8
  11. data/lib/rest-assured/api/app_session.rb +6 -1
  12. data/lib/rest-assured/api/server.rb +2 -14
  13. data/lib/rest-assured/config.rb +10 -3
  14. data/lib/rest-assured/models/double.rb +0 -2
  15. data/lib/rest-assured/models/redirect.rb +1 -3
  16. data/lib/rest-assured/routes/double.rb +2 -2
  17. data/lib/rest-assured/version.rb +1 -1
  18. data/spec/api/app_session_spec.rb +11 -5
  19. data/spec/api/resource_double_spec.rb +14 -13
  20. data/spec/api/server_spec.rb +38 -43
  21. data/spec/config_spec.rb +3 -3
  22. data/spec/functional/double_routes_spec.rb +53 -53
  23. data/spec/functional/redirect_routes_spec.rb +27 -27
  24. data/spec/functional/response_spec.rb +18 -18
  25. data/spec/models/double_spec.rb +22 -27
  26. data/spec/models/redirect_spec.rb +12 -15
  27. data/spec/models/request_spec.rb +4 -4
  28. data/spec/port_explorer_spec.rb +3 -3
  29. data/spec/spec_helper.rb +30 -22
  30. metadata +24 -37
  31. data/.gitignore +0 -9
  32. data/.rspec +0 -1
  33. data/.travis.yml +0 -15
  34. data/Gemfile +0 -36
  35. data/Gemfile.lock +0 -176
  36. data/Guardfile +0 -10
  37. data/Procfile +0 -1
  38. data/Rakefile +0 -2
  39. data/bin/console +0 -11
  40. data/bin/heroku_runner +0 -27
  41. data/cucumber.yml +0 -3
  42. data/features/support/test-server.rb +0 -35
  43. data/rest-assured.gemspec +0 -31
@@ -13,18 +13,18 @@ module RestAssured
13
13
  describe 'cmd args array conversion' do
14
14
  it 'converts true values in form of "value" => ["--#{value}"]' do
15
15
  Config.build(:ssl => true)
16
- Config.to_cmdargs.should == ['--ssl']
16
+ expect(Config.to_cmdargs).to eq(['--ssl'])
17
17
  end
18
18
 
19
19
  it 'does not include false values' do
20
20
  Config.build(:ssl => false)
21
- Config.to_cmdargs.should_not include('--ssl')
21
+ expect(Config.to_cmdargs).not_to include('--ssl')
22
22
  end
23
23
 
24
24
  it 'converts key value pairs in form of "key => value" => ["--#{key}", "value"]' do
25
25
  Config.build(:port => 1234, :database => ':memory:')
26
26
  Config.to_cmdargs.each_slice(2) do |a|
27
- (a == ['--port', '1234'] || a == ['--database', ':memory:']).should == true
27
+ expect(a == ['--port', '1234'] || a == ['--database', ':memory:']).to eq(true)
28
28
  end
29
29
  end
30
30
  end
@@ -33,7 +33,7 @@ module RestAssured
33
33
  context "Web UI", :ui => true do
34
34
  it "makes doubles index root page" do
35
35
  visit '/'
36
- current_path.should == '/doubles'
36
+ expect(current_path).to eq('/doubles')
37
37
  end
38
38
 
39
39
  # this is tested in cucumber
@@ -43,47 +43,47 @@ module RestAssured
43
43
 
44
44
  visit '/doubles'
45
45
 
46
- page.should have_content(f.fullpath)
47
- page.should have_content(f.description)
48
- page.should have_content(f.verb)
49
- page.should have_content(f1.fullpath)
50
- page.should have_content(f1.description)
51
- page.should have_content(f1.verb)
46
+ expect(page).to have_content(f.fullpath)
47
+ expect(page).to have_content(f.description)
48
+ expect(page).to have_content(f.verb)
49
+ expect(page).to have_content(f1.fullpath)
50
+ expect(page).to have_content(f1.description)
51
+ expect(page).to have_content(f1.verb)
52
52
  end
53
53
 
54
54
  it "renders form for creating new double" do
55
55
  visit '/doubles/new'
56
56
 
57
- page.should have_css('#double_fullpath')
58
- page.should have_css('#double_content')
59
- page.should have_css('#double_verb')
60
- page.should have_css('#double_description')
57
+ expect(page).to have_css('#double_fullpath')
58
+ expect(page).to have_css('#double_content')
59
+ expect(page).to have_css('#double_verb')
60
+ expect(page).to have_css('#double_description')
61
61
  end
62
62
 
63
63
  it "creates double" do
64
64
  post '/doubles', valid_params
65
65
  follow_redirect!
66
66
 
67
- last_request.fullpath.should == '/doubles'
68
- last_response.body.should =~ /Double created/
67
+ expect(last_request.fullpath).to eq('/doubles')
68
+ expect(last_response.body).to match(/Double created/)
69
69
 
70
70
  d = Models::Double.where(test_double.except(:response_headers)).first
71
- d.response_headers['ACCEPT'].should == 'text/html'
71
+ expect(d.response_headers['ACCEPT']).to eq('text/html')
72
72
  end
73
73
 
74
74
  it "reports failure when creating with invalid parameters" do
75
75
  post '/doubles', invalid_params
76
76
 
77
- last_response.should be_ok
78
- last_response.body.should =~ /Crumps!.*Fullpath can't be blank/
77
+ expect(last_response).to be_ok
78
+ expect(last_response.body).to match(/Crumps!.*Fullpath can't be blank/)
79
79
  end
80
80
 
81
81
  it "renders double edit form" do
82
82
  f = Models::Double.create test_double
83
83
  visit "/doubles/#{f.id}/edit"
84
84
 
85
- find('#double_fullpath').value.should == f.fullpath
86
- find('#double_content').value.should == f.content
85
+ expect(find('#double_fullpath').value).to eq(f.fullpath)
86
+ expect(find('#double_content').value).to eq(f.content)
87
87
  end
88
88
 
89
89
  it "updates double" do
@@ -92,13 +92,13 @@ module RestAssured
92
92
  put "/doubles/#{f.id}", 'double[fullpath]' => '/some/other/api'
93
93
  follow_redirect!
94
94
 
95
- last_request.fullpath.should == '/doubles'
96
- last_response.body.should =~ /Double updated/
97
- f.reload.fullpath.should == '/some/other/api'
98
- f.content.should == test_double[:content]
99
- f.verb.should == test_double[:verb]
100
- f.status.to_s.should == test_double[:status]
101
- f.response_headers.should == test_double[:response_headers]
95
+ expect(last_request.fullpath).to eq('/doubles')
96
+ expect(last_response.body).to match(/Double updated/)
97
+ expect(f.reload.fullpath).to eq('/some/other/api')
98
+ expect(f.content).to eq(test_double[:content])
99
+ expect(f.verb).to eq(test_double[:verb])
100
+ expect(f.status.to_s).to eq(test_double[:status])
101
+ expect(f.response_headers).to eq(test_double[:response_headers])
102
102
  end
103
103
 
104
104
  it "chooses active double" do
@@ -106,8 +106,8 @@ module RestAssured
106
106
 
107
107
  ajax "/doubles/#{f.id}", :as => :put, :active => true
108
108
 
109
- last_response.should be_ok
110
- last_response.body.should == 'Changed'
109
+ expect(last_response).to be_ok
110
+ expect(last_response.body).to eq('Changed')
111
111
  end
112
112
 
113
113
  it "deletes double" do
@@ -116,10 +116,10 @@ module RestAssured
116
116
  delete "/doubles/#{f.id}"
117
117
  follow_redirect!
118
118
 
119
- last_response.should be_ok
120
- last_response.body.should =~ /Double deleted/
119
+ expect(last_response).to be_ok
120
+ expect(last_response.body).to match(/Double deleted/)
121
121
 
122
- Models::Double.exists?(test_double.except(:response_headers)).should be_false
122
+ expect(Models::Double.exists?(test_double.except(:response_headers))).to be_falsey
123
123
  end
124
124
  end
125
125
 
@@ -127,17 +127,17 @@ module RestAssured
127
127
  it "creates double" do
128
128
  post '/doubles.json', test_double
129
129
 
130
- last_response.should be_ok
130
+ expect(last_response).to be_ok
131
131
 
132
132
  d = Models::Double.where(test_double.except(:response_headers)).first
133
- d.response_headers['ACCEPT'].should == 'text/html'
133
+ expect(d.response_headers['ACCEPT']).to eq('text/html')
134
134
  end
135
135
 
136
136
  it "reports failure when creating with invalid parameters" do
137
137
  post '/doubles.json', test_double.except(:fullpath)
138
138
 
139
- last_response.should_not be_ok
140
- last_response.body.should =~ /\{"fullpath":\["can't be blank"\]\}/
139
+ expect(last_response).not_to be_ok
140
+ expect(last_response.body).to match(/\{"fullpath":\["can't be blank"\]\}/)
141
141
  end
142
142
 
143
143
  it "deletes double" do
@@ -145,9 +145,9 @@ module RestAssured
145
145
 
146
146
  delete "/doubles/#{f.id}.json"
147
147
 
148
- last_response.should be_ok
148
+ expect(last_response).to be_ok
149
149
 
150
- Models::Double.exists?(test_double.except(:response_headers)).should be_false
150
+ expect(Models::Double.exists?(test_double.except(:response_headers))).to be_falsey
151
151
  end
152
152
 
153
153
  it "deletes all doubles" do
@@ -155,39 +155,39 @@ module RestAssured
155
155
 
156
156
  delete '/doubles/all'
157
157
 
158
- last_response.should be_ok
159
- Models::Double.count.should == 0
158
+ expect(last_response).to be_ok
159
+ expect(Models::Double.count).to eq(0)
160
160
  end
161
161
  end
162
162
 
163
163
  context 'REST (ActiveResource compatible) json api', :ui => false do
164
164
  it "gets list of doubles" do
165
- f = Models::Double.create test_double
166
- f1 = Models::Double.create test_double.merge(:verb => 'GET')
165
+ Models::Double.create test_double
166
+ Models::Double.create test_double.merge(:verb => 'GET')
167
167
 
168
168
  get '/doubles.json'
169
169
 
170
- json = MultiJson.load(last_response.body)
170
+ json = JSON.load(last_response.body)
171
171
 
172
- json.first['double']['verb'].should == 'POST'
173
- json.last['double']['verb'].should == 'GET'
172
+ expect(json.first['verb']).to eq('POST')
173
+ expect(json.last['verb']).to eq('GET')
174
174
  end
175
175
 
176
176
  it "creates double as AR resource" do
177
- post '/doubles.json', { :double => test_double }.to_json, 'CONTENT_TYPE' => 'Application/json'
177
+ post '/doubles.json', test_double.to_json, 'CONTENT_TYPE' => 'Application/json'
178
178
 
179
- last_response.should be_ok
179
+ expect(last_response).to be_ok
180
180
 
181
181
  d = Models::Double.where(test_double.except(:response_headers)).first
182
- d.response_headers['ACCEPT'].should == 'text/html'
183
- last_response.body.should == d.to_json
182
+ expect(d.response_headers['ACCEPT']).to eq('text/html')
183
+ expect(last_response.body).to eq(d.to_json)
184
184
  end
185
185
 
186
186
  it "reports failure when creating with invalid parameters" do
187
- post '/doubles.json', { :double => test_double.except(:fullpath) }.to_json, 'CONTENT_TYPE' => 'Application/json'
187
+ post '/doubles.json', test_double.except(:fullpath).to_json, 'CONTENT_TYPE' => 'Application/json'
188
188
 
189
- last_response.should_not be_ok
190
- last_response.body.should =~ /\{"fullpath":\["can't be blank"\]\}/
189
+ expect(last_response).not_to be_ok
190
+ expect(last_response.body).to match(/\{"fullpath":\["can't be blank"\]\}/)
191
191
  end
192
192
 
193
193
  it 'loads double as AR resource' do
@@ -195,14 +195,14 @@ module RestAssured
195
195
 
196
196
  get "/doubles/#{d.id}.json", 'CONTENT_TYPE' => 'Application/json'
197
197
 
198
- last_response.should be_ok
199
- last_response.body.should == d.to_json(:include => :requests)
198
+ expect(last_response).to be_ok
199
+ expect(last_response.body).to eq(d.to_json(:include => :requests))
200
200
  end
201
201
 
202
202
  it '404s if double is not found' do
203
203
  get "/doubles/345345.json", 'CONTENT_TYPE' => 'Application/json'
204
204
 
205
- last_response.status.should == 404
205
+ expect(last_response.status).to eq(404)
206
206
  end
207
207
  end
208
208
  end
@@ -20,39 +20,39 @@ module RestAssured
20
20
 
21
21
  visit '/redirects'
22
22
 
23
- page.should have_content(r.pattern)
24
- page.should have_content(r.to)
23
+ expect(page).to have_content(r.pattern)
24
+ expect(page).to have_content(r.to)
25
25
  end
26
26
 
27
27
  it "shows form for creating new redirect" do
28
28
  visit '/redirects/new'
29
29
 
30
- page.should have_css('#redirect_pattern')
31
- page.should have_css('#redirect_to')
30
+ expect(page).to have_css('#redirect_pattern')
31
+ expect(page).to have_css('#redirect_to')
32
32
  end
33
33
 
34
34
  it "creates redirect" do
35
35
  post '/redirects', valid_params
36
36
  follow_redirect!
37
37
 
38
- last_request.fullpath.should == '/redirects'
39
- last_response.body.should =~ /Redirect created/
40
- Models::Redirect.exists?(redirect).should be true
38
+ expect(last_request.fullpath).to eq('/redirects')
39
+ expect(last_response.body).to match(/Redirect created/)
40
+ expect(Models::Redirect.exists?(redirect)).to be true
41
41
  end
42
42
 
43
43
  it "reports failure when creating with invalid parameters" do
44
44
  post '/redirects', invalid_params
45
45
 
46
- last_response.should be_ok
47
- last_response.body.should =~ /Crumps!.*Pattern can't be blank/
46
+ expect(last_response).to be_ok
47
+ expect(last_response.body).to match(/Crumps!.*Pattern can't be blank/)
48
48
  end
49
49
 
50
50
  it "brings up redirect edit form" do
51
51
  r = Models::Redirect.create redirect
52
52
  visit "/redirects/#{r.id}/edit"
53
53
 
54
- find('#redirect_pattern').value.should == r.pattern
55
- find('#redirect_to').value.should == r.to
54
+ expect(find('#redirect_pattern').value).to eq(r.pattern)
55
+ expect(find('#redirect_to').value).to eq(r.to)
56
56
  end
57
57
 
58
58
  it "updates redirect" do
@@ -61,9 +61,9 @@ module RestAssured
61
61
  put "/redirects/#{r.id}", 'redirect[to]' => '/some/other/api'
62
62
  follow_redirect!
63
63
 
64
- last_request.fullpath.should == '/redirects'
65
- last_response.body.should =~ /Redirect updated/
66
- r.reload.to.should == '/some/other/api'
64
+ expect(last_request.fullpath).to eq('/redirects')
65
+ expect(last_response.body).to match(/Redirect updated/)
66
+ expect(r.reload.to).to eq('/some/other/api')
67
67
  end
68
68
 
69
69
  it "reorders redirects" do
@@ -72,10 +72,10 @@ module RestAssured
72
72
 
73
73
  put "/redirects/reorder", :redirect => [r2.id, r1.id]
74
74
 
75
- last_response.should be_ok
76
- last_response.body.should == 'Changed'
77
- r1.reload.position.should == 1
78
- r2.reload.position.should == 0
75
+ expect(last_response).to be_ok
76
+ expect(last_response.body).to eq('Changed')
77
+ expect(r1.reload.position).to eq(1)
78
+ expect(r2.reload.position).to eq(0)
79
79
  end
80
80
 
81
81
  it "deletes redirect" do
@@ -84,10 +84,10 @@ module RestAssured
84
84
  delete "/redirects/#{f.id}"
85
85
  follow_redirect!
86
86
 
87
- last_response.should be_ok
88
- last_response.body.should =~ /Redirect deleted/
87
+ expect(last_response).to be_ok
88
+ expect(last_response.body).to match(/Redirect deleted/)
89
89
 
90
- Models::Redirect.exists?(redirect).should be_false
90
+ expect(Models::Redirect.exists?(redirect)).to be_falsey
91
91
  end
92
92
  end
93
93
 
@@ -95,15 +95,15 @@ module RestAssured
95
95
  it "creates redirect" do
96
96
  post '/redirects.json', redirect
97
97
 
98
- last_response.should be_ok
99
- Models::Redirect.count.should == 1
98
+ expect(last_response).to be_ok
99
+ expect(Models::Redirect.count).to eq(1)
100
100
  end
101
101
 
102
102
  it "reports failure when creating with invalid parameters" do
103
103
  post '/redirects.json', redirect.except(:pattern)
104
104
 
105
- last_response.should_not be_ok
106
- last_response.body.should =~ /Pattern can't be blank/
105
+ expect(last_response).not_to be_ok
106
+ expect(last_response.body).to match(/Pattern can't be blank/)
107
107
  end
108
108
 
109
109
  it "deletes all redirects" do
@@ -111,8 +111,8 @@ module RestAssured
111
111
 
112
112
  delete '/redirects/all'
113
113
 
114
- last_response.should be_ok
115
- Models::Redirect.count.should == 0
114
+ expect(last_response).to be_ok
115
+ expect(Models::Redirect.count).to eq(0)
116
116
  end
117
117
  end
118
118
  end
@@ -6,7 +6,7 @@ module RestAssured
6
6
  [:get, :post, :put, :delete].each do |verb|
7
7
  it "processes an unknown request" do
8
8
 
9
- Response.should_receive(:perform).with(an_instance_of(RestAssured::Application))
9
+ expect(Response).to receive(:perform).with(an_instance_of(RestAssured::Application))
10
10
  send verb, '/some/path'
11
11
  end
12
12
  end
@@ -31,44 +31,44 @@ module RestAssured
31
31
  :response_headers => { 'ACCEPT' => 'text/html' },
32
32
  :status => 201
33
33
 
34
- request.stub(:fullpath).and_return(@double.fullpath)
34
+ allow(request).to receive(:fullpath).and_return(@double.fullpath)
35
35
  end
36
36
 
37
37
  it "returns double content" do
38
- rest_assured_app.should_receive(:body).with(@double.content)
38
+ expect(rest_assured_app).to receive(:body).with(@double.content)
39
39
 
40
40
  Response.perform(rest_assured_app)
41
41
  end
42
42
 
43
43
  it 'sets response status to the one from double' do
44
- rest_assured_app.should_receive(:status).with(@double.status)
44
+ expect(rest_assured_app).to receive(:status).with(@double.status)
45
45
 
46
46
  Response.perform(rest_assured_app)
47
47
  end
48
48
 
49
49
  it 'sets response headers to those in Double#response_headers' do
50
- rest_assured_app.should_receive(:headers).with(@double.response_headers)
50
+ expect(rest_assured_app).to receive(:headers).with(@double.response_headers)
51
51
 
52
52
  Response.perform(rest_assured_app)
53
53
  end
54
54
 
55
55
  it 'records request' do
56
56
  requests = double
57
- Models::Double.stub_chain('where.first').and_return(double(:requests => requests).as_null_object)
57
+ allow(Models::Double).to receive_message_chain('where.first').and_return(double(:requests => requests).as_null_object)
58
58
 
59
- requests.should_receive(:create!).with(:rack_env => 'env', :body => 'body', :params => 'params')
59
+ expect(requests).to receive(:create!).with(:rack_env => 'env', :body => 'body', :params => 'params')
60
60
 
61
61
  Response.perform(rest_assured_app)
62
62
  end
63
63
 
64
64
  it "returns double when redirect matches double" do
65
65
  fullpath = '/some/other/path'
66
- request.stub(:fullpath).and_return(fullpath)
67
- Models::Redirect.stub(:find_redirect_url_for).with(fullpath).and_return('/some/path')
66
+ allow(request).to receive(:fullpath).and_return(fullpath)
67
+ allow(Models::Redirect).to receive(:find_redirect_url_for).with(fullpath).and_return('/some/path')
68
68
 
69
- rest_assured_app.should_receive(:body).with(@double.content)
70
- rest_assured_app.should_receive(:status).with(@double.status)
71
- rest_assured_app.should_receive(:headers).with(@double.response_headers)
69
+ expect(rest_assured_app).to receive(:body).with(@double.content)
70
+ expect(rest_assured_app).to receive(:status).with(@double.status)
71
+ expect(rest_assured_app).to receive(:headers).with(@double.response_headers)
72
72
 
73
73
  Response.perform(rest_assured_app)
74
74
  end
@@ -79,16 +79,16 @@ module RestAssured
79
79
  #r = Models::Redirect.create :to => 'http://exmple.com/api', :pattern => '.*'
80
80
  #
81
81
  fullpath = '/some/other/path'
82
- request.stub(:fullpath).and_return(fullpath)
83
- Models::Redirect.stub(:find_redirect_url_for).with(fullpath).and_return('new_url')
82
+ allow(request).to receive(:fullpath).and_return(fullpath)
83
+ allow(Models::Redirect).to receive(:find_redirect_url_for).with(fullpath).and_return('new_url')
84
84
 
85
- rest_assured_app.should_receive(:redirect).with('new_url')
85
+ expect(rest_assured_app).to receive(:redirect).with('new_url')
86
86
 
87
87
  Response.perform(rest_assured_app)
88
88
  end
89
89
 
90
90
  it "returns 404 if neither double nor redirect matches the request" do
91
- rest_assured_app.should_receive(:status).with(404)
91
+ expect(rest_assured_app).to receive(:status).with(404)
92
92
 
93
93
  Response.perform(rest_assured_app)
94
94
  end
@@ -96,9 +96,9 @@ module RestAssured
96
96
  # TODO change to instead exclude anything that does not respond_to?(:to_s)
97
97
  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
98
  requests = double.as_null_object
99
- Models::Double.stub_chain('where.first').and_return(double(:requests => requests).as_null_object)
99
+ allow(Models::Double).to receive_message_chain('where.first').and_return(double(:requests => requests).as_null_object)
100
100
 
101
- env.should_receive(:except).with('rack.input', 'rack.errors', 'rack.logger')
101
+ expect(env).to receive(:except).with('rack.input', 'rack.errors', 'rack.logger')
102
102
 
103
103
  Response.perform(rest_assured_app)
104
104
  end