Add test for OpenID login and signup
The tests need the ROTS (Ruby OpenID Test Server) running. ROTS can be found at http://github.com/roman/rots If ROTS is not running, there will be 4 failed test cases, but otherwise things should work
This commit is contained in:
parent
9faf30fb45
commit
92af0eccd5
4 changed files with 124 additions and 0 deletions
|
@ -127,4 +127,28 @@ class UserCreationTest < ActionController::IntegrationTest
|
|||
assert_response :success
|
||||
assert_template "trace/list.html.erb"
|
||||
end
|
||||
|
||||
def test_user_create_openid_success
|
||||
new_email = "newtester-openid@osm.org"
|
||||
display_name = "new_tester-openid"
|
||||
assert_difference('User.count') do
|
||||
assert_difference('ActionMailer::Base.deliveries.size', 1) do
|
||||
post "/user/save",
|
||||
{:user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :openid_url => "http://localhost:1123/john.doe?openid.success=newuser"}}
|
||||
assert_response :redirect
|
||||
res = openid_request(@response.redirected_to)
|
||||
post '/user/save', res
|
||||
assert_response :redirect
|
||||
follow_redirect!
|
||||
end
|
||||
end
|
||||
|
||||
# Check the page
|
||||
assert_response :success
|
||||
assert_template 'login'
|
||||
|
||||
ActionMailer::Base.deliveries.clear
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
|
81
test/integration/user_login_test.rb
Normal file
81
test/integration/user_login_test.rb
Normal file
|
@ -0,0 +1,81 @@
|
|||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class UserLoginTest < ActionController::IntegrationTest
|
||||
fixtures :users
|
||||
|
||||
def test_login_openid_success
|
||||
get '/login'
|
||||
assert_response :redirect
|
||||
assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
|
||||
follow_redirect!
|
||||
assert_response :success
|
||||
post '/login', {'user[openid_url]' => "http://localhost:1123/john.doe?openid.success=true", :referer => "/browse"}
|
||||
assert_response :redirect
|
||||
|
||||
res = openid_request(@response.redirected_to)
|
||||
res2 = post '/login', res
|
||||
|
||||
assert_response :redirect
|
||||
follow_redirect!
|
||||
assert_response :success
|
||||
assert_template 'changeset/list'
|
||||
end
|
||||
|
||||
def test_login_openid_cancel
|
||||
get '/login'
|
||||
assert_response :redirect
|
||||
assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
|
||||
follow_redirect!
|
||||
assert_response :success
|
||||
post '/login', {'user[openid_url]' => "http://localhost:1123/john.doe", :referer => "/diary"}
|
||||
assert_response :redirect
|
||||
|
||||
res = openid_request(@response.redirected_to)
|
||||
post '/login', res
|
||||
|
||||
assert_response :success
|
||||
assert_template 'login'
|
||||
end
|
||||
|
||||
def test_login_openid_invalid_provider
|
||||
get '/login'
|
||||
assert_response :redirect
|
||||
assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
|
||||
follow_redirect!
|
||||
assert_response :success
|
||||
#Use a different port that doesn't have the OpenID provider running on to test an invalid openID
|
||||
post '/login', {'user[openid_url]' => "http://localhost:1124/john.doe", :referer => "/diary"}
|
||||
assert_response :success
|
||||
assert_template 'login'
|
||||
end
|
||||
|
||||
def test_login_openid_invalid_url
|
||||
get '/login'
|
||||
assert_response :redirect
|
||||
assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
|
||||
follow_redirect!
|
||||
assert_response :success
|
||||
#Use a url with an invalid protocol to make sure it handles that correctly too
|
||||
post '/login', {'user[openid_url]' => "htt://localhost:1123/john.doe", :referer => "/diary"}
|
||||
assert_response :success
|
||||
assert_template 'login'
|
||||
end
|
||||
|
||||
def test_login_openid_unknown
|
||||
get '/login'
|
||||
assert_response :redirect
|
||||
assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
|
||||
follow_redirect!
|
||||
assert_response :success
|
||||
post '/login', {'user[openid_url]' => "http://localhost:1123/john.doe?openid.success=true_somethingelse", :referer => "/diary"}
|
||||
assert_response :redirect
|
||||
|
||||
res = openid_request(@response.redirected_to)
|
||||
res2 = post '/login', res
|
||||
|
||||
assert_response :redirect
|
||||
follow_redirect!
|
||||
assert_response :success
|
||||
assert_template 'user/new'
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue