X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/6e5240e1987a429e29d230e811af9176772a8228..124ec2e9d560e0df291e5a8e5aa67ef5db2f5d46:/test/controllers/amf_controller_test.rb diff --git a/test/controllers/amf_controller_test.rb b/test/controllers/amf_controller_test.rb index a57da557d..83ef03bbf 100644 --- a/test/controllers/amf_controller_test.rb +++ b/test/controllers/amf_controller_test.rb @@ -3,8 +3,6 @@ require "stringio" include Potlatch class AmfControllerTest < ActionController::TestCase - api_fixtures - ## # test all routes which lead to this controller def test_routes @@ -19,8 +17,8 @@ class AmfControllerTest < ActionController::TestCase end def test_getpresets - user_en_de = create(:user, :languages => %w(en de)) - user_de = create(:user, :languages => %w(de)) + user_en_de = create(:user, :languages => %w[en de]) + user_de = create(:user, :languages => %w[de]) [user_en_de, user_de].each do |user| amf_content "getpresets", "/1", ["#{user.email}:test", ""] post :amf_read @@ -253,12 +251,15 @@ class AmfControllerTest < ActionController::TestCase end def test_whichways_deleted - node = create(:node, :lat => 3.0, :lon => 3.0) - way = create(:way) - deleted_way = create(:way, :deleted) + node = create(:node, :with_history, :lat => 24.0, :lon => 24.0) + way = create(:way, :with_history) + way_v1 = way.old_ways.find_by(:version => 1) + deleted_way = create(:way, :with_history, :deleted) + deleted_way_v1 = deleted_way.old_ways.find_by(:version => 1) create(:way_node, :way => way, :node => node) create(:way_node, :way => deleted_way, :node => node) - create(:way_tag, :way => way) + create(:old_way_node, :old_way => way_v1, :node => node) + create(:old_way_node, :old_way => deleted_way_v1, :node => node) minlon = node.lon - 0.1 minlat = node.lat - 0.1 @@ -276,9 +277,9 @@ class AmfControllerTest < ActionController::TestCase assert_equal Array, map[2].class, "third map element should be an array" # TODO: looks like amf_controller changed since this test was written # so someone who knows what they're doing should check this! - assert !map[2].include?(current_ways(:used_way).id), - "map should not include used way" - assert map[2].include?(current_ways(:invisible_way).id), + assert !map[2].include?(way.id), + "map should not include visible way" + assert map[2].include?(deleted_way.id), "map should include deleted way" end @@ -331,14 +332,16 @@ class AmfControllerTest < ActionController::TestCase end def test_getway_old + latest = create(:way, :version => 2) + v1 = create(:old_way, :current_way => latest, :version => 1, :timestamp => Time.now.utc - 2.minutes) + _v2 = create(:old_way, :current_way => latest, :version => 2, :timestamp => Time.now.utc - 1.minute) + # try to get the last visible version (specified by <0) (should be current version) - latest = current_ways(:way_with_versions) # 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_v2) { latest.id => "", - v1.way_id => v1.timestamp.strftime("%d %b %Y, %H:%M:%S") }.each do |id, t| + v1.way_id => (v1.timestamp + 1).strftime("%d %b %Y, %H:%M:%S") }.each do |id, t| amf_content "getway_old", "/1", [id, t] post :amf_read assert_response :success @@ -355,7 +358,7 @@ class AmfControllerTest < ActionController::TestCase # test that the server doesn't fall over when rubbish is passed # into the method args. def test_getway_old_invalid - way_id = current_ways(:way_with_versions).id + way_id = create(:way, :with_history, :version => 2).id { "foo" => "bar", way_id => "not a date", way_id => "2009-03-25 00:00:00", # <- wrong format @@ -375,7 +378,8 @@ class AmfControllerTest < ActionController::TestCase def test_getway_old_nonexistent # try to get the last version-10 (shoudn't exist) - v1 = ways(:way_with_versions_v1) + way = create(:way, :with_history, :version => 2) + v1 = way.old_ways.find_by(:version => 1) # try to get last visible version of non-existent way # try to get specific version of non-existent way [[0, ""], @@ -394,7 +398,8 @@ class AmfControllerTest < ActionController::TestCase end def test_getway_old_invisible - v1 = ways(:invisible_way) + way = create(:way, :deleted, :with_history, :version => 1) + v1 = way.old_ways.find_by(:version => 1) # 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] @@ -410,8 +415,9 @@ class AmfControllerTest < ActionController::TestCase end def test_getway_history - latest = current_ways(:way_with_versions) - oldest = ways(:way_with_versions_v1) + latest = create(:way, :version => 2) + oldest = create(:old_way, :current_way => latest, :version => 1, :timestamp => latest.timestamp - 2.minutes) + create(:old_way, :current_way => latest, :version => 2, :timestamp => latest.timestamp) amf_content "getway_history", "/1", [latest.id] post :amf_read @@ -529,7 +535,9 @@ class AmfControllerTest < ActionController::TestCase end def test_findgpx_by_name - amf_content "findgpx", "/1", ["Trace", "test@example.com:test"] + user = create(:user) + + amf_content "findgpx", "/1", ["Trace", "#{user.email}:test"] post :amf_read assert_response :success amf_parse_response @@ -1310,7 +1318,9 @@ class AmfControllerTest < ActionController::TestCase # check that we can open a changeset def test_startchangeset_valid - amf_content "startchangeset", "/1", ["test@example.com:test", { "source" => "new" }, nil, "new", 1] + user = create(:user) + + amf_content "startchangeset", "/1", ["#{user.email}:test", { "source" => "new" }, nil, "new", 1] post :amf_write assert_response :success amf_parse_response @@ -1327,7 +1337,7 @@ class AmfControllerTest < ActionController::TestCase old_cs_id = new_cs_id - amf_content "startchangeset", "/1", ["test@example.com:test", { "source" => "newer" }, old_cs_id, "newer", 1] + amf_content "startchangeset", "/1", ["#{user.email}:test", { "source" => "newer" }, old_cs_id, "newer", 1] post :amf_write assert_response :success amf_parse_response @@ -1350,7 +1360,7 @@ class AmfControllerTest < ActionController::TestCase old_cs_id = new_cs_id - amf_content "startchangeset", "/1", ["test@example.com:test", {}, old_cs_id, "", 0] + amf_content "startchangeset", "/1", ["#{user.email}:test", {}, old_cs_id, "", 0] post :amf_write assert_response :success amf_parse_response @@ -1368,7 +1378,10 @@ class AmfControllerTest < ActionController::TestCase # check that we can't close somebody elses changeset def test_startchangeset_invalid_wrong_user - amf_content "startchangeset", "/1", ["test@example.com:test", { "source" => "new" }, nil, "new", 1] + user = create(:user) + user2 = create(:user) + + amf_content "startchangeset", "/1", ["#{user.email}:test", { "source" => "new" }, nil, "new", 1] post :amf_write assert_response :success amf_parse_response @@ -1383,7 +1396,7 @@ class AmfControllerTest < ActionController::TestCase assert_equal true, cs.is_open? assert_equal({ "comment" => "new", "source" => "new" }, cs.tags) - amf_content "startchangeset", "/1", ["test@openstreetmap.org:test", {}, cs_id, "delete", 0] + amf_content "startchangeset", "/1", ["#{user2.email}:test", {}, cs_id, "delete", 0] post :amf_write assert_response :success amf_parse_response @@ -1400,10 +1413,12 @@ class AmfControllerTest < ActionController::TestCase # check that invalid characters are stripped from changeset tags def test_startchangeset_invalid_xmlchar_comment + user = create(:user) + invalid = "\035\022" comment = "foo#{invalid}bar" - amf_content "startchangeset", "/1", ["test@example.com:test", {}, nil, comment, 1] + amf_content "startchangeset", "/1", ["#{user.email}:test", {}, nil, comment, 1] post :amf_write assert_response :success amf_parse_response