+ 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
+