Setup user login/logout #21
3 changed files with 48 additions and 0 deletions
22
app/models/session.rb
Normal file
22
app/models/session.rb
Normal file
|
@ -0,0 +1,22 @@
|
|||
class Session
|
||||
include ActiveModel::Model
|
||||
|
||||
include ActiveModel::Attributes
|
||||
include ActiveModel::Validations
|
||||
|
||||
attr_accessor :user_id
|
||||
|
||||
attribute :email, :string
|
||||
attribute :password, :string
|
||||
|
||||
validates :email, presence: true
|
||||
validates :password, presence: true
|
||||
|
||||
def save
|
||||
user = User.authenticate_by(email: email, password: password)
|
||||
|
||||
@user_id = user && user.id
|
||||
|
||||
user.present? && self || nil
|
||||
end
|
||||
end
|
|
@ -1,4 +1,5 @@
|
|||
Rails.application.routes.draw do
|
||||
resources :sessions, only: %i[new create destroy]
|
||||
resources :users
|
||||
resources :credit_card_bills
|
||||
resource :dashboard, only: :show
|
||||
|
|
25
test/models/session_test.rb
Normal file
25
test/models/session_test.rb
Normal file
|
@ -0,0 +1,25 @@
|
|||
require "test_helper"
|
||||
|
||||
class SessionTest < ActiveSupport::TestCase
|
||||
def test_save_when_exists
|
||||
user = users(:one)
|
||||
|
||||
session = Session.new(email: user.email, password: "secret")
|
||||
|
||||
assert session.save
|
||||
end
|
||||
|
||||
def test_save_when_not_exists
|
||||
session = Session.new(email: "fake@example.org", password: "secret")
|
||||
|
||||
refute session.save
|
||||
end
|
||||
|
||||
def test_save_when_password_incorrect
|
||||
user = users(:one)
|
||||
|
||||
session = Session.new(email: user.email, password: "bad_password")
|
||||
|
||||
refute session.save
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue