- perform_enqueued_jobs do
- post :save, :session => { :new_user => user,
- :referer => "/edit?editor=id#map=1/2/3" }
- end
- end
- end
-
- assert_equal welcome_path(:editor => "id", :zoom => 1, :lat => 2, :lon => 3),
- user.tokens.order("id DESC").first.referer
-
- ActionMailer::Base.deliveries.clear
- end
-
- def test_logout_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
- 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
- token = create(:user).tokens.create
-
- 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 }
- assert_response :redirect
- assert_redirected_to root_path
- assert_nil session[:token]
- assert_nil UserToken.where(:id => token.id).first
- end
-
- def test_confirm_get
- user = create(:user, :pending)
- confirm_string = user.tokens.create.token
-
- @request.cookies["_osm_session"] = user.display_name
- get :confirm, :params => { :display_name => user.display_name, :confirm_string => confirm_string }
- assert_response :success
- assert_template :confirm
- end
-
- def test_confirm_get_already_confirmed
- user = create(:user)
- confirm_string = user.tokens.create.token
-
- @request.cookies["_osm_session"] = user.display_name
- get :confirm, :params => { :display_name => user.display_name, :confirm_string => confirm_string }
- assert_response :redirect
- assert_redirected_to root_path
- end
-
- def test_confirm_success_no_token_no_referer
- user = create(:user, :pending)
- stub_gravatar_request(user.email)
- confirm_string = user.tokens.create.token
-
- @request.cookies["_osm_session"] = user.display_name
- post :confirm, :params => { :display_name => user.display_name, :confirm_string => confirm_string }
- assert_redirected_to login_path
- assert_match(/Confirmed your account/, flash[:notice])
- end
-
- def test_confirm_success_good_token_no_referer
- user = create(:user, :pending)
- stub_gravatar_request(user.email)
- confirm_string = user.tokens.create.token
- token = user.tokens.create.token
-
- @request.cookies["_osm_session"] = user.display_name
- post :confirm, :params => { :display_name => user.display_name, :confirm_string => confirm_string }, :session => { :token => token }
- assert_redirected_to welcome_path
- end
-
- def test_confirm_success_bad_token_no_referer
- user = create(:user, :pending)
- stub_gravatar_request(user.email)
- confirm_string = user.tokens.create.token
- token = create(:user).tokens.create.token
-
- @request.cookies["_osm_session"] = user.display_name
- post :confirm, :params => { :display_name => user.display_name, :confirm_string => confirm_string }, :session => { :token => token }
- assert_redirected_to login_path
- assert_match(/Confirmed your account/, flash[:notice])
- end
-
- def test_confirm_success_no_token_with_referer
- user = create(:user, :pending)
- stub_gravatar_request(user.email)
- confirm_string = user.tokens.create(:referer => diary_new_path).token
-
- @request.cookies["_osm_session"] = user.display_name
- post :confirm, :params => { :display_name => user.display_name, :confirm_string => confirm_string }
- assert_redirected_to login_path(:referer => diary_new_path)
- assert_match(/Confirmed your account/, flash[:notice])
- end
-
- def test_confirm_success_good_token_with_referer
- user = create(:user, :pending)
- stub_gravatar_request(user.email)
- confirm_string = user.tokens.create(:referer => diary_new_path).token
- token = user.tokens.create.token
-
- @request.cookies["_osm_session"] = user.display_name
- post :confirm, :params => { :display_name => user.display_name, :confirm_string => confirm_string }, :session => { :token => token }
- assert_redirected_to diary_new_path
- end
-
- def test_confirm_success_bad_token_with_referer
- user = create(:user, :pending)
- stub_gravatar_request(user.email)
- confirm_string = user.tokens.create(:referer => diary_new_path).token
- token = create(:user).tokens.create.token
-
- @request.cookies["_osm_session"] = user.display_name
- post :confirm, :params => { :display_name => user.display_name, :confirm_string => confirm_string }, :session => { :token => token }
- assert_redirected_to login_path(:referer => diary_new_path)
- assert_match(/Confirmed your account/, flash[:notice])
- end
-
- def test_confirm_expired_token
- user = create(:user, :pending)
- confirm_string = user.tokens.create(:expiry => 1.day.ago).token
-
- @request.cookies["_osm_session"] = user.display_name
- post :confirm, :params => { :display_name => user.display_name, :confirm_string => confirm_string }
- assert_redirected_to :action => "confirm"
- assert_match(/confirmation code has expired/, flash[:error])
- end
-
- def test_confirm_already_confirmed
- user = create(:user)
- confirm_string = user.tokens.create(:referer => diary_new_path).token
-
- @request.cookies["_osm_session"] = user.display_name
- post :confirm, :params => { :display_name => user.display_name, :confirm_string => confirm_string }
- assert_redirected_to :action => "login"
- assert_match(/already been confirmed/, flash[:error])
- end
-
- def test_confirm_resend_success
- user = create(:user, :pending)
- session[:token] = user.tokens.create.token
-
- assert_difference "ActionMailer::Base.deliveries.size", 1 do
- perform_enqueued_jobs do
- get :confirm_resend, :params => { :display_name => user.display_name }