Testing Routing Constraint => redirect example.com to www.example.com

Hi All

With the following route

constraints(:host => “example.com”) do
match “(*x)” => redirect { |params, request|
URI.parse(request.url).tap { |x| x.host = “www.example.com” }.to_s
}
end

I am wondering how or where I would spec this?

Ideally I would like to be able to write a routing spec, something like:

get(“http://example.com”).should route_to(:controller => “home”, :action
=>
“index”, :host => “www.example.com”)

Thanks in advance

Shane M.

On Mon, Aug 1, 2011 at 8:29 PM, Shane M. [email protected] wrote:


rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users

Hi, take a look at this:

Thanks for that Justin!

I was not aware of request specs
http://relishapp.com/rspec/rspec-rails/v/2-6/dir/request-specs/request-spec
could not find any reference to them in the rspec book (maybe I missed
them).

so adding spec/requests/routes_spec.rb with the following did the trick!

require “spec_helper”

describe “routes that redirect” do

it “redirects http://example.com to http://www.example.com” do
get “http://example.com
response.should redirect_to(‘http://www.example.com’)
end

it “should not redirect https://secure.example.com” do
get “https://secure.example.com
response.should_not be_redirect
end

end

constraints(:host => /^example.com/) do
match “(*x)” => redirect { |params, request|
URI.parse(request.url).tap { |x| x.host = “www.example.com” }.to_s
}
end

On Tue, Aug 2, 2011 at 8:19 PM, Shane M. [email protected] wrote:

end

http://rubyforge.org/mailman/listinfo/rspec-users


rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users

Awesome, glad it worked out!