about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--spec/controllers/oauth/authorizations_controller_spec.rb40
1 files changed, 31 insertions, 9 deletions
diff --git a/spec/controllers/oauth/authorizations_controller_spec.rb b/spec/controllers/oauth/authorizations_controller_spec.rb
index a5997bba3..5c2a62b48 100644
--- a/spec/controllers/oauth/authorizations_controller_spec.rb
+++ b/spec/controllers/oauth/authorizations_controller_spec.rb
@@ -7,21 +7,43 @@ RSpec.describe Oauth::AuthorizationsController, type: :controller do
 
   let(:app) { Doorkeeper::Application.create!(name: 'test', redirect_uri: 'http://localhost/') }
 
-  before do
-    sign_in Fabricate(:user), scope: :user
-  end
-
   describe 'GET #new' do
-    before do
+    subject do
       get :new, params: { client_id: app.uid, response_type: 'code', redirect_uri: 'http://localhost/' }
     end
 
-    it 'returns http success' do
-      expect(response).to have_http_status(:success)
+    shared_examples 'stores location for user' do
+      it 'stores location for user' do
+        subject
+        expect(controller.stored_location_for(:user)).to eq "/oauth/authorize?client_id=#{app.uid}&redirect_uri=http%3A%2F%2Flocalhost%2F&response_type=code"
+      end
+    end
+
+    context 'when signed in' do
+      before do
+        sign_in Fabricate(:user), scope: :user
+      end
+
+      it 'returns http success' do
+        subject
+        expect(response).to have_http_status(:success)
+      end
+
+      it 'gives options to authorize and deny' do
+        subject
+        expect(response.body).to match(/Authorize/)
+      end
+
+      include_examples 'stores location for user'
     end
 
-    it 'gives options to authorize and deny' do
-      expect(response.body).to match(/Authorize/)
+    context 'when not signed in' do
+      it 'redirects' do
+        subject
+        expect(response).to redirect_to '/auth/sign_in'
+      end
+
+      include_examples 'stores location for user'
     end
   end
 end