openstreetmap-website/test/integration/user_login_test.rb

91 lines
2.8 KiB
Ruby

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
assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
follow_redirect!
assert_response :success
post '/login', {'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', {'openid_url' => "http://localhost:1123/john.doe", :referer => "/diary"}
assert_response :redirect
res = openid_request(@response.redirected_to)
post '/login', res
assert_response :redirect
follow_redirect!
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', {'openid_url' => "http://localhost:1124/john.doe", :referer => "/diary"}
assert_response :redirect
follow_redirect!
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', {'openid_url' => "htt://localhost:1123/john.doe", :referer => "/diary"}
assert_response :redirect
follow_redirect!
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', {'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