J'ai un itinéraire que j'utilise des contraintes pour vérifier l'hôte et ensuite un itinéraire qui est essentiellement le même mais sans la restriction d'hôte (ce sont vraiment des espaces de noms mais pour simplifier les choses cet exemple fera):Test des routes avec des contraintes d'hôte via assert_routing dans Rails
match "/(:page_key)" => "namespace_one/pages#show", :constraints => proc {|env| env['SERVER_NAME'] == 'test.mysite.local' }
match "/(:page_key)" => "namespace_two/pages#show"
Ils fonctionnent exactement comme prévu lors de l'accès via le navigateur et dans les tests d'intégration lors de la définition de l'hôte et de faire get "/page_key"
etc.
Cependant, je veux écrire des tests qui assure que ces routes fonctionnent jusqu'à présent, je n'ai pas beaucoup de chance que le test suivant (qui est actuellement dans un ActionController::IntegrationTest
donc je peux définir l'hôte) est correspondant à celui sans la contrainte:
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"}>
Si je tente le dumping env dans les contraintes PROC tout ce que je reçois est --- :controller
. Si je me débarrasse de l'assert_routing et que j'effectue simplement un appel get :show
et que je vide le @controller
, il se résout au bon contrôleur (comme prévu, car ces routes fonctionnent bien via les requêtes HTTP).