Commit faa3c681
Changed files (5)
app
controllers
models
config
spec
controllers
app/controllers/sessions_controller.rb
@@ -2,4 +2,16 @@ class SessionsController < ApplicationController
def new
@session = Session.new
end
+
+ def create
+ user_session = Session.login(session_params[:username], session_params[:password])
+ cookies.signed[:cookie_monster] = user_session.id
+ render nothing: true
+ end
+
+ private
+
+ def session_params
+ params.require(:session).permit(:username, :password)
+ end
end
app/models/session.rb
@@ -1,5 +1,9 @@
class Session
+ attr_accessor :id
def persisted?
end
+
+ def self.login(username, password)
+ end
end
config/routes.rb
@@ -33,7 +33,7 @@ Cake::Application.routes.draw do
end
get 'tags/:id' => 'creation_tags#show'
- resources :sessions, only: [:new]
+ resources :sessions, only: [:new, :create]
# /search
get "search" => 'search#index'
spec/controllers/sessions_controller_spec.rb
@@ -8,4 +8,20 @@ describe SessionsController do
expect(assigns(:session)).to be_new_record
end
end
+
+ describe "#create" do
+ context "when the username and password is correct" do
+ let(:user_session) { build(:session, id: SecureRandom.uuid) }
+ let(:username) { "joe" }
+ let(:password) { "password" }
+
+ it "returns a valid session" do
+ Session.stub(:login).with(username, password).and_return(user_session)
+
+ post :create, session: { username: username, password: password }
+ expect(cookies.signed[:cookie_monster]).to_not be_nil
+ expect(cookies.signed[:cookie_monster]).to eql(user_session.id)
+ end
+ end
+ end
end
spec/factories.rb
@@ -21,6 +21,9 @@ FactoryGirl.define do
association :category
end
+ factory :session, class: Session do
+ end
+
factory :favorite do
user { FactoryGirl.create(:user) }
creation { FactoryGirl.create(:creation) }