forked from External/greenlight
76 lines
1.9 KiB
Ruby
76 lines
1.9 KiB
Ruby
require 'test_helper'
|
|
|
|
class SessionsControllerTest < ActionDispatch::IntegrationTest
|
|
|
|
def setup
|
|
@steve = users(:steve)
|
|
@kitchen = rooms(:kitchen)
|
|
|
|
@steve.room = @kitchen
|
|
end
|
|
|
|
test 'can get login page.' do
|
|
get login_path
|
|
assert_response :success
|
|
end
|
|
|
|
test 'can signin with greenlight account.' do
|
|
post create_session_path, params: {session: {email: @steve.email, password: "steve12345"}}
|
|
|
|
assert_redirected_to room_path(@steve.room.uid)
|
|
assert @steve.id, session[:user_id]
|
|
end
|
|
|
|
test 'can signup/login with omniauth.' do
|
|
email = "omniauth@test.com"
|
|
uid = "123456789"
|
|
|
|
OmniAuth.config.add_mock(:twitter, {
|
|
provider: "twitter",
|
|
uid: uid,
|
|
info: {
|
|
email: email,
|
|
name: "Omni User",
|
|
nickname: "username"
|
|
}
|
|
})
|
|
|
|
get "/auth/twitter"
|
|
|
|
request.env['omniauth.auth'] = OmniAuth.config.mock_auth[:twitter]
|
|
get omniauth_session_path(provider: "twitter")
|
|
|
|
user = User.find_by(email: email, uid: uid)
|
|
|
|
assert_not_nil user
|
|
assert_redirected_to room_path(user.room.uid)
|
|
assert user.id, session[:user_id]
|
|
end
|
|
|
|
test 'handles omniauth failure.' do
|
|
OmniAuth.config.on_failure = Proc.new do |env|
|
|
OmniAuth::FailureEndpoint.new(env).redirect_to_failure
|
|
end
|
|
|
|
OmniAuth.config.mock_auth[:twitter] = :invalid_credentials
|
|
|
|
get "/auth/twitter"
|
|
|
|
request.env['omniauth.auth'] = OmniAuth.config.mock_auth[:twitter]
|
|
|
|
assert_no_difference 'User.count' do
|
|
get omniauth_session_path(provider: "twitter")
|
|
end
|
|
|
|
assert_redirected_to auth_failure_path(message: "invalid_credentials", strategy: "twitter")
|
|
end
|
|
|
|
test 'can logout.' do
|
|
post create_session_path, params: {session: {email: @steve.email, password: "steve12345"}}
|
|
assert @steve.id, session[:user_id]
|
|
|
|
get logout_path
|
|
assert_not_equal @steve.id, session[:user_id]
|
|
end
|
|
end
|