[rspec-users] new syntax question and mocking HTTP_AUTHORIZATION

David Chelimsky dchelimsky at gmail.com
Wed Oct 20 23:19:10 EDT 2010


On Oct 20, 2010, at 9:56 PM, oren wrote:

> I am specing a sinatra app.
> 
> it "should send non-valid user to /login" do
>  get '/'
>  last_response.headers['Location'].should == '/reports'
> end
> 
> this is working fine but I would like to know how to convert it to the
> new syntax or if there is a better way to do that.
> 
> before(:each) { get '/' }
> subject { last_response }
> 
> its(:status) {should == 302}
> require 'ap'
> its(:headers) {should include('/login')}

This is not "the new syntax." It is simply an alternate syntax that has been around for over a year and works well for a small subset of things you might want to specify like initial state:

describe Array do
  context "when first created" do
    subject { Array.new }
    its(:length) { should eq(0) }
  end
end

It is not in any way an all-purpose replacement for more specifying _behaviour_.

> another question:
> 
>   it "should send valid user to /reports" do
>        get '/', { 'HTTP_AUTHORIZATION' => 'Basic
> c2cvbGFuOmFBITExMQ==' }
>        last_response.headers['Location'].should == '/reports'
>      end
> 
> when i debug my method I see that request.env["HTTP_AUTHORIZATION"] is
> nil,
> so the header was not sent with it. how to mock it?

I don't have any personal experience w/ Sinatra yet (I know, I know, but there are only so many hours in a day), so I'll leave it to someone else to comment on how to approach the Sinatra questions.

Cheers,
David



More information about the rspec-users mailing list