describe Administrations::OmniauthCallbacksController, type: :controller do before(:each) do @request.env["devise.mapping"] = Devise.mappings[:administration] end describe 'POST #github' do let(:params) { { "info" => { "email" => email } } } before do allow(controller).to receive(:sign_in).and_return true @request.env["omniauth.auth"] = params end subject { post :github } context 'with an authorized email' do let(:email) { "ivan@tps.fr" } let(:administration) { create(:administration, email: email) } before { administration } it { is_expected.to redirect_to(manager_administrateurs_path) } it do expect(controller).to receive(:sign_in).with(administration) subject end end context 'with an unauthorized email' do let(:email) { "michel@tps.fr" } it { is_expected.to redirect_to(root_path) } it do expect(controller).to_not receive(:sign_in) subject end end end end