mirror of
https://github.com/tildeverse/lobsters
synced 2024-06-21 07:57:03 +00:00
add specs for LoginController
This commit is contained in:
parent
20dfcb963d
commit
26a9cadc10
48
spec/controllers/login_controller_spec.rb
Normal file
48
spec/controllers/login_controller_spec.rb
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
require "rails_helper"
|
||||||
|
|
||||||
|
describe LoginController do
|
||||||
|
let(:user) { create(:user, password: 'asdf') }
|
||||||
|
let(:banned) { create(:user, :banned, password: 'asdf') }
|
||||||
|
let(:deleted) { create(:user, :deleted, password: 'asdf') }
|
||||||
|
let(:banned_gone) { create(:user, :banned, :gone, password: 'asdf') }
|
||||||
|
let(:deleted_gone) { create(:user, :deleted, :gone, password: 'asdf') }
|
||||||
|
|
||||||
|
it "logs in with email and correct password" do
|
||||||
|
post :login, params: { email: user.email, password: 'asdf' }
|
||||||
|
expect(flash[:error]).to be_nil
|
||||||
|
expect(response).to redirect_to('/')
|
||||||
|
end
|
||||||
|
|
||||||
|
it "logs in with username and correct password" do
|
||||||
|
post :login, params: { email: user.username, password: 'asdf' }
|
||||||
|
expect(session[:u]).to eq(user.session_token)
|
||||||
|
expect(flash[:error]).to be_nil
|
||||||
|
expect(response).to redirect_to('/')
|
||||||
|
end
|
||||||
|
|
||||||
|
it "doesn't log in without correct password" do
|
||||||
|
post :login, params: { email: user.email, password: 'wrong' }
|
||||||
|
expect(session[:u]).to be_nil
|
||||||
|
expect(flash[:error]).to match(/Invalid/i)
|
||||||
|
|
||||||
|
post :login, params: { email: user.email, password: '' }
|
||||||
|
expect(session[:u]).to be_nil
|
||||||
|
expect(flash[:error]).to match(/Invalid/i)
|
||||||
|
|
||||||
|
post :login, params: { email: user.email }
|
||||||
|
expect(session[:u]).to be_nil
|
||||||
|
expect(flash[:error]).to match(/Invalid/i)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "doesn't allow login by banned users" do
|
||||||
|
post :login, params: { email: banned.email, password: 'asdf' }
|
||||||
|
expect(session[:u]).to be_nil
|
||||||
|
expect(flash[:error]).to match(/banned/)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "doesn't allow login by deleted users" do
|
||||||
|
post :login, params: { email: deleted.email, password: 'asdf' }
|
||||||
|
expect(session[:u]).to be_nil
|
||||||
|
expect(flash[:error]).to match(/deleted/)
|
||||||
|
end
|
||||||
|
end
|
|
@ -24,6 +24,9 @@ FactoryBot.define do
|
||||||
username { 'inactive-user' }
|
username { 'inactive-user' }
|
||||||
to_create {|user| user.save(validate: false) }
|
to_create {|user| user.save(validate: false) }
|
||||||
end
|
end
|
||||||
|
trait(:deleted) do
|
||||||
|
deleted_at { Time.current }
|
||||||
|
end
|
||||||
trait(:admin) do
|
trait(:admin) do
|
||||||
is_admin { true }
|
is_admin { true }
|
||||||
is_moderator { true }
|
is_moderator { true }
|
||||||
|
|
Loading…
Reference in New Issue
Block a user