Start ROTS for user login tests as well as creation tests
authorTom Hughes <tom@compton.nu>
Sat, 21 May 2011 12:35:15 +0000 (13:35 +0100)
committerTom Hughes <tom@compton.nu>
Sat, 21 May 2011 12:35:15 +0000 (13:35 +0100)
app/controllers/user_controller.rb
test/integration/user_creation_test.rb
test/integration/user_login_test.rb
test/test_helper.rb

index a066c1c..4128b61 100644 (file)
@@ -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:
     #
index 56ff5f0..9cb5e89 100644 (file)
@@ -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
index a272f7b..f76f3ca 100644 (file)
@@ -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
index b91c077..dc29287 100644 (file)
@@ -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'])