RSpec 2, Rails 3, and SSL routes


#1

Hi all,

This is probably a stupid question, but I can’t figure out how to do
this…

If I have some routes which require SSL, how do I test that with
RSpec? For example:

routes.rb

scope :constraints => { :protocol => “https” } do
match ‘/foos.(:format)’ => ‘foos#index’, :via => :get, :constraints
=> { :format => /(json|xml)/ }
end

In my routing spec, I’ve tried the following variants with no luck:

describe “routing to foos” do
it “routes /foos.json to foos#index” do
{ :get => “/foos.json”, :protocol => “https” }.should route_to(
:controller => “foos”,
:action => “index”,
:format => “json”
)
end

describe “routing to foos” do
it “routes /foos.json to foos#index” do
{ :get => “/foos.json” }.should route_to(
:controller => “foos”,
:action => “index”,
:format => “json”,
:protocol => “https”
)
end

Thanks in advance for any help.
BP


#2

Anybody?


#3

On Dec 13, 2010, at 7:55 AM, Brian P. wrote:

{ :get => "/foos.json", :protocol => "https" }.should route_to(
  :action => "index",
  :format => "json",
  :protocol => "https"
)

end

Thanks in advance for any help.

There is an open issue in the Rails tracker about this [1].
assert_recognizes, to which “should route_to” delegates, does not yet
support constraints. Sadly, this means there is no good way to do this
at the moment.

[1]
https://rails.lighthouseapp.com/projects/8994/tickets/5805-assert_recognizes-does-not-support-constraints
for more info.


#4

OK, cool. I’ll avoid banging my head against the wall in the mean
time. :slight_smile:

Thanks alot David.
BP


#5

Actually, Rails seems to correctly support some routing constraints
in tests (:format being one), but not others (:protocol being one).
I’m coming up with a failing test which I’ll attach to that Rails
ticket, but just noting it here as an FYI to others…


#6

I too came across same situation (i.e., testing ssl request in rails
with specs).
Thinking there should be a solution.

Thanks,
Aashish