raphael_turtle
raphael_turtle

Reputation: 7314

rails rspec http basic authentication test

how do I test logging into a rails 3.1 app with http basic auth using rspec2 & capybara?

I'm using this;

 describe "GET 'index'" do
      it "should be successful" do
        request.env["HTTP_AUTHORIZATION"] = "Basic " + Base64::encode64("username:password")
        get 'index'
        response.should be_success
      end
    end

but it gives me this error;

 NoMethodError:
            undefined method `env' for nil:NilClass

Upvotes: 4

Views: 5409

Answers (2)

ian
ian

Reputation: 12251

Capybara comes with Rack::Test built in.

So, you can use the Rack::Test::Session.basic_authorize method to set the Authorization HTTP header field before making a request.

basic_authorize 'username', 'password'
get 'index'

Upvotes: 17

Gazler
Gazler

Reputation: 84140

@request.env["HTTP_AUTHORIZATION"] = "Basic " + Base64::encode64("username:password")

This should be:

request.env["HTTP_AUTHORIZATION"] = "Basic " + Base64::encode64("username:password")

as request is not an instance variable.

Upvotes: -1

Related Questions