diff --git a/app/controllers/landing_controller.rb b/app/controllers/landing_controller.rb index 93062bc2..b02ed8aa 100644 --- a/app/controllers/landing_controller.rb +++ b/app/controllers/landing_controller.rb @@ -48,10 +48,6 @@ class LandingController < ApplicationController render layout: false end - def auth_failure - redirect_to '/' - end - def admin? @user && @user == current_user end diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index cac3140b..01f1f979 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -34,4 +34,8 @@ class SessionsController < ApplicationController end redirect_to root_path end + + def auth_failure + redirect_to '/' + end end diff --git a/config/routes.rb b/config/routes.rb index b4f7501a..f9e764ad 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -23,7 +23,7 @@ Rails.application.routes.draw do get '/users/logout', to: 'sessions#destroy', as: :user_logout match '/auth/:provider/callback', to: 'sessions#create', via: [:get, :post] - get '/auth/failure', to: 'landing#auth_failure' + get '/auth/failure', to: 'sessions#auth_failure' # There are two resources [meetings|rooms] # meetings offer a landing page for NON authenticated users to create and join session in BigBlueButton diff --git a/test/controllers/sessions_controller_test.rb b/test/controllers/sessions_controller_test.rb new file mode 100644 index 00000000..544c2b77 --- /dev/null +++ b/test/controllers/sessions_controller_test.rb @@ -0,0 +1,45 @@ +require 'test_helper' + +class SessionsControllerTest < ActionController::TestCase + + setup do + @user = users :user1 + end + + test "should get new" do + get :new + assert_response :success + end + + test "should redirect to home on auth failture" do + get "auth_failure" + assert_redirected_to root_path + end + + test "should not create session without omniauth env set" do + post :create, params: {provider: 'google'} + assert_redirected_to root_path + end + + test "should create session and user" do + provider = 'google' + email = 'new_user@email.com' + request.env['omniauth.auth'] = {'uid' => 'uid', 'provider' => provider, + 'info' => {'name' => 'name', 'email' => email}} + + post :create, params: {provider: provider} + + new_user = User.find_by email: email + + assert_not_nil new_user + assert_redirected_to meeting_room_path(id: new_user.encrypted_id, resource: 'rooms') + assert_equal new_user.id, session[:user_id] + end + + test "should destroy current session" do + session[:user_id] = @user.id + get :destroy + assert_redirected_to root_path + assert_nil session[:user_id] + end +end