KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Working with RSpec & Capybara, I'm getting an interesting test failure mode which goes away with a few subtle rearrangements of lines in the test case...stuff that shouldn't matter. I'm developing my own authentication system. It is currently working and I can login/out with the browser and the session works etc etc. However, trying to test this is failing. Something is going on that I don't quite understand, which seems to depend on the order of (seemingly) unrelated calls. require 'spec_helper' describe "Sessions" do it 'allows user to login' do #line one user = Factory(:user) #For SO, this method hashes the input password and saves the record user.password! '2468' #line two visit '/sessions/index' fill_in 'Email', :with => user.email fill_in 'Password', :with => '2468' click_button 'Sign in' page.should have_content('Logged in') end end As is, that test fails...the login fails. After inserting 'debugger' calls into both the spec and the controller I can see why: the user is not getting inserted into the database as far as the controller is concerned: Edit adding in ApplicationController class ApplicationController < ActionController::Base helper :all protect_from_forgery helper_method :user_signed_in?, :guest_user?, :current_user def user_signed_in? !(session[:user_id].nil? || current_user.new_record?) end def guest_user? current_user.new_record? end def current_user @current_user ||= session[:user_id].nil? ? User.new : User.find(session[:user_id]) rescue ActiveRecord::RecordNotFound @current_user = User.new flash[:notice] = 'You\'ve been logged out.' end end class SessionsController < ApplicationController def login user = User.where(:email=>params[:user][:email]).first debugger ### if !user.nil? && user.valid_password?(params[:user][:pas
Tags (comma-separated)
Save Edits
Cancel