lib/elabs_matchers/helpers/session.rb in elabs_matchers-0.0.2 vs lib/elabs_matchers/helpers/session.rb in elabs_matchers-0.0.3
- old
+ new
@@ -1,26 +1,81 @@
module ElabsMatchers
module Helpers
module Session
##
- #
+ # Can be used to keep track of the current signed in user.
+ # If you use signed_in_as(user) this will be done automaticly.
+
+ attr_reader :current_user
+
+ ##
+ # @deprecated Please use sign_in instead
# Logs the user into the system. Requires that you login with an email and password
# and that your fields are named a certain way
# as well as there being a new_user_session path available.
#
# @param [Object] record The user record
#
# Example:
# login_as(user)
- attr_reader :current_user
-
def login_as(user)
+ warn "[DEPRECATION] `login_as(user)` is deprecated. Please use `sign_in` instead."
+
visit(new_user_session_path)
- fill_in('Email', :with => user.email)
- fill_in('Password', :with => user.password)
- click_button('Sign in')
+ fill_in("Email", :with => user.email)
+ fill_in("Password", :with => user.password)
+ click_button("Sign in")
@current_user = user
+ end
+
+ ##
+ # Set's a global variable that can be used to fake authentication
+ # when running acceptance tests. This is much faster then using
+ # the sign in form everytime but requires you to make a small change
+ # to your application code. Please see [View source] for details.
+ #
+ # @param [Object] record The user record
+ #
+ # Example:
+ # sign_in_as(user)
+
+ def sign_in_as(user = nil)
+ $signed_in = true
+ @current_user = user
+
+ # Your authentication filter should look something like:
+ #
+ # class ApplicationController < ActionController::Base
+ # before_filter :authenticate
+ #
+ # private
+ #
+ # def authenticate!
+ # redirect_to :new_sessions_url unless authenticated?
+ # end
+ #
+ # def authenticated?
+ # $signed_in or begin
+ # # Do your normal authentication logic here.
+ # # E.g:
+ # @current_user = User.find(session[:user_id]) if session[:user_id].present?
+ # end
+ # end
+ # end
+ end
+ alias :sign_in :sign_in_as
+
+ ##
+ # See sign_in for details.
+ #
+ # Example:
+ # sign_out
+ #
+
+ def sign_out
+ $signed_in = false
+ @current_user = nil
end
end
end
end
\ No newline at end of file