En effet, un code de test tel que le suivant :

 def test_index_redirection
   get :index
   assert_response :redirect
   assert_redirected_to :controller => 'user', :action => 'login'
 end

doit vérifier que lorsque la page d'index est appelée, une redirection est faite vers le controlleur user et l'action login. Cette redirection est mise en place dans le controlleur avec un simple redirect_to :controller => 'user', :action => 'login'.

Lorsque nous lançons notre procédure de test, l'erreur suivante est détectée :

 1) Failure:
 test_index_redirection(Admin::ConfigurationControllerTest) ./test/functional/admin/configuration_controller_test.rb:20:
 response is not a redirection to all of the options supplied  (redirection is <{:action=>"login", :controller=>"user"}>),  difference: <{}>

Le test échoue donc en nous indiquant que la différence entre ce qu'y était attendu et le résultat effectif est nulle. Je soupçonne donc un bug au niveau de la génération ou de la comparaison des routes. Toujours est-il qu'une solution existe pour contourner ce problème et faire en sorte que les tests soient exécutés correctement. Il suffit de créer l'url attendue à l'aide de la méthode url_for. Il faut donc procéder de la façon suivante :

 assert_redirected_to @controller.url_for(:controller => 'user', :action => 'login')

De cette manière le test passe sans problème et vous pouvez vérifier que votre code vous envoit bien au controlleur et à l'action voulue.

J'ai ouvert un rapport de bug sur le Trac de Ruby on Rails en espérant que les développeurs prendront le temps de se pencher sur la question.