Pregunta

Estoy utilizando OmniAuth en mi proyecto Rails, y me gustaría ocultar "/ auth / facebook" detrás de una ruta "/ login".

De hecho, me escribió una ruta:

match "/login", :to => redirect("/auth/facebook"), :as => :login

y esto realmente funciona, es decir, un enlace a login_path redirigirá a /auth/facebook.

Sin embargo, ¿cómo puedo escribir una especificación (RSpec) para poner a prueba esta ruta (en concreto, la redirección)?

Ten en cuenta que /login no es una acción real ni método definido en la aplicación.

Gracias de antemano!

¿Fue útil?

Solución

Debido a que usted no proporcionó ningún detalle sobre su entorno, el siguiente ejemplo supone que está utilizando 2.x rspec y rspec-carriles, con Rails 3.

# rspec/requests/redirects_spec.rb
describe "Redirects" do
  describe "GET login" do
    before(:each) do
      get "/login"
    end

    it "redirects to /auth/facebook" do
      response.code.should == "302"
      response.location.should == "/auth/facebook"
    end
  end
end

Leer la sección Especificaciones Solicitud de rspec-carriles para más detalles.

Otros consejos

También puede usar:

get "/login"
response.should redirect_to(path)

rack :: Prueba y comprobar el URL y el código de estado HTTP

get "/login"
last_response.status.should == 302
last_response.headers["Location"].should == "/auth/facebook"
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top