Devise: Testing a custom sessions controller

Sonntag, 10. April 2011, 13:17 Uhr | roberto@vasquez-angel.de |

Assume you have a custom devise sessions controller for your customer login at Rails.root/app/controllers/customers/sessions_controller.rb:

class Customers::SessionsController < Devise::SessionsController
end

To test it with rspec, you’ll have to add a before(:each) to the test:

before(:each) do
  setup_controller_for_warden
  request.env["devise.mapping"] = Devise.mappings[:customer]
end

You’re test should look like this:

require 'spec_helper'

describe Customers::SessionsController do
  render_views

  before(:each) do
    setup_controller_for_warden
    request.env["devise.mapping"] = Devise.mappings[:customer]
  end

  context "as a visitor" do
    describe "GET 'sign_in'" do
      it "should have an email field" do
        get :new
        response.should have_selector("input[name='customer[email]']")
      end
      
      it "should have a password field" do
        get :new
        response.should have_selector("input[name='customer[password]']")
      end
    end
  end
end