A few more edge cases

This commit is contained in:
Tom Hughes 2015-03-08 23:02:04 +00:00
parent 35be112092
commit 23f568cf3a
3 changed files with 81 additions and 4 deletions

View file

@ -376,8 +376,9 @@ class AmfController < ApplicationController
timestamp = DateTime.strptime(timestamp.to_s, "%d %b %Y, %H:%M:%S") 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 old_way = OldWay.where("way_id = ? AND timestamp <= ?", id, timestamp).unredacted.order("timestamp DESC").first
unless old_way.nil? unless old_way.nil?
points = old_way.get_nodes_revert(timestamp) if old_way.visible
unless 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] return [-1, "Sorry, the way was deleted at that time - please revert to a previous version.", id]
end end
end end

View file

@ -306,7 +306,7 @@ class AmfControllerTest < ActionController::TestCase
# NOTE: looks from the API changes that this now expects a timestamp # NOTE: looks from the API changes that this now expects a timestamp
# instead of a version number... # instead of a version number...
# try to get version 1 # try to get version 1
v1 = ways(:way_with_versions_v1) v1 = ways(:way_with_versions_v2)
{ latest.id => "", { latest.id => "",
v1.way_id => v1.timestamp.strftime("%d %b %Y, %H:%M:%S") v1.way_id => v1.timestamp.strftime("%d %b %Y, %H:%M:%S")
}.each do |id, t| }.each do |id, t|
@ -346,7 +346,7 @@ class AmfControllerTest < ActionController::TestCase
end end
def test_getway_old_nonexistent 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) v1 = ways(:way_with_versions_v1)
# try to get last visible version of non-existent way # try to get last visible version of non-existent way
# try to get specific version of non-existent way # try to get specific version of non-existent way
@ -366,6 +366,23 @@ class AmfControllerTest < ActionController::TestCase
end end
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 def test_getway_history
latest = current_ways(:way_with_versions) latest = current_ways(:way_with_versions)
oldest = ways(:way_with_versions_v1) oldest = ways(:way_with_versions_v1)

View file

@ -558,6 +558,42 @@ class UserLoginTest < ActionDispatch::IntegrationTest
assert_select "div.flash.error", /your account has been suspended/ assert_select "div.flash.error", /your account has been suspended/
end 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 def test_login_openid_success
OmniAuth.config.add_mock(:openid, :uid => "http://localhost:1123/john.doe") OmniAuth.config.add_mock(:openid, :uid => "http://localhost:1123/john.doe")
@ -580,6 +616,29 @@ class UserLoginTest < ActionDispatch::IntegrationTest
assert_select "span.username", "openIDuser" assert_select "span.username", "openIDuser"
end 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 def test_login_openid_connection_failed
OmniAuth.config.mock_auth[:openid] = :connection_failed OmniAuth.config.mock_auth[:openid] = :connection_failed