views:

246

answers:

1

I have a route which I'm using constraints to check the host and then a route which is essentially the same but without the host restriction (these are really namespaces but to make things simple this example will do):

 match "/(:page_key)" => "namespace_one/pages#show", :constraints => proc {|env| env['SERVER_NAME'] == 'test.mysite.local' }

 match "/(:page_key)" => "namespace_two/pages#show"

These work exactly as expected when accessing via the browser and in integration tests when defining the host and doing get "/page_key" etc.

However I want to write tests that ensures that these routes work so far I'm not having much luck as the following test (which is currently in an ActionController::IntegrationTest so I can set the host) is matching the one without the constraint:

assert_routing '', { :controller => 'namespace_one/pages', :action => 'show' }
=> The recognized options <{"action"=>"show", "controller"=>"frontend/pages"}> 
   did not match <{"action"=>"show", "controller"=>"namespace_two/pages"}>, 
   difference: <{"controller"=>"namespace_one/pages"}>

If I try dumping the env in the constraints proc all I get is --- :controller.

If I get rid of the assert_routing and just do a get :show call and dump the @controller it does resolve to the correct controller (as expected as these routes all work fine via HTTP requests).

A: 

I'm having the same problem, and I'm just as confused.

Logan Koester
This would be better as a comment on the question rather than a stand-alone answer.
obvio171