From: Tom Hughes Date: Sat, 21 May 2011 12:35:15 +0000 (+0100) Subject: Start ROTS for user login tests as well as creation tests X-Git-Tag: live~6276 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/2a635ab28f3f567f984ec21f6fa724db9b673851?ds=sidebyside Start ROTS for user login tests as well as creation tests --- diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb index a066c1c63..4128b61d4 100644 --- a/app/controllers/user_controller.rb +++ b/app/controllers/user_controller.rb @@ -604,7 +604,7 @@ private session[:user] = user.id session_expires_after 1.month if session[:remember_me] - target = params[:referer] || url_for(:controller => :site, :action => :index) + target = session[:referer] || url_for(:controller => :site, :action => :index) # The user is logged in, so decide where to send them: # diff --git a/test/integration/user_creation_test.rb b/test/integration/user_creation_test.rb index 56ff5f01d..9cb5e895c 100644 --- a/test/integration/user_creation_test.rb +++ b/test/integration/user_creation_test.rb @@ -4,31 +4,7 @@ class UserCreationTest < ActionController::IntegrationTest fixtures :users def setup - begin - # Test if the ROTS (Ruby OpenID Test Server) is already running - rots_response = Net::HTTP.get_response(URI.parse("http://localhost:1123/")) - rescue - # It isn't, so start a new instance. - rots = IO.popen(RAILS_ROOT + "/vendor/gems/rots-0.2.1/bin/rots --silent") - - # Wait for up to 30 seconds for the server to start and respond before continuing - for i in (1 .. 30) - begin - sleep 1 - rots_response = Net::HTTP.get_response(URI.parse("http://localhost:1123/")) - # If the rescue block doesn't fire, ROTS is up and running and we can continue - break - rescue - # If the connection failed, do nothing and repeat the loop - end - end - - # Arrange to kill the process when we exit - note that we need - # to kill it really har due to a bug in ROTS - Kernel.at_exit do - Process.kill("KILL", rots.pid) - end - end + openid_setup end def test_create_user_form diff --git a/test/integration/user_login_test.rb b/test/integration/user_login_test.rb index a272f7bad..f76f3ca2d 100644 --- a/test/integration/user_login_test.rb +++ b/test/integration/user_login_test.rb @@ -3,6 +3,10 @@ require File.dirname(__FILE__) + '/../test_helper' class UserLoginTest < ActionController::IntegrationTest fixtures :users + def setup + openid_setup + end + def test_login_openid_success get '/login' assert_response :redirect diff --git a/test/test_helper.rb b/test/test_helper.rb index b91c0779f..dc29287f5 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -183,6 +183,35 @@ class ActiveSupport::TestCase assert_select "span[class=translation_missing]", false, "Missing translation #{msg}" end + # Set things up for OpenID testing + def openid_setup + begin + # Test if the ROTS (Ruby OpenID Test Server) is already running + rots_response = Net::HTTP.get_response(URI.parse("http://localhost:1123/")) + rescue + # It isn't, so start a new instance. + rots = IO.popen(RAILS_ROOT + "/vendor/gems/rots-0.2.1/bin/rots --silent") + + # Wait for up to 30 seconds for the server to start and respond before continuing + for i in (1 .. 30) + begin + sleep 1 + rots_response = Net::HTTP.get_response(URI.parse("http://localhost:1123/")) + # If the rescue block doesn't fire, ROTS is up and running and we can continue + break + rescue + # If the connection failed, do nothing and repeat the loop + end + end + + # Arrange to kill the process when we exit - note that we need + # to kill it really har due to a bug in ROTS + Kernel.at_exit do + Process.kill("KILL", rots.pid) + end + end + end + def openid_request(openid_request_uri) openid_response = Net::HTTP.get_response(URI.parse(openid_request_uri)) openid_response_uri = URI(openid_response['Location'])