Commit faa3c681

mo khan <mo@mokhan.ca>
2014-08-06 23:53:00
start to work on the login action.
1 parent 4cee31d
Changed files (5)
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) }