X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/dbf35e0cf67ee330cd02c2431e0ed6d08681d184..b3101110d47673231634fa2dee7afab2863de58f:/test/integration/user_login_test.rb diff --git a/test/integration/user_login_test.rb b/test/integration/user_login_test.rb index 589f19a23..5610f9b6e 100644 --- a/test/integration/user_login_test.rb +++ b/test/integration/user_login_test.rb @@ -113,8 +113,8 @@ class UserLoginTest < ActionDispatch::IntegrationTest assert_template "sessions/new" assert_select "span.username", false - assert_select "div.flash.error", /your account has been suspended/ do - assert_select "a[href='mailto:openstreetmap@example.com']", "webmaster" + assert_select "div.alert.alert-danger", /your account has been suspended/ do + assert_select "a[href='mailto:openstreetmap@example.com']", "support" end end @@ -125,8 +125,8 @@ class UserLoginTest < ActionDispatch::IntegrationTest assert_template "sessions/new" assert_select "span.username", false - assert_select "div.flash.error", /your account has been suspended/ do - assert_select "a[href='mailto:openstreetmap@example.com']", "webmaster" + assert_select "div.alert.alert-danger", /your account has been suspended/ do + assert_select "a[href='mailto:openstreetmap@example.com']", "support" end end @@ -137,8 +137,8 @@ class UserLoginTest < ActionDispatch::IntegrationTest assert_template "sessions/new" assert_select "span.username", false - assert_select "div.flash.error", /your account has been suspended/ do - assert_select "a[href='mailto:openstreetmap@example.com']", "webmaster" + assert_select "div.alert.alert-danger", /your account has been suspended/ do + assert_select "a[href='mailto:openstreetmap@example.com']", "support" end end @@ -270,8 +270,8 @@ class UserLoginTest < ActionDispatch::IntegrationTest assert_template "sessions/new" assert_select "span.username", false - assert_select "div.flash.error", /your account has been suspended/ do - assert_select "a[href='mailto:openstreetmap@example.com']", "webmaster" + assert_select "div.alert.alert-danger", /your account has been suspended/ do + assert_select "a[href='mailto:openstreetmap@example.com']", "support" end end @@ -282,8 +282,8 @@ class UserLoginTest < ActionDispatch::IntegrationTest assert_template "sessions/new" assert_select "span.username", false - assert_select "div.flash.error", /your account has been suspended/ do - assert_select "a[href='mailto:openstreetmap@example.com']", "webmaster" + assert_select "div.alert.alert-danger", /your account has been suspended/ do + assert_select "a[href='mailto:openstreetmap@example.com']", "support" end end @@ -294,8 +294,8 @@ class UserLoginTest < ActionDispatch::IntegrationTest assert_template "sessions/new" assert_select "span.username", false - assert_select "div.flash.error", /your account has been suspended/ do - assert_select "a[href='mailto:openstreetmap@example.com']", "webmaster" + assert_select "div.alert.alert-danger", /your account has been suspended/ do + assert_select "a[href='mailto:openstreetmap@example.com']", "support" end end @@ -370,6 +370,72 @@ class UserLoginTest < ActionDispatch::IntegrationTest assert_select "span.username", user.display_name end + def test_login_openid_pending + user = create(:user, :pending, :auth_provider => "openid", :auth_uid => "http://example.com/john.doe") + OmniAuth.config.add_mock(:openid, :uid => user.auth_uid) + + get "/login", :params => { :referer => "/history" } + assert_response :redirect + assert_redirected_to login_path(:cookie_test => true, :referer => "/history") + follow_redirect! + assert_response :success + assert_template "sessions/new" + post auth_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login?referer=%2Fhistory", :referer => "/history") + assert_response :redirect + assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login?referer=%2Fhistory", :referer => "/history") + follow_redirect! + assert_response :redirect + follow_redirect! + assert_response :success + assert_template "confirm" + end + + def test_login_openid_suspended + user = create(:user, :suspended, :auth_provider => "openid", :auth_uid => "http://example.com/john.doe") + OmniAuth.config.add_mock(:openid, :uid => user.auth_uid) + + get "/login", :params => { :referer => "/history" } + assert_response :redirect + assert_redirected_to login_path(:cookie_test => true, :referer => "/history") + follow_redirect! + assert_response :success + assert_template "sessions/new" + post auth_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login?referer=%2Fhistory", :referer => "/history") + assert_response :redirect + assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login?referer=%2Fhistory", :referer => "/history") + follow_redirect! + assert_response :redirect + follow_redirect! + assert_response :success + assert_template "sessions/new" + assert_select "span.username", false + assert_select "div.alert.alert-danger", /your account has been suspended/ do + assert_select "a[href='mailto:openstreetmap@example.com']", "support" + end + end + + def test_login_openid_blocked + user = create(:user, :auth_provider => "openid", :auth_uid => "http://example.com/john.doe") + create(:user_block, :needs_view, :user => user) + OmniAuth.config.add_mock(:openid, :uid => user.auth_uid) + + get "/login", :params => { :referer => "/history" } + assert_response :redirect + assert_redirected_to login_path(:cookie_test => true, :referer => "/history") + follow_redirect! + assert_response :success + assert_template "sessions/new" + post auth_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login?referer=%2Fhistory", :referer => "/history") + assert_response :redirect + assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login?referer=%2Fhistory", :referer => "/history") + follow_redirect! + assert_response :redirect + follow_redirect! + assert_response :success + assert_template "user_blocks/show" + assert_select "span.username", user.display_name + end + def test_login_openid_connection_failed user = create(:user, :auth_provider => "openid", :auth_uid => "http://example.com/john.doe") OmniAuth.config.mock_auth[:openid] = :connection_failed @@ -391,7 +457,7 @@ class UserLoginTest < ActionDispatch::IntegrationTest follow_redirect! assert_response :success assert_template "sessions/new" - assert_select "div.flash.error", "Connection to authentication provider failed" + assert_select "div.alert.alert-danger", "Connection to authentication provider failed" assert_select "span.username", false end @@ -416,7 +482,7 @@ class UserLoginTest < ActionDispatch::IntegrationTest follow_redirect! assert_response :success assert_template "sessions/new" - assert_select "div.flash.error", "Invalid authentication credentials" + assert_select "div.alert.alert-danger", "Invalid authentication credentials" assert_select "span.username", false end @@ -463,6 +529,78 @@ class UserLoginTest < ActionDispatch::IntegrationTest assert_select "span.username", user.display_name end + def test_login_google_pending + user = create(:user, :pending, :auth_provider => "google", :auth_uid => "1234567890") + OmniAuth.config.add_mock(:google, :uid => user.auth_uid, :extra => { + :id_info => { "openid_id" => "http://localhost:1123/fred.bloggs" } + }) + + get "/login", :params => { :referer => "/history" } + assert_response :redirect + assert_redirected_to login_path("cookie_test" => "true", "referer" => "/history") + follow_redirect! + assert_response :success + assert_template "sessions/new" + post auth_path(:provider => "google", :origin => "/login?referer=%2Fhistory", :referer => "/history") + assert_response :redirect + assert_redirected_to auth_success_path(:provider => "google") + follow_redirect! + assert_response :redirect + follow_redirect! + assert_response :success + assert_template "confirm" + end + + def test_login_google_suspended + user = create(:user, :suspended, :auth_provider => "google", :auth_uid => "1234567890") + OmniAuth.config.add_mock(:google, :uid => user.auth_uid, :extra => { + :id_info => { "openid_id" => "http://localhost:1123/fred.bloggs" } + }) + + get "/login", :params => { :referer => "/history" } + assert_response :redirect + assert_redirected_to login_path("cookie_test" => "true", "referer" => "/history") + follow_redirect! + assert_response :success + assert_template "sessions/new" + post auth_path(:provider => "google", :origin => "/login?referer=%2Fhistory", :referer => "/history") + assert_response :redirect + assert_redirected_to auth_success_path(:provider => "google") + follow_redirect! + assert_response :redirect + follow_redirect! + assert_response :success + assert_template "sessions/new" + assert_select "span.username", false + assert_select "div.alert.alert-danger", /your account has been suspended/ do + assert_select "a[href='mailto:openstreetmap@example.com']", "support" + end + end + + def test_login_google_blocked + user = create(:user, :auth_provider => "google", :auth_uid => "1234567890") + create(:user_block, :needs_view, :user => user) + OmniAuth.config.add_mock(:google, :uid => user.auth_uid, :extra => { + :id_info => { "openid_id" => "http://localhost:1123/fred.bloggs" } + }) + + get "/login", :params => { :referer => "/history" } + assert_response :redirect + assert_redirected_to login_path("cookie_test" => "true", "referer" => "/history") + follow_redirect! + assert_response :success + assert_template "sessions/new" + post auth_path(:provider => "google", :origin => "/login?referer=%2Fhistory", :referer => "/history") + assert_response :redirect + assert_redirected_to auth_success_path(:provider => "google") + follow_redirect! + assert_response :redirect + follow_redirect! + assert_response :success + assert_template "user_blocks/show" + assert_select "span.username", user.display_name + end + def test_login_google_connection_failed OmniAuth.config.mock_auth[:google] = :connection_failed @@ -483,7 +621,7 @@ class UserLoginTest < ActionDispatch::IntegrationTest follow_redirect! assert_response :success assert_template "sessions/new" - assert_select "div.flash.error", "Connection to authentication provider failed" + assert_select "div.alert.alert-danger", "Connection to authentication provider failed" assert_select "span.username", false end @@ -507,7 +645,7 @@ class UserLoginTest < ActionDispatch::IntegrationTest follow_redirect! assert_response :success assert_template "sessions/new" - assert_select "div.flash.error", "Invalid authentication credentials" + assert_select "div.alert.alert-danger", "Invalid authentication credentials" assert_select "span.username", false end @@ -581,6 +719,72 @@ class UserLoginTest < ActionDispatch::IntegrationTest assert_select "span.username", user.display_name end + def test_login_facebook_pending + user = create(:user, :pending, :auth_provider => "facebook", :auth_uid => "1234567890") + OmniAuth.config.add_mock(:facebook, :uid => user.auth_uid) + + get "/login", :params => { :referer => "/history" } + assert_response :redirect + assert_redirected_to login_path("cookie_test" => "true", "referer" => "/history") + follow_redirect! + assert_response :success + assert_template "sessions/new" + post auth_path(:provider => "facebook", :origin => "/login?referer=%2Fhistory", :referer => "/history") + assert_response :redirect + assert_redirected_to auth_success_path(:provider => "facebook") + follow_redirect! + assert_response :redirect + follow_redirect! + assert_response :success + assert_template "confirm" + end + + def test_login_facebook_suspended + user = create(:user, :suspended, :auth_provider => "facebook", :auth_uid => "1234567890") + OmniAuth.config.add_mock(:facebook, :uid => user.auth_uid) + + get "/login", :params => { :referer => "/history" } + assert_response :redirect + assert_redirected_to login_path("cookie_test" => "true", "referer" => "/history") + follow_redirect! + assert_response :success + assert_template "sessions/new" + post auth_path(:provider => "facebook", :origin => "/login?referer=%2Fhistory", :referer => "/history") + assert_response :redirect + assert_redirected_to auth_success_path(:provider => "facebook") + follow_redirect! + assert_response :redirect + follow_redirect! + assert_response :success + assert_template "sessions/new" + assert_select "span.username", false + assert_select "div.alert.alert-danger", /your account has been suspended/ do + assert_select "a[href='mailto:openstreetmap@example.com']", "support" + end + end + + def test_login_facebook_blocked + user = create(:user, :auth_provider => "facebook", :auth_uid => "1234567890") + create(:user_block, :needs_view, :user => user) + OmniAuth.config.add_mock(:facebook, :uid => user.auth_uid) + + get "/login", :params => { :referer => "/history" } + assert_response :redirect + assert_redirected_to login_path("cookie_test" => "true", "referer" => "/history") + follow_redirect! + assert_response :success + assert_template "sessions/new" + post auth_path(:provider => "facebook", :origin => "/login?referer=%2Fhistory", :referer => "/history") + assert_response :redirect + assert_redirected_to auth_success_path(:provider => "facebook") + follow_redirect! + assert_response :redirect + follow_redirect! + assert_response :success + assert_template "user_blocks/show" + assert_select "span.username", user.display_name + end + def test_login_facebook_connection_failed OmniAuth.config.mock_auth[:facebook] = :connection_failed @@ -601,7 +805,7 @@ class UserLoginTest < ActionDispatch::IntegrationTest follow_redirect! assert_response :success assert_template "sessions/new" - assert_select "div.flash.error", "Connection to authentication provider failed" + assert_select "div.alert.alert-danger", "Connection to authentication provider failed" assert_select "span.username", false end @@ -625,7 +829,7 @@ class UserLoginTest < ActionDispatch::IntegrationTest follow_redirect! assert_response :success assert_template "sessions/new" - assert_select "div.flash.error", "Invalid authentication credentials" + assert_select "div.alert.alert-danger", "Invalid authentication credentials" assert_select "span.username", false end @@ -670,6 +874,72 @@ class UserLoginTest < ActionDispatch::IntegrationTest assert_select "span.username", user.display_name end + def test_login_windowslive_pending + user = create(:user, :pending, :auth_provider => "windowslive", :auth_uid => "1234567890") + OmniAuth.config.add_mock(:windowslive, :uid => user.auth_uid) + + get "/login", :params => { :referer => "/history" } + assert_response :redirect + assert_redirected_to login_path("cookie_test" => "true", "referer" => "/history") + follow_redirect! + assert_response :success + assert_template "sessions/new" + post auth_path(:provider => "windowslive", :origin => "/login?referer=%2Fhistory", :referer => "/history") + assert_response :redirect + assert_redirected_to auth_success_path(:provider => "windowslive") + follow_redirect! + assert_response :redirect + follow_redirect! + assert_response :success + assert_template "confirm" + end + + def test_login_windowslive_suspended + user = create(:user, :suspended, :auth_provider => "windowslive", :auth_uid => "1234567890") + OmniAuth.config.add_mock(:windowslive, :uid => user.auth_uid) + + get "/login", :params => { :referer => "/history" } + assert_response :redirect + assert_redirected_to login_path("cookie_test" => "true", "referer" => "/history") + follow_redirect! + assert_response :success + assert_template "sessions/new" + post auth_path(:provider => "windowslive", :origin => "/login?referer=%2Fhistory", :referer => "/history") + assert_response :redirect + assert_redirected_to auth_success_path(:provider => "windowslive") + follow_redirect! + assert_response :redirect + follow_redirect! + assert_response :success + assert_template "sessions/new" + assert_select "span.username", false + assert_select "div.alert.alert-danger", /your account has been suspended/ do + assert_select "a[href='mailto:openstreetmap@example.com']", "support" + end + end + + def test_login_windowslive_blocked + user = create(:user, :auth_provider => "windowslive", :auth_uid => "1234567890") + create(:user_block, :needs_view, :user => user) + OmniAuth.config.add_mock(:windowslive, :uid => user.auth_uid) + + get "/login", :params => { :referer => "/history" } + assert_response :redirect + assert_redirected_to login_path("cookie_test" => "true", "referer" => "/history") + follow_redirect! + assert_response :success + assert_template "sessions/new" + post auth_path(:provider => "windowslive", :origin => "/login?referer=%2Fhistory", :referer => "/history") + assert_response :redirect + assert_redirected_to auth_success_path(:provider => "windowslive") + follow_redirect! + assert_response :redirect + follow_redirect! + assert_response :success + assert_template "user_blocks/show" + assert_select "span.username", user.display_name + end + def test_login_windowslive_connection_failed OmniAuth.config.mock_auth[:windowslive] = :connection_failed @@ -690,7 +960,7 @@ class UserLoginTest < ActionDispatch::IntegrationTest follow_redirect! assert_response :success assert_template "sessions/new" - assert_select "div.flash.error", "Connection to authentication provider failed" + assert_select "div.alert.alert-danger", "Connection to authentication provider failed" assert_select "span.username", false end @@ -714,7 +984,7 @@ class UserLoginTest < ActionDispatch::IntegrationTest follow_redirect! assert_response :success assert_template "sessions/new" - assert_select "div.flash.error", "Invalid authentication credentials" + assert_select "div.alert.alert-danger", "Invalid authentication credentials" assert_select "span.username", false end @@ -759,6 +1029,72 @@ class UserLoginTest < ActionDispatch::IntegrationTest assert_select "span.username", user.display_name end + def test_login_github_pending + user = create(:user, :pending, :auth_provider => "github", :auth_uid => "1234567890") + OmniAuth.config.add_mock(:github, :uid => user.auth_uid) + + get "/login", :params => { :referer => "/history" } + assert_response :redirect + assert_redirected_to login_path("cookie_test" => "true", "referer" => "/history") + follow_redirect! + assert_response :success + assert_template "sessions/new" + post auth_path(:provider => "github", :origin => "/login?referer=%2Fhistory", :referer => "/history") + assert_response :redirect + assert_redirected_to auth_success_path(:provider => "github") + follow_redirect! + assert_response :redirect + follow_redirect! + assert_response :success + assert_template "confirm" + end + + def test_login_github_suspended + user = create(:user, :suspended, :auth_provider => "github", :auth_uid => "1234567890") + OmniAuth.config.add_mock(:github, :uid => user.auth_uid) + + get "/login", :params => { :referer => "/history" } + assert_response :redirect + assert_redirected_to login_path("cookie_test" => "true", "referer" => "/history") + follow_redirect! + assert_response :success + assert_template "sessions/new" + post auth_path(:provider => "github", :origin => "/login?referer=%2Fhistory", :referer => "/history") + assert_response :redirect + assert_redirected_to auth_success_path(:provider => "github") + follow_redirect! + assert_response :redirect + follow_redirect! + assert_response :success + assert_template "sessions/new" + assert_select "span.username", false + assert_select "div.alert.alert-danger", /your account has been suspended/ do + assert_select "a[href='mailto:openstreetmap@example.com']", "support" + end + end + + def test_login_github_blocked + user = create(:user, :auth_provider => "github", :auth_uid => "1234567890") + create(:user_block, :needs_view, :user => user) + OmniAuth.config.add_mock(:github, :uid => user.auth_uid) + + get "/login", :params => { :referer => "/history" } + assert_response :redirect + assert_redirected_to login_path("cookie_test" => "true", "referer" => "/history") + follow_redirect! + assert_response :success + assert_template "sessions/new" + post auth_path(:provider => "github", :origin => "/login?referer=%2Fhistory", :referer => "/history") + assert_response :redirect + assert_redirected_to auth_success_path(:provider => "github") + follow_redirect! + assert_response :redirect + follow_redirect! + assert_response :success + assert_template "user_blocks/show" + assert_select "span.username", user.display_name + end + def test_login_github_connection_failed OmniAuth.config.mock_auth[:github] = :connection_failed @@ -779,7 +1115,7 @@ class UserLoginTest < ActionDispatch::IntegrationTest follow_redirect! assert_response :success assert_template "sessions/new" - assert_select "div.flash.error", "Connection to authentication provider failed" + assert_select "div.alert.alert-danger", "Connection to authentication provider failed" assert_select "span.username", false end @@ -803,7 +1139,7 @@ class UserLoginTest < ActionDispatch::IntegrationTest follow_redirect! assert_response :success assert_template "sessions/new" - assert_select "div.flash.error", "Invalid authentication credentials" + assert_select "div.alert.alert-danger", "Invalid authentication credentials" assert_select "span.username", false end @@ -848,6 +1184,72 @@ class UserLoginTest < ActionDispatch::IntegrationTest assert_select "span.username", user.display_name end + def test_login_wikipedia_pending + user = create(:user, :pending, :auth_provider => "wikipedia", :auth_uid => "1234567890") + OmniAuth.config.add_mock(:wikipedia, :uid => user.auth_uid) + + get "/login", :params => { :referer => "/history" } + assert_response :redirect + assert_redirected_to login_path("cookie_test" => "true", "referer" => "/history") + follow_redirect! + assert_response :success + assert_template "sessions/new" + post auth_path(:provider => "wikipedia", :origin => "/login?referer=%2Fhistory", :referer => "/history") + assert_response :redirect + assert_redirected_to auth_success_path(:provider => "wikipedia", :origin => "/login?referer=%2Fhistory", :referer => "/history") + follow_redirect! + assert_response :redirect + follow_redirect! + assert_response :success + assert_template "confirm" + end + + def test_login_wikipedia_suspended + user = create(:user, :suspended, :auth_provider => "wikipedia", :auth_uid => "1234567890") + OmniAuth.config.add_mock(:wikipedia, :uid => user.auth_uid) + + get "/login", :params => { :referer => "/history" } + assert_response :redirect + assert_redirected_to login_path("cookie_test" => "true", "referer" => "/history") + follow_redirect! + assert_response :success + assert_template "sessions/new" + post auth_path(:provider => "wikipedia", :origin => "/login?referer=%2Fhistory", :referer => "/history") + assert_response :redirect + assert_redirected_to auth_success_path(:provider => "wikipedia", :origin => "/login?referer=%2Fhistory", :referer => "/history") + follow_redirect! + assert_response :redirect + follow_redirect! + assert_response :success + assert_template "sessions/new" + assert_select "span.username", false + assert_select "div.alert.alert-danger", /your account has been suspended/ do + assert_select "a[href='mailto:openstreetmap@example.com']", "support" + end + end + + def test_login_wikipedia_blocked + user = create(:user, :auth_provider => "wikipedia", :auth_uid => "1234567890") + create(:user_block, :needs_view, :user => user) + OmniAuth.config.add_mock(:wikipedia, :uid => user.auth_uid) + + get "/login", :params => { :referer => "/history" } + assert_response :redirect + assert_redirected_to login_path("cookie_test" => "true", "referer" => "/history") + follow_redirect! + assert_response :success + assert_template "sessions/new" + post auth_path(:provider => "wikipedia", :origin => "/login?referer=%2Fhistory", :referer => "/history") + assert_response :redirect + assert_redirected_to auth_success_path(:provider => "wikipedia", :origin => "/login?referer=%2Fhistory", :referer => "/history") + follow_redirect! + assert_response :redirect + follow_redirect! + assert_response :success + assert_template "user_blocks/show" + assert_select "span.username", user.display_name + end + def test_login_wikipedia_connection_failed OmniAuth.config.mock_auth[:wikipedia] = :connection_failed @@ -868,7 +1270,7 @@ class UserLoginTest < ActionDispatch::IntegrationTest follow_redirect! assert_response :success assert_template "sessions/new" - assert_select "div.flash.error", "Connection to authentication provider failed" + assert_select "div.alert.alert-danger", "Connection to authentication provider failed" assert_select "span.username", false end @@ -892,7 +1294,7 @@ class UserLoginTest < ActionDispatch::IntegrationTest follow_redirect! assert_response :success assert_template "sessions/new" - assert_select "div.flash.error", "Invalid authentication credentials" + assert_select "div.alert.alert-danger", "Invalid authentication credentials" assert_select "span.username", false end