« Return to Thread: Authenticating before tests

Re: Authenticating before tests

by peter.boling :: Rate this Message:

Reply to Author | View in Thread

Luke Galea-4 wrote:
Could someone point me in the right direction?

I thought the simplest way would be to either call the login action  
from my other tests before(:all), but I can't seem to find how to  
call another controller from within the spec for a different  
controller. (Results in @controller is nil).
This is what we do.  I realize that according to the another poster this is the wrong way, but it is the best way we've found for use with Goldberg.

  def goldbergAuthAdmin()
    get 'goldberg/auth/login'
    #Goldberg::AuthController.set_user(session, Goldberg::User.find_by_name(:first, "admin").id)
    #Our Admin user has id 2.
    Goldberg::AuthController.set_user(session,2)
  end

BTW, another important step is bootstrapping goldberg into your test database...

To facilitate this we added two methods to the GoldbergMigration model:
  def self.clear_for_class(klass, dest)
    filename = "#{dest}/#{klass.to_s.sub(/^Goldberg::/, '')}.yml"
    records = klass.delete_all
  end
  def self.clear_bootstrap
    self.goldberg_classes.each do |klass|
      self.clear_for_class klass, "#{File.dirname(__FILE__)}/../db"
    end
  end

Then add this to spec_helper.rb, or your own included spec_helper
  def goldbergReload()
    GoldbergMigration.clear_bootstrap
    GoldbergMigration.load_bootstrap
  end

Then call this from a before(:all) in the first describe of each rspec needing goldberg.  Of course you have to have dumped your goldberg bootstrap from dev/production first (You do this in the console: "GoldbergMigration.dump_bootstrap" to save all goldberg settings, controller/action perms, users roles, etc to some yaml files).

Hope that helps!

Peter Boling
Sagebit, LLC

 « Return to Thread: Authenticating before tests