ruby on rails - How to write rspec tests for controllers that assume authentication -


for controllers assume user authenticated, how should go writing tests?

i don't need keep testing login feature, best inject user or whatever authentication assumes somehow?

my application_controller includes module "current_user".

module currentuser   def self.included(base)     base.send :helper_method, :current_user   end    def current_user     ... # returns user model instance   end end  class applicationcontroller < actioncontroller::base   include currentuser 

then have admin controller has before_action method makes sure current_user present.

you can achieve writing concern, , include every spec controller, in concern support utility methods login system.

so code like:

spec/support/controller_authentication_helper.rb

module controllerauthenticationhelper extend activesupport::concern   module classmethods     def login_user       before         # expect using devise here, if not, modify below line         request.env['devise.mapping'] = devise.mappings[:user]         @current_user = factorygirl.create(:user, :confirmed, :verified)         sign_in @current_user       end     end   end end  rspec.configure |config|   config.include controllerauthenticationhelper, type: :controller end 

so test easy like:

require 'rails_helper'  describe mycontroller, type: :controller   # use method login   login_user   # can access current_user anywhere in test end 

now becomes simple! idea comes source code of devise


Comments

Popular posts from this blog

ios - RestKit 0.20 — CoreData: error: Failed to call designated initializer on NSManagedObject class (again) -

java - Digest auth with Spring Security using javaconfig -

laravel - PDOException in Connector.php line 55: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) -