J'ai un contrôleur qui n'est pas accessible directement, de la manière RESTful traditionnelle, mais uniquement via une URL particulière.Test d'une action de contrôleur RSpec inaccessible directement
Normalement, je suis habitué à utiliser get et post dans les spécifications de mon contrôleur pour appeler les actions du contrôleur. Existe-t-il un moyen que je peux exercer mon contrôleur en visitant une URL particulière?
EDIT:
Voici mon itinéraire:
Larzworld::Application.routes.draw do
match '/auth/:provider/callback' => 'authentications#create'
devise_for :users, :controllers => {:registrations => "registrations"}
root :to => 'pages#home'
end
Voici ma spec:
require 'spec_helper'
describe AuthenticationsController do
before(:each) do
request.env["omniauth.auth"] = {"provider" => "twitter", "uid" => "12345678"}
end
describe 'POST create' do
it "should find the Authentication using the uid and provider from omniauth" do
Authentication.should_receive(:find_by_provider_and_uid)
post 'auth/twitter/callback'
end
end
end
et voici l'erreur que je reçois:
Failures:
1) AuthenticationsController POST create should find the Authentication using the uid and provider from omniauth
Failure/Error: post 'auth/twitter/callback'
No route matches {:action=>"auth/twitter/callback", :controller=>"authentications"}
# ./spec/controllers/authentications_controller_spec.rb:13
Finished in 0.04878 seconds
1 example, 1 failure
Ok, ce C'est ce que je pensais, mais alors regardez mon post édité où je poste mon itinéraire, mon test et mon erreur. Je ne comprends pas pourquoi il ne correspond pas à l'action correcte. – TheDelChop
Voir ma modification. Vous voulez vraiment un test de routage ici, je pense. – zetetic