@@ -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