From 4a6c1f4f8d11d04717484350014a592a6e7ee814 Mon Sep 17 00:00:00 2001 From: Tonmoy Roy Date: Thu, 5 Nov 2015 16:27:30 -0500 Subject: [PATCH] Initial example for omniauth callbacks controller Fix syntax error Add devise controller test bypass Mock from_cas method for User model Change assertion for omniauth callbacks controller Add example for non persistent user Make omniauth callbacks controller example for persistent user non-hardcoded Fix omniauth callbacks controller example for non-persistent user Add forgotten get :cas in omniauth callbacks controller spec example Change omniauth callback controller redirect url --- .../users/omniauth_callbacks_controller.rb | 2 +- .../omniauth_callbacks_controller_spec.rb | 25 ++++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/app/controllers/users/omniauth_callbacks_controller.rb b/app/controllers/users/omniauth_callbacks_controller.rb index 12b7771..94f3493 100644 --- a/app/controllers/users/omniauth_callbacks_controller.rb +++ b/app/controllers/users/omniauth_callbacks_controller.rb @@ -7,7 +7,7 @@ def cas set_flash_message(:notice, :success, kind: "CAS") if is_navigational_format? else session['devise.cas_data'] = request.env['omniauth.auth'] - redirect_to new_user_registration_url + redirect_to root_url end end end diff --git a/spec/controllers/users/omniauth_callbacks_controller_spec.rb b/spec/controllers/users/omniauth_callbacks_controller_spec.rb index 0d9e72b..ca5d3da 100644 --- a/spec/controllers/users/omniauth_callbacks_controller_spec.rb +++ b/spec/controllers/users/omniauth_callbacks_controller_spec.rb @@ -1,5 +1,28 @@ require 'rails_helper' RSpec.describe Users::OmniauthCallbacksController, type: :controller do - pending "can't find a way to test cas" + describe '#cas' do + let(:user) {FactoryGirl.create(:user)} + + before do + request.env['devise.mapping'] = Devise.mappings[:user] + end + + context 'for persistent user' do + it 'should redirect to the dashboard' do + allow(User).to receive(:from_cas).and_return(user) + get :cas + expect(response).to redirect_to('/dashboard') + end + end + + context 'for non persistent user' do + it 'should redirect to new user registration page' do + user.delete + allow(User).to receive(:from_cas).and_return(user) + get :cas + expect(response).to redirect_to('/') + end + end + end end