From 23f568cf3a0f4a5f102952ebe68d6d2636e82b1b Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sun, 8 Mar 2015 23:02:04 +0000 Subject: [PATCH] A few more edge cases --- app/controllers/amf_controller.rb | 5 ++- test/controllers/amf_controller_test.rb | 21 ++++++++- test/integration/user_login_test.rb | 59 +++++++++++++++++++++++++ 3 files changed, 81 insertions(+), 4 deletions(-) diff --git a/app/controllers/amf_controller.rb b/app/controllers/amf_controller.rb index 4c9dbb114..fb50b6aad 100644 --- a/app/controllers/amf_controller.rb +++ b/app/controllers/amf_controller.rb @@ -376,8 +376,9 @@ class AmfController < ApplicationController timestamp = DateTime.strptime(timestamp.to_s, "%d %b %Y, %H:%M:%S") old_way = OldWay.where("way_id = ? AND timestamp <= ?", id, timestamp).unredacted.order("timestamp DESC").first unless old_way.nil? - points = old_way.get_nodes_revert(timestamp) - unless old_way.visible + if old_way.visible + points = old_way.get_nodes_revert(timestamp) + else return [-1, "Sorry, the way was deleted at that time - please revert to a previous version.", id] end end diff --git a/test/controllers/amf_controller_test.rb b/test/controllers/amf_controller_test.rb index 554456837..13f01530d 100644 --- a/test/controllers/amf_controller_test.rb +++ b/test/controllers/amf_controller_test.rb @@ -306,7 +306,7 @@ class AmfControllerTest < ActionController::TestCase # NOTE: looks from the API changes that this now expects a timestamp # instead of a version number... # try to get version 1 - v1 = ways(:way_with_versions_v1) + v1 = ways(:way_with_versions_v2) { latest.id => "", v1.way_id => v1.timestamp.strftime("%d %b %Y, %H:%M:%S") }.each do |id, t| @@ -346,7 +346,7 @@ class AmfControllerTest < ActionController::TestCase end def test_getway_old_nonexistent - # try to get the last version+10 (shoudn't exist) + # try to get the last version-10 (shoudn't exist) v1 = ways(:way_with_versions_v1) # try to get last visible version of non-existent way # try to get specific version of non-existent way @@ -366,6 +366,23 @@ class AmfControllerTest < ActionController::TestCase end end + def test_getway_old_invisible + v1 = ways(:invisible_way) + # try to get deleted version + [[v1.way_id, (v1.timestamp + 10).strftime("%d %b %Y, %H:%M:%S")] + ].each do |id, t| + amf_content "getway_old", "/1", [id, t] + post :amf_read + assert_response :success + amf_parse_response + returned_way = amf_result("/1") + assert_equal -1, returned_way[0] + assert returned_way[3].nil? + assert returned_way[4].nil? + assert returned_way[5].nil? + end + end + def test_getway_history latest = current_ways(:way_with_versions) oldest = ways(:way_with_versions_v1) diff --git a/test/integration/user_login_test.rb b/test/integration/user_login_test.rb index 534af094c..131742a27 100644 --- a/test/integration/user_login_test.rb +++ b/test/integration/user_login_test.rb @@ -558,6 +558,42 @@ class UserLoginTest < ActionDispatch::IntegrationTest assert_select "div.flash.error", /your account has been suspended/ end + def test_login_email_password_remember_me + user = users(:normal_user) + + get "/login" + assert_response :redirect + assert_redirected_to :controller => :user, :action => :login, :cookie_test => true + follow_redirect! + assert_response :success + + post "/login", :username => user.email, :password => "test", :remember_me => true, :referer => "/history" + assert_response :redirect + follow_redirect! + assert_response :success + assert_template "changeset/history" + assert_select "span.username", "test" + assert session.key?(:_remember_for) + end + + def test_login_username_password_remember_me + user = users(:normal_user) + + get "/login" + assert_response :redirect + assert_redirected_to :controller => :user, :action => :login, :cookie_test => true + follow_redirect! + assert_response :success + + post "/login", :username => user.display_name, :password => "test", :remember_me => true, :referer => "/history" + assert_response :redirect + follow_redirect! + assert_response :success + assert_template "changeset/history" + assert_select "span.username", "test" + assert session.key?(:_remember_for) + end + def test_login_openid_success OmniAuth.config.add_mock(:openid, :uid => "http://localhost:1123/john.doe") @@ -580,6 +616,29 @@ class UserLoginTest < ActionDispatch::IntegrationTest assert_select "span.username", "openIDuser" end + def test_login_openid_remember_me + OmniAuth.config.add_mock(:openid, :uid => "http://localhost:1123/john.doe") + + 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", :remember_me_openid => true, :referer => "/history" + assert_response :redirect + assert_redirected_to auth_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login") + follow_redirect! + assert_response :redirect + assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login") + follow_redirect! + assert_response :redirect + follow_redirect! + assert_response :success + assert_template "changeset/history" + assert_select "span.username", "openIDuser" + assert session.key?(:_remember_for) + end + def test_login_openid_connection_failed OmniAuth.config.mock_auth[:openid] = :connection_failed -- 2.43.2