Commit e39a368
Changed files (4)
app
controllers
spec
app/controllers/sessions_controller.rb
@@ -3,12 +3,12 @@ class SessionsController < ApplicationController
layout "public"
def create
- user = User.authenticate(params[:username], params[:password])
+ user = User.authenticate(params[:user][:username], params[:user][:password])
if user.present?
session[:user_id] = user.id
- render :nothing => true
+ redirect_to dashboard_path
else
- flash[:warning] = t(".invalid_login")
+ flash[:warning] = t("sessions.create.invalid_login")
redirect_to new_session_path
end
end
spec/controllers/sessions_controller_spec.rb
@@ -9,12 +9,12 @@ describe SessionsController do
context "when credentials are correct" do
it "logs you in with email" do
- post :create, { username: user.email, password: "password" }
+ post :create, { user: { username: user.email, password: "password" } }
expect(session[:user_id]).to eql(user.id)
end
it "logs you in with username" do
- post :create, { username: user.username, password: "password" }
+ post :create, { user: { username: user.username, password: "password" } }
expect(session[:user_id]).to eql(user.id)
end
@@ -23,12 +23,12 @@ describe SessionsController do
context "when credentials are incorrect" do
it "displays errors" do
- post :create, { username: user.username, password: "wrong" }
+ post :create, { user: { username: user.username, password: "wrong" } }
expect(flash[:warning]).to_not be_empty
end
it "redirects to the login page" do
- post :create, { username: user.username, password: "wrong" }
+ post :create, { user: { username: user.username, password: "wrong" } }
expect(response).to redirect_to(new_session_path)
end
spec/features/sessions_spec.rb
@@ -0,0 +1,13 @@
+require "rails_helper"
+
+describe "Sessions" do
+ subject { LoginPage.new }
+ let(:user){ create(:user,:password => "password") }
+ context "credentials are correct" do
+ it "takes you to your dashboard" do
+ subject.visit_page
+ subject.login_with(user.username, "password")
+ expect(current_path).to eql(dashboard_path)
+ end
+ end
+end
\ No newline at end of file
spec/support/pages/login_page.rb
@@ -0,0 +1,17 @@
+require_relative "../page_model.rb"
+
+class LoginPage < PageModel
+
+ def initialize
+ super new_session_path
+ end
+
+ def login_with(username, password)
+ within("#new_user") do
+ fill_in I18n.translate("sessions.new.username"), :with => username
+ fill_in I18n.translate("sessions.new.password"), :with => password
+ click_button I18n.translate("sessions.new.login_button")
+ end
+ end
+
+end
\ No newline at end of file