Skip to content

Commit 22e91aa

Browse files
authored
Merge pull request #144 from fwininger/rails_5.1
Add Rails 5.1 tests
2 parents bd79cf2 + 4e0ab78 commit 22e91aa

3 files changed

Lines changed: 44 additions & 58 deletions

File tree

.travis.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@ rvm:
55
- 2.1.9
66
- 2.2.6
77
- 2.3.3
8-
- 2.4.0
8+
- 2.4.1
99
gemfile:
1010
- gemfiles/rails_4.gemfile
1111
- gemfiles/rails_41.gemfile
1212
- gemfiles/rails_42.gemfile
1313
- gemfiles/rails_5.gemfile
14+
- gemfiles/rails_51.gemfile
1415
env:
1516
- TEST_SUITE=rake
1617

@@ -24,8 +25,10 @@ matrix:
2425
exclude:
2526
- rvm: 2.1.9
2627
gemfile: gemfiles/rails_5.gemfile
28+
- rvm: 2.1.9
29+
gemfile: gemfiles/rails_51.gemfile
2730
include:
28-
- rvm: 2.3.3
31+
- rvm: 2.4.1
2932
gemfile: gemfiles/rails_5.gemfile
3033
env: TEST_SUITE="rubocop lib/ spec/"
3134

gemfiles/rails_51.gemfile

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# This file was generated by Appraisal
2+
3+
source "https://rubygems.org"
4+
5+
gem "actionpack", "~> 5.1.1"
6+
gem "activeresource", "~> 5.0.0", git: 'https://github.com/rails/activeresource.git'
7+
gem "activesupport", "~> 5.1.1"
8+
9+
gemspec :path => "../"

spec/railtie_spec.rb

Lines changed: 30 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -15,125 +15,99 @@ def require_api_auth
1515
respond_to do |format|
1616
format.xml { render xml: 'You are unauthorized to perform this action.', status: 401 }
1717
format.json { render json: 'You are unauthorized to perform this action.', status: 401 }
18-
format.html { render text: 'You are unauthorized to perform this action', status: 401 }
18+
format.html { render plain: 'You are unauthorized to perform this action', status: 401 }
1919
end
2020
end
2121
end
2222

2323
class TestController < ApplicationController
24-
before_filter :require_api_auth, only: [:index]
24+
before_action :require_api_auth, only: [:index]
2525

26-
if defined?(ActionDispatch)
27-
def self._routes
28-
ActionDispatch::Routing::RouteSet.new
29-
end
26+
def self._routes
27+
ActionDispatch::Routing::RouteSet.new
3028
end
3129

3230
def index
33-
render text: 'OK'
31+
render json: 'OK'
3432
end
3533

3634
def public
37-
render text: 'OK'
35+
render json: 'OK'
3836
end
3937

4038
def rescue_action(e)
4139
raise(e)
4240
end
4341
end
4442

45-
unless defined?(ActionDispatch)
46-
ActionController::Routing::Routes.draw { |map| map.resources :test }
47-
end
48-
4943
def generated_response(request, action = :index)
50-
if defined?(ActionDispatch)
51-
response = ActionDispatch::TestResponse.new
52-
controller = TestController.new
53-
controller.request = request
54-
controller.response = response
55-
controller.process(action)
56-
response
57-
else
58-
request.action = action.to_s
59-
request.path = "/#{action}"
60-
TestController.new.process(request, ActionController::TestResponse.new)
61-
end
44+
response = ActionDispatch::TestResponse.new
45+
controller = TestController.new
46+
controller.request = request
47+
controller.response = response
48+
controller.process(action)
49+
response
6250
end
6351

64-
it 'should permit a request with properly signed headers' do
52+
def generated_request
6553
request = if ActionController::TestRequest.respond_to?(:create)
66-
ActionController::TestRequest.create
54+
if Gem.loaded_specs['actionpack'].version < Gem::Version.new('5.1.0')
55+
ActionController::TestRequest.create
56+
else
57+
ActionController::TestRequest.create(TestController)
58+
end
6759
else
6860
ActionController::TestRequest.new
6961
end
62+
request.accept = ['application/json']
63+
request
64+
end
65+
66+
it 'should permit a request with properly signed headers' do
67+
request = generated_request
7068
request.env['DATE'] = Time.now.utc.httpdate
7169
ApiAuth.sign!(request, '1044', API_KEY_STORE['1044'])
7270
response = generated_response(request, :index)
7371
expect(response.code).to eq('200')
7472
end
7573

7674
it 'should forbid a request with properly signed headers but timestamp > 15 minutes ago' do
77-
request = if ActionController::TestRequest.respond_to?(:create)
78-
ActionController::TestRequest.create
79-
else
80-
ActionController::TestRequest.new
81-
end
75+
request = generated_request
8276
request.env['DATE'] = 'Mon, 23 Jan 1984 03:29:56 GMT'
8377
ApiAuth.sign!(request, '1044', API_KEY_STORE['1044'])
8478
response = generated_response(request, :index)
8579
expect(response.code).to eq('401')
8680
end
8781

8882
it 'should forbid a request with properly signed headers but timestamp > 15 minutes in the future' do
89-
request = if ActionController::TestRequest.respond_to?(:create)
90-
ActionController::TestRequest.create
91-
else
92-
ActionController::TestRequest.new
93-
end
83+
request = generated_request
9484
request.env['DATE'] = 'Mon, 23 Jan 2100 03:29:56 GMT'
9585
ApiAuth.sign!(request, '1044', API_KEY_STORE['1044'])
9686
response = generated_response(request, :index)
9787
expect(response.code).to eq('401')
9888
end
9989

10090
it "should insert a DATE header in the request when one hasn't been specified" do
101-
request = if ActionController::TestRequest.respond_to?(:create)
102-
ActionController::TestRequest.create
103-
else
104-
ActionController::TestRequest.new
105-
end
91+
request = generated_request
10692
ApiAuth.sign!(request, '1044', API_KEY_STORE['1044'])
10793
expect(request.headers['DATE']).not_to be_nil
10894
end
10995

11096
it 'should forbid an unsigned request to a protected controller action' do
111-
request = if ActionController::TestRequest.respond_to?(:create)
112-
ActionController::TestRequest.create
113-
else
114-
ActionController::TestRequest.new
115-
end
97+
request = generated_request
11698
response = generated_response(request, :index)
11799
expect(response.code).to eq('401')
118100
end
119101

120102
it 'should forbid a request with a bogus signature' do
121-
request = if ActionController::TestRequest.respond_to?(:create)
122-
ActionController::TestRequest.create
123-
else
124-
ActionController::TestRequest.new
125-
end
103+
request = generated_request
126104
request.env['Authorization'] = 'APIAuth bogus:bogus'
127105
response = generated_response(request, :index)
128106
expect(response.code).to eq('401')
129107
end
130108

131109
it 'should allow non-protected controller actions to function as before' do
132-
request = if ActionController::TestRequest.respond_to?(:create)
133-
ActionController::TestRequest.create
134-
else
135-
ActionController::TestRequest.new
136-
end
110+
request = generated_request
137111
response = generated_response(request, :public)
138112
expect(response.code).to eq('200')
139113
end

0 commit comments

Comments
 (0)