Is it possible to follow redirects outside of Rails on an integration test?

Hello,

Is it possible to follow redirects outside of Rails on an integration test?

I’m trying to test my whole log in procedure and part of it includes authenticating with OpenID. I have rots running locally but when I’m suppose do be redirected to the localhost:1123/server (the rots server) I end up being redirected to localhost:3000/server (the rails server with an url that doesn’t exist). It is like if the code that follows the redirection on integration tests is ignoring the URL. Is there any way to enable external redirections?

Thanks.

Hi Pablo,

Hello Bill,

Thanks for the reply. As far as I know the full URL is being used for the redirect. I remember seeing the url in the debugger and also, the URL is being generated by ruby-openid, so if it wasn’t using the full URL, ruby-openid would be broken for everybody.

I can’t check it right now, as soon as I can I’ll do it and post the result.

Thanks.

Confirmed that it doesn’t work, this is the test:

Replace this with your real tests.

test “log in” do

Submit open id identifier to log in.

post “/users/start”, :openid_identifier => “http://localhost:1123/john.doe?openid.success=true

We get redirected to the authentication page at the OpenID provider

assert redirect?

which is on http://localhost:1123/server.

assert @response.redirected_to.start_with? “http://localhost:1123/server

Go.

follow_redirect!

The OpenID server automatically approves any request, it’s a test server

called rots, it should redirect us back to the application

assert redirect?

to http://localhost:3000/users/complete

assert @response.redirected_to.start_with? “http://localhost:3000/users/complete

end

At the second assert redirect? in which the OpenID server should be redirecting me back, I get a failure. If I look at the logs, the OpenID server, running on port 1123 never gets a request, while the Rails server running on 3000 get’s a request to the path the OpenID server was supposed to get the request for: /server/…

Thanks.