end
def test_logout_without_referer
+ post :logout
+ assert_response :redirect
+ assert_redirected_to root_path
+ end
+
+ def test_logout_with_referer
+ post :logout, :params => { :referer => "/test" }
+ assert_response :redirect
+ assert_redirected_to "/test"
+ end
+
+ def test_logout_fallback_without_referer
get :logout
assert_response :success
assert_template :logout
assert_select "input[name=referer][value=?]", ""
-
- session_id = assert_select("input[name=session]").first["value"]
-
- get :logout, :params => { :session => session_id }
- assert_response :redirect
- assert_redirected_to root_path
end
- def test_logout_with_referer
+ def test_logout_fallback_with_referer
get :logout, :params => { :referer => "/test" }
assert_response :success
assert_template :logout
assert_select "input[name=referer][value=?]", "/test"
-
- session_id = assert_select("input[name=session]").first["value"]
-
- get :logout, :params => { :session => session_id, :referer => "/test" }
- assert_response :redirect
- assert_redirected_to "/test"
end
def test_logout_with_token
session[:token] = token.token
- get :logout
- assert_response :success
- assert_template :logout
- assert_select "input[name=referer][value=?]", ""
- assert_equal token.token, session[:token]
- assert_not_nil UserToken.where(:id => token.id).first
-
- session_id = assert_select("input[name=session]").first["value"]
-
- get :logout, :params => { :session => session_id }
+ post :logout
assert_response :redirect
assert_redirected_to root_path
assert_nil session[:token]
--- /dev/null
+require "application_system_test_case"
+
+class UserLogoutTest < ApplicationSystemTestCase
+ test "Sign out via link" do
+ user = create(:user)
+ sign_in_as(user)
+ assert_not page.has_content? "Log In"
+
+ click_on user.display_name
+ click_on "Log Out"
+ assert page.has_content? "Log In"
+ end
+
+ test "Sign out via link with referer" do
+ user = create(:user)
+ sign_in_as(user)
+ visit traces_path
+ assert_not page.has_content? "Log In"
+
+ click_on user.display_name
+ click_on "Log Out"
+ assert page.has_content? "Log In"
+ assert page.has_content? "Public GPS traces"
+ end
+
+ test "Sign out via fallback page" do
+ sign_in_as(create(:user))
+ assert_not page.has_content? "Log In"
+
+ visit logout_path
+ assert page.has_content? "Logout from OpenStreetMap"
+
+ click_button "Logout"
+ assert page.has_content? "Log In"
+ end
+
+ test "Sign out via fallback page with referer" do
+ sign_in_as(create(:user))
+ assert_not page.has_content? "Log In"
+
+ visit logout_path(:referer => "/traces")
+ assert page.has_content? "Logout from OpenStreetMap"
+
+ click_button "Logout"
+ assert page.has_content? "Log In"
+ assert page.has_content? "Public GPS traces"
+ end
+end