@@ -132,6 +132,45 @@ def session
132132    end 
133133  end 
134134
135+   describe  "/auth/{name}/callback with Rack 2.x and 3.x"  do 
136+     before  do 
137+       stub_request ( :post ,  "https://api.example.org/oauth/access_token" ) . 
138+         to_return ( :body  =>  "oauth_token=yourtoken&oauth_token_secret=yoursecret" ) 
139+     end 
140+ 
141+     context  "Rack 2.x style request"  do 
142+       before  do 
143+         get  "/auth/example.org/callback" ,  { "oauth_verifier"  =>  "dudeman" } ,  "rack.session"  =>  { "oauth"  =>  { "example.org"  =>  { "callback_confirmed"  =>  true ,  "request_token"  =>  "yourtoken" ,  "request_secret"  =>  "yoursecret" } } } 
144+       end 
145+ 
146+       it  "should exchange the request token for an access token"  do 
147+         expect ( last_request . env [ "omniauth.auth" ] [ "provider" ] ) . to  eq ( "example.org" ) 
148+         expect ( last_request . env [ "omniauth.auth" ] [ "extra" ] [ "access_token" ] ) . to  be_kind_of ( OAuth ::AccessToken ) 
149+       end 
150+ 
151+       it  "should call through to the master app"  do 
152+         expect ( last_response . body ) . to  eq ( "true" ) 
153+       end 
154+     end 
155+ 
156+     context  "Rack 3.x style request"  do 
157+       before  do 
158+         # Simulate Rack 3.x behavior by putting oauth_verifier in the params 
159+         allow_any_instance_of ( Rack ::Request ) . to  receive ( :params ) . and_return ( { "oauth_verifier"  =>  "dudeman" } ) 
160+         get  "/auth/example.org/callback" ,  { } ,  "rack.session"  =>  { "oauth"  =>  { "example.org"  =>  { "callback_confirmed"  =>  true ,  "request_token"  =>  "yourtoken" ,  "request_secret"  =>  "yoursecret" } } } 
161+       end 
162+ 
163+       it  "should exchange the request token for an access token"  do 
164+         expect ( last_request . env [ "omniauth.auth" ] [ "provider" ] ) . to  eq ( "example.org" ) 
165+         expect ( last_request . env [ "omniauth.auth" ] [ "extra" ] [ "access_token" ] ) . to  be_kind_of ( OAuth ::AccessToken ) 
166+       end 
167+ 
168+       it  "should call through to the master app"  do 
169+         expect ( last_response . body ) . to  eq ( "true" ) 
170+       end 
171+     end 
172+   end 
173+ 
135174  describe  "/auth/{name}/callback with expired session"  do 
136175    before  do 
137176      stub_request ( :post ,  "https://api.example.org/oauth/access_token" ) . 
0 commit comments