]> git.openstreetmap.org Git - rails.git/blobdiff - test/controllers/api/amf_controller_test.rb
Remove link_to_if since it's in a clause with the same condition
[rails.git] / test / controllers / api / amf_controller_test.rb
index 241efa9376b6657faae75a0e938d8280db5de4b6..47cced6ff2bb347a58d767bc218ae74ccd175df5 100644 (file)
@@ -1,7 +1,7 @@
 require "test_helper"
 
 module Api
 require "test_helper"
 
 module Api
-  class AmfControllerTest < ActionController::TestCase
+  class AmfControllerTest < ActionDispatch::IntegrationTest
     include Potlatch
 
     ##
     include Potlatch
 
     ##
@@ -21,7 +21,7 @@ module Api
       user_en_de = create(:user, :languages => %w[en de])
       user_de = create(:user, :languages => %w[de])
       [user_en_de, user_de].each do |user|
       user_en_de = create(:user, :languages => %w[en de])
       user_de = create(:user, :languages => %w[de])
       [user_en_de, user_de].each do |user|
-        post :amf_read, :body => amf_content("getpresets", "/1", ["#{user.email}:test", ""])
+        post amf_read_path, amf_content("getpresets", "/1", ["#{user.email}:test", ""])
         assert_response :success
         amf_parse_response
         presets = amf_result("/1")
         assert_response :success
         amf_parse_response
         presets = amf_result("/1")
@@ -49,7 +49,7 @@ module Api
       node = way.nodes.first
       user = way.changeset.user
 
       node = way.nodes.first
       user = way.changeset.user
 
-      post :amf_read, :body => amf_content("getway", "/1", [way.id])
+      post amf_read_path, amf_content("getway", "/1", [way.id])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -66,7 +66,7 @@ module Api
       # check an invisible way
       id = create(:way, :deleted).id
 
       # check an invisible way
       id = create(:way, :deleted).id
 
-      post :amf_read, :body => amf_content("getway", "/1", [id])
+      post amf_read_path, amf_content("getway", "/1", [id])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -83,7 +83,7 @@ module Api
       node = way.nodes.first
       user = way.changeset.user
 
       node = way.nodes.first
       user = way.changeset.user
 
-      post :amf_read, :body => amf_content("getway", "/1", [way.id])
+      post amf_read_path, amf_content("getway", "/1", [way.id])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -104,7 +104,7 @@ module Api
       create(:way_node, :way => way, :node => node, :sequence_id => 2)
       user = way.changeset.user
 
       create(:way_node, :way => way, :node => node, :sequence_id => 2)
       user = way.changeset.user
 
-      post :amf_read, :body => amf_content("getway", "/1", [way.id])
+      post amf_read_path, amf_content("getway", "/1", [way.id])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -126,7 +126,7 @@ module Api
       c = way.nodes[2].id
       user = way.changeset.user
 
       c = way.nodes[2].id
       user = way.changeset.user
 
-      post :amf_read, :body => amf_content("getway", "/1", [way.id])
+      post amf_read_path, amf_content("getway", "/1", [way.id])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -143,7 +143,7 @@ module Api
 
     def test_getway_nonexistent
       # check chat a non-existent way is not returned
 
     def test_getway_nonexistent
       # check chat a non-existent way is not returned
-      post :amf_read, :body => amf_content("getway", "/1", [0])
+      post amf_read_path, amf_content("getway", "/1", [0])
       assert_response :success
       amf_parse_response
       way = amf_result("/1")
       assert_response :success
       amf_parse_response
       way = amf_result("/1")
@@ -165,7 +165,7 @@ module Api
       minlat = node.lat - 0.1
       maxlon = node.lon + 0.1
       maxlat = node.lat + 0.1
       minlat = node.lat - 0.1
       maxlon = node.lon + 0.1
       maxlat = node.lat + 0.1
-      post :amf_read, :body => amf_content("whichways", "/1", [minlon, minlat, maxlon, maxlat])
+      post amf_read_path, amf_content("whichways", "/1", [minlon, minlat, maxlon, maxlat])
       assert_response :success
       amf_parse_response
 
       assert_response :success
       amf_parse_response
 
@@ -258,7 +258,7 @@ module Api
       minlat = node.lat - 0.1
       maxlon = node.lon + 0.1
       maxlat = node.lat + 0.1
       minlat = node.lat - 0.1
       maxlon = node.lon + 0.1
       maxlat = node.lat + 0.1
-      post :amf_read, :body => amf_content("whichways_deleted", "/1", [minlon, minlat, maxlon, maxlat])
+      post amf_read_path, amf_content("whichways_deleted", "/1", [minlon, minlat, maxlon, maxlat])
       assert_response :success
       amf_parse_response
 
       assert_response :success
       amf_parse_response
 
@@ -277,7 +277,7 @@ module Api
 
     def test_whichways_deleted_toobig
       bbox = [-0.1, -0.1, 1.1, 1.1]
 
     def test_whichways_deleted_toobig
       bbox = [-0.1, -0.1, 1.1, 1.1]
-      post :amf_read, :body => amf_content("whichways_deleted", "/1", bbox)
+      post amf_read_path, amf_content("whichways_deleted", "/1", bbox)
       assert_response :success
       amf_parse_response
 
       assert_response :success
       amf_parse_response
 
@@ -287,34 +287,34 @@ module Api
 
     def test_getrelation
       id = create(:relation).id
 
     def test_getrelation
       id = create(:relation).id
-      post :amf_read, :body => amf_content("getrelation", "/1", [id])
+      post amf_read_path, amf_content("getrelation", "/1", [id])
       assert_response :success
       amf_parse_response
       rel = amf_result("/1")
       assert_response :success
       amf_parse_response
       rel = amf_result("/1")
-      assert_equal rel[0], 0
+      assert_equal(0, rel[0])
       assert_equal rel[2], id
     end
 
     def test_getrelation_invisible
       id = create(:relation, :deleted).id
       assert_equal rel[2], id
     end
 
     def test_getrelation_invisible
       id = create(:relation, :deleted).id
-      post :amf_read, :body => amf_content("getrelation", "/1", [id])
+      post amf_read_path, amf_content("getrelation", "/1", [id])
       assert_response :success
       amf_parse_response
       rel = amf_result("/1")
       assert_response :success
       amf_parse_response
       rel = amf_result("/1")
-      assert_equal rel[0], -4
-      assert_equal rel[1], "relation"
+      assert_equal(-4, rel[0])
+      assert_equal("relation", rel[1])
       assert_equal rel[2], id
       assert(rel[3].nil?) && rel[4].nil?
     end
 
     def test_getrelation_nonexistent
       id = 0
       assert_equal rel[2], id
       assert(rel[3].nil?) && rel[4].nil?
     end
 
     def test_getrelation_nonexistent
       id = 0
-      post :amf_read, :body => amf_content("getrelation", "/1", [id])
+      post amf_read_path, amf_content("getrelation", "/1", [id])
       assert_response :success
       amf_parse_response
       rel = amf_result("/1")
       assert_response :success
       amf_parse_response
       rel = amf_result("/1")
-      assert_equal rel[0], -4
-      assert_equal rel[1], "relation"
+      assert_equal(-4, rel[0])
+      assert_equal("relation", rel[1])
       assert_equal rel[2], id
       assert(rel[3].nil?) && rel[4].nil?
     end
       assert_equal rel[2], id
       assert(rel[3].nil?) && rel[4].nil?
     end
@@ -330,7 +330,7 @@ module Api
       # try to get version 1
       { latest.id => "",
         v1.way_id => (v1.timestamp + 1).strftime("%d %b %Y, %H:%M:%S") }.each do |id, t|
       # try to get version 1
       { latest.id => "",
         v1.way_id => (v1.timestamp + 1).strftime("%d %b %Y, %H:%M:%S") }.each do |id, t|
-        post :amf_read, :body => amf_content("getway_old", "/1", [id, t])
+        post amf_read_path, amf_content("getway_old", "/1", [id, t])
         assert_response :success
         amf_parse_response
         returned_way = amf_result("/1")
         assert_response :success
         amf_parse_response
         returned_way = amf_result("/1")
@@ -351,7 +351,7 @@ module Api
         way_id => "2009-03-25 00:00:00",                   # <- wrong format
         way_id => "0 Jan 2009 00:00:00",                   # <- invalid date
         -1 => "1 Jan 2009 00:00:00" }.each do |id, t| # <- invalid
         way_id => "2009-03-25 00:00:00",                   # <- wrong format
         way_id => "0 Jan 2009 00:00:00",                   # <- invalid date
         -1 => "1 Jan 2009 00:00:00" }.each do |id, t| # <- invalid
-        post :amf_read, :body => amf_content("getway_old", "/1", [id, t])
+        post amf_read_path, amf_content("getway_old", "/1", [id, t])
         assert_response :success
         amf_parse_response
         returned_way = amf_result("/1")
         assert_response :success
         amf_parse_response
         returned_way = amf_result("/1")
@@ -371,7 +371,7 @@ module Api
       [[0, ""],
        [0, "1 Jan 1970, 00:00:00"],
        [v1.way_id, (v1.timestamp - 10).strftime("%d %b %Y, %H:%M:%S")]].each do |id, t|
       [[0, ""],
        [0, "1 Jan 1970, 00:00:00"],
        [v1.way_id, (v1.timestamp - 10).strftime("%d %b %Y, %H:%M:%S")]].each do |id, t|
-        post :amf_read, :body => amf_content("getway_old", "/1", [id, t])
+        post amf_read_path, amf_content("getway_old", "/1", [id, t])
         assert_response :success
         amf_parse_response
         returned_way = amf_result("/1")
         assert_response :success
         amf_parse_response
         returned_way = amf_result("/1")
@@ -387,7 +387,7 @@ module Api
       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|
       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|
-        post :amf_read, :body => amf_content("getway_old", "/1", [id, t])
+        post amf_read_path, amf_content("getway_old", "/1", [id, t])
         assert_response :success
         amf_parse_response
         returned_way = amf_result("/1")
         assert_response :success
         amf_parse_response
         returned_way = amf_result("/1")
@@ -403,7 +403,7 @@ module Api
       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)
 
       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)
 
-      post :amf_read, :body => amf_content("getway_history", "/1", [latest.id])
+      post amf_read_path, amf_content("getway_history", "/1", [latest.id])
       assert_response :success
       amf_parse_response
       history = amf_result("/1")
       assert_response :success
       amf_parse_response
       history = amf_result("/1")
@@ -420,14 +420,14 @@ module Api
     end
 
     def test_getway_history_nonexistent
     end
 
     def test_getway_history_nonexistent
-      post :amf_read, :body => amf_content("getway_history", "/1", [0])
+      post amf_read_path, amf_content("getway_history", "/1", [0])
       assert_response :success
       amf_parse_response
       history = amf_result("/1")
 
       # ['way',wayid,history]
       assert_response :success
       amf_parse_response
       history = amf_result("/1")
 
       # ['way',wayid,history]
-      assert_equal history[0], "way"
-      assert_equal history[1], 0
+      assert_equal("way", history[0])
+      assert_equal(0, history[1])
       assert_empty history[2]
     end
 
       assert_empty history[2]
     end
 
@@ -437,7 +437,7 @@ module Api
       _node_v2 = create(:old_node, :current_node => node, :version => 2, :timestamp => 2.days.ago)
       node_v3 = create(:old_node, :current_node => node, :version => 3, :timestamp => 1.day.ago)
 
       _node_v2 = create(:old_node, :current_node => node, :version => 2, :timestamp => 2.days.ago)
       node_v3 = create(:old_node, :current_node => node, :version => 3, :timestamp => 1.day.ago)
 
-      post :amf_read, :body => amf_content("getnode_history", "/1", [node.id])
+      post amf_read_path, amf_content("getnode_history", "/1", [node.id])
       assert_response :success
       amf_parse_response
       history = amf_result("/1")
       assert_response :success
       amf_parse_response
       history = amf_result("/1")
@@ -445,8 +445,7 @@ module Api
       # ['node',nodeid,history]
       # note that (as per getway_history) we actually round up
       # to the next second
       # ['node',nodeid,history]
       # note that (as per getway_history) we actually round up
       # to the next second
-      assert_equal history[0], "node",
-                   'first element should be "node"'
+      assert_equal("node", history[0], 'first element should be "node"')
       assert_equal history[1], node.id,
                    "second element should be the input node ID"
       assert_equal history[2].first[0],
       assert_equal history[1], node.id,
                    "second element should be the input node ID"
       assert_equal history[2].first[0],
@@ -458,19 +457,19 @@ module Api
     end
 
     def test_getnode_history_nonexistent
     end
 
     def test_getnode_history_nonexistent
-      post :amf_read, :body => amf_content("getnode_history", "/1", [0])
+      post amf_read_path, amf_content("getnode_history", "/1", [0])
       assert_response :success
       amf_parse_response
       history = amf_result("/1")
 
       # ['node',nodeid,history]
       assert_response :success
       amf_parse_response
       history = amf_result("/1")
 
       # ['node',nodeid,history]
-      assert_equal history[0], "node"
-      assert_equal history[1], 0
+      assert_equal("node", history[0])
+      assert_equal(0, history[1])
       assert_empty history[2]
     end
 
     def test_findgpx_bad_user
       assert_empty history[2]
     end
 
     def test_findgpx_bad_user
-      post :amf_read, :body => amf_content("findgpx", "/1", [1, "test@example.com:wrong"])
+      post amf_read_path, amf_content("findgpx", "/1", [1, "test@example.com:wrong"])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -481,7 +480,7 @@ module Api
 
       blocked_user = create(:user)
       create(:user_block, :user => blocked_user)
 
       blocked_user = create(:user)
       create(:user_block, :user => blocked_user)
-      post :amf_read, :body => amf_content("findgpx", "/1", [1, "#{blocked_user.email}:test"])
+      post amf_read_path, amf_content("findgpx", "/1", [1, "#{blocked_user.email}:test"])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -495,7 +494,7 @@ module Api
       user = create(:user)
       trace = create(:trace, :visibility => "private", :user => user)
 
       user = create(:user)
       trace = create(:trace, :visibility => "private", :user => user)
 
-      post :amf_read, :body => amf_content("findgpx", "/1", [trace.id, "#{user.email}:test"])
+      post amf_read_path, amf_content("findgpx", "/1", [trace.id, "#{user.email}:test"])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -514,7 +513,7 @@ module Api
     def test_findgpx_by_name
       user = create(:user)
 
     def test_findgpx_by_name
       user = create(:user)
 
-      post :amf_read, :body => amf_content("findgpx", "/1", ["Trace", "#{user.email}:test"])
+      post amf_read_path, amf_content("findgpx", "/1", ["Trace", "#{user.email}:test"])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -527,7 +526,7 @@ module Api
     def test_findrelations_by_id
       relation = create(:relation, :version => 4)
 
     def test_findrelations_by_id
       relation = create(:relation, :version => 4)
 
-      post :amf_read, :body => amf_content("findrelations", "/1", [relation.id])
+      post amf_read_path, amf_content("findrelations", "/1", [relation.id])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -539,7 +538,7 @@ module Api
       assert_equal relation.members, result[0][2]
       assert_equal relation.version, result[0][3]
 
       assert_equal relation.members, result[0][2]
       assert_equal relation.version, result[0][3]
 
-      post :amf_read, :body => amf_content("findrelations", "/1", [999999])
+      post amf_read_path, amf_content("findrelations", "/1", [999999])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -556,7 +555,7 @@ module Api
       create(:relation_tag, :relation => used_relation, :k => "test", :v => "yes")
       create(:relation_tag, :relation => used_relation, :k => "name", :v => "Test Relation")
 
       create(:relation_tag, :relation => used_relation, :k => "test", :v => "yes")
       create(:relation_tag, :relation => used_relation, :k => "name", :v => "Test Relation")
 
-      post :amf_read, :body => amf_content("findrelations", "/1", ["yes"])
+      post amf_read_path, amf_content("findrelations", "/1", ["yes"])
       assert_response :success
       amf_parse_response
       result = amf_result("/1").sort
       assert_response :success
       amf_parse_response
       result = amf_result("/1").sort
@@ -573,7 +572,7 @@ module Api
       assert_equal used_relation.members, result[1][2]
       assert_equal used_relation.version, result[1][3]
 
       assert_equal used_relation.members, result[1][2]
       assert_equal used_relation.version, result[1][3]
 
-      post :amf_read, :body => amf_content("findrelations", "/1", ["no"])
+      post amf_read_path, amf_content("findrelations", "/1", ["no"])
       assert_response :success
       amf_parse_response
       result = amf_result("/1").sort
       assert_response :success
       amf_parse_response
       result = amf_result("/1").sort
@@ -585,7 +584,7 @@ module Api
       node = create(:node, :with_history, :version => 4)
       create(:node_tag, :node => node)
 
       node = create(:node, :with_history, :version => 4)
       create(:node_tag, :node => node)
 
-      post :amf_read, :body => amf_content("getpoi", "/1", [node.id, ""])
+      post amf_read_path, amf_content("getpoi", "/1", [node.id, ""])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -599,7 +598,7 @@ module Api
       assert_equal node.tags, result[5]
       assert_equal node.version, result[6]
 
       assert_equal node.tags, result[5]
       assert_equal node.version, result[6]
 
-      post :amf_read, :body => amf_content("getpoi", "/1", [999999, ""])
+      post amf_read_path, amf_content("getpoi", "/1", [999999, ""])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -618,7 +617,7 @@ module Api
       # previous whole second, causing <= comparison to fail
       timestamp = (node.timestamp + 1.second).xmlschema
 
       # previous whole second, causing <= comparison to fail
       timestamp = (node.timestamp + 1.second).xmlschema
 
-      post :amf_read, :body => amf_content("getpoi", "/1", [node.node_id, timestamp])
+      post amf_read_path, amf_content("getpoi", "/1", [node.node_id, timestamp])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -632,7 +631,7 @@ module Api
       assert_equal node.tags, result[5]
       assert_equal current_node.version, result[6]
 
       assert_equal node.tags, result[5]
       assert_equal current_node.version, result[6]
 
-      post :amf_read, :body => amf_content("getpoi", "/1", [node.node_id, "2000-01-01T00:00:00Z"])
+      post amf_read_path, amf_content("getpoi", "/1", [node.node_id, "2000-01-01T00:00:00Z"])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -642,7 +641,7 @@ module Api
       assert_equal "node", result[1]
       assert_equal node.node_id, result[2]
 
       assert_equal "node", result[1]
       assert_equal node.node_id, result[2]
 
-      post :amf_read, :body => amf_content("getpoi", "/1", [999999, Time.now.xmlschema])
+      post amf_read_path, amf_content("getpoi", "/1", [999999, Time.now.xmlschema])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -661,7 +660,7 @@ module Api
       nd = create(:node)
       cs_id = nd.changeset.id
       user = nd.changeset.user
       nd = create(:node)
       cs_id = nd.changeset.id
       user = nd.changeset.user
-      post :amf_write, :body => amf_content("putpoi", "/1", ["#{user.email}:test", cs_id, nd.version, nd.id, nd.lon, nd.lat, nd.tags, nd.visible])
+      post amf_write_path, amf_content("putpoi", "/1", ["#{user.email}:test", cs_id, nd.version, nd.id, nd.lon, nd.lat, nd.tags, nd.visible])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -676,7 +675,7 @@ module Api
       # Now try to update again, with a different lat/lon, using the updated version number
       lat = nd.lat + 0.1
       lon = nd.lon - 0.1
       # Now try to update again, with a different lat/lon, using the updated version number
       lat = nd.lat + 0.1
       lon = nd.lon - 0.1
-      post :amf_write, :body => amf_content("putpoi", "/2", ["#{user.email}:test", cs_id, nd.version + 1, nd.id, lon, lat, nd.tags, nd.visible])
+      post amf_write_path, amf_content("putpoi", "/2", ["#{user.email}:test", cs_id, nd.version + 1, nd.id, lon, lat, nd.tags, nd.visible])
       assert_response :success
       amf_parse_response
       result = amf_result("/2")
       assert_response :success
       amf_parse_response
       result = amf_result("/2")
@@ -701,7 +700,7 @@ module Api
       changeset = create(:changeset)
       user = changeset.user
 
       changeset = create(:changeset)
       user = changeset.user
 
-      post :amf_write, :body => amf_content("putpoi", "/1", ["#{user.email}:test", changeset.id, nil, nil, lon, lat, {}, nil])
+      post amf_write_path, amf_content("putpoi", "/1", ["#{user.email}:test", changeset.id, nil, nil, lon, lat, {}, nil])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -737,7 +736,7 @@ module Api
       lat = rand(-50..49) + rand
       lon = rand(-50..49) + rand
 
       lat = rand(-50..49) + rand
       lon = rand(-50..49) + rand
 
-      post :amf_write, :body => amf_content("putpoi", "/2", ["#{user.email}:test", changeset.id, nil, nil, lon, lat, { "key" => "value", "ping" => "pong" }, nil])
+      post amf_write_path, amf_content("putpoi", "/2", ["#{user.email}:test", changeset.id, nil, nil, lon, lat, { "key" => "value", "ping" => "pong" }, nil])
       assert_response :success
       amf_parse_response
       result = amf_result("/2")
       assert_response :success
       amf_parse_response
       result = amf_result("/2")
@@ -783,7 +782,7 @@ module Api
       mostly_invalid = (0..31).to_a.map(&:chr).join
       tags = { "something" => "foo#{mostly_invalid}bar" }
 
       mostly_invalid = (0..31).to_a.map(&:chr).join
       tags = { "something" => "foo#{mostly_invalid}bar" }
 
-      post :amf_write, :body => amf_content("putpoi", "/1", ["#{user.email}:test", changeset.id, nil, nil, lon, lat, tags, nil])
+      post amf_write_path, amf_content("putpoi", "/1", ["#{user.email}:test", changeset.id, nil, nil, lon, lat, tags, nil])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -818,7 +817,7 @@ module Api
       invalid = "\xc0\xc0"
       tags = { "something" => "foo#{invalid}bar" }
 
       invalid = "\xc0\xc0"
       tags = { "something" => "foo#{invalid}bar" }
 
-      post :amf_write, :body => amf_content("putpoi", "/1", ["#{user.email}:test", changeset.id, nil, nil, lon, lat, tags, nil])
+      post amf_write_path, amf_content("putpoi", "/1", ["#{user.email}:test", changeset.id, nil, nil, lon, lat, tags, nil])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -834,7 +833,7 @@ module Api
       cs_id = nd.changeset.id
       user = nd.changeset.user
 
       cs_id = nd.changeset.id
       user = nd.changeset.user
 
-      post :amf_write, :body => amf_content("putpoi", "/1", ["#{user.email}:test", cs_id, nd.version, nd.id, nd.lon, nd.lat, nd.tags, false])
+      post amf_write_path, amf_content("putpoi", "/1", ["#{user.email}:test", cs_id, nd.version, nd.id, nd.lon, nd.lat, nd.tags, false])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -856,7 +855,7 @@ module Api
       cs_id = nd.changeset.id
       user = nd.changeset.user
 
       cs_id = nd.changeset.id
       user = nd.changeset.user
 
-      post :amf_write, :body => amf_content("putpoi", "/1", ["#{user.email}:test", cs_id, nd.version, nd.id, nd.lon, nd.lat, nd.tags, false])
+      post amf_write_path, amf_content("putpoi", "/1", ["#{user.email}:test", cs_id, nd.version, nd.id, nd.lon, nd.lat, nd.tags, false])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -873,7 +872,7 @@ module Api
       cs_id = changeset.id
       user = changeset.user
 
       cs_id = changeset.id
       user = changeset.user
 
-      post :amf_write, :body => amf_content("putpoi", "/1", ["#{user.email}:test", cs_id, 1, 999999, 0, 0, {}, false])
+      post amf_write_path, amf_content("putpoi", "/1", ["#{user.email}:test", cs_id, 1, 999999, 0, 0, {}, false])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -890,7 +889,7 @@ module Api
       cs_id = nd.changeset.id
       user = nd.changeset.user
 
       cs_id = nd.changeset.id
       user = nd.changeset.user
 
-      post :amf_write, :body => amf_content("putpoi", "/1", ["#{user.email}:test", cs_id, nd.version, nd.id, 200, 100, nd.tags, true])
+      post amf_write_path, amf_content("putpoi", "/1", ["#{user.email}:test", cs_id, nd.version, nd.id, 200, 100, nd.tags, true])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -912,7 +911,7 @@ module Api
       d = create(:node).id
       e = create(:node).id
 
       d = create(:node).id
       e = create(:node).id
 
-      post :amf_write, :body => amf_content("putway", "/1", ["#{user.email}:test", cs_id, 0, -1, [a, b, c], { "test" => "new" }, [], {}])
+      post amf_write_path, amf_content("putway", "/1", ["#{user.email}:test", cs_id, 0, -1, [a, b, c], { "test" => "new" }, [], {}])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -933,7 +932,7 @@ module Api
       assert_equal [a, b, c], new_way.nds
       assert_equal({ "test" => "new" }, new_way.tags)
 
       assert_equal [a, b, c], new_way.nds
       assert_equal({ "test" => "new" }, new_way.tags)
 
-      post :amf_write, :body => amf_content("putway", "/1", ["#{user.email}:test", cs_id, 0, -1, [b, d, e, a], { "test" => "newer" }, [], {}])
+      post amf_write_path, amf_content("putway", "/1", ["#{user.email}:test", cs_id, 0, -1, [b, d, e, a], { "test" => "newer" }, [], {}])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -954,7 +953,7 @@ module Api
       assert_equal [b, d, e, a], new_way.nds
       assert_equal({ "test" => "newer" }, new_way.tags)
 
       assert_equal [b, d, e, a], new_way.nds
       assert_equal({ "test" => "newer" }, new_way.tags)
 
-      post :amf_write, :body => amf_content("putway", "/1", ["#{user.email}:test", cs_id, 0, -1, [b, -1, d, e], { "test" => "newest" }, [[4.56, 12.34, -1, 0, { "test" => "new" }], [12.34, 4.56, d, 1, { "test" => "ok" }]], { a => 1 }])
+      post amf_write_path, amf_content("putway", "/1", ["#{user.email}:test", cs_id, 0, -1, [b, -1, d, e], { "test" => "newest" }, [[4.56, 12.34, -1, 0, { "test" => "new" }], [12.34, 4.56, d, 1, { "test" => "ok" }]], { a => 1 }])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -979,15 +978,15 @@ module Api
       new_node = Node.find(new_node_id)
       assert_equal 1, new_node.version
       assert new_node.visible
       new_node = Node.find(new_node_id)
       assert_equal 1, new_node.version
       assert new_node.visible
-      assert_equal 4.56, new_node.lon
-      assert_equal 12.34, new_node.lat
+      assert_in_delta(4.56, new_node.lon)
+      assert_in_delta(12.34, new_node.lat)
       assert_equal({ "test" => "new" }, new_node.tags)
 
       changed_node = Node.find(d)
       assert_equal 2, changed_node.version
       assert changed_node.visible
       assert_equal({ "test" => "new" }, new_node.tags)
 
       changed_node = Node.find(d)
       assert_equal 2, changed_node.version
       assert changed_node.visible
-      assert_equal 12.34, changed_node.lon
-      assert_equal 4.56, changed_node.lat
+      assert_in_delta(12.34, changed_node.lon)
+      assert_in_delta(4.56, changed_node.lat)
       assert_equal({ "test" => "ok" }, changed_node.tags)
 
       # node is not deleted because our other ways are using it
       assert_equal({ "test" => "ok" }, changed_node.tags)
 
       # node is not deleted because our other ways are using it
@@ -1003,7 +1002,7 @@ module Api
       user = way.changeset.user
 
       assert_not_equal({ "test" => "ok" }, way.tags)
       user = way.changeset.user
 
       assert_not_equal({ "test" => "ok" }, way.tags)
-      post :amf_write, :body => amf_content("putway", "/1", ["#{user.email}:test", cs_id, way.version, way.id, way.nds, { "test" => "ok" }, [], {}])
+      post amf_write_path, amf_content("putway", "/1", ["#{user.email}:test", cs_id, way.version, way.id, way.nds, { "test" => "ok" }, [], {}])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -1030,7 +1029,7 @@ module Api
       d = create(:node).id
 
       assert_not_equal [a, b, c, d], way.nds
       d = create(:node).id
 
       assert_not_equal [a, b, c, d], way.nds
-      post :amf_write, :body => amf_content("putway", "/1", ["#{user.email}:test", cs_id, way.version + 1, way.id, [a, b, c, d], way.tags, [], {}])
+      post amf_write_path, amf_content("putway", "/1", ["#{user.email}:test", cs_id, way.version + 1, way.id, [a, b, c, d], way.tags, [], {}])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -1050,7 +1049,7 @@ module Api
       assert_equal [a, b, c, d], new_way.nds
       assert_equal way.tags, new_way.tags
 
       assert_equal [a, b, c, d], new_way.nds
       assert_equal way.tags, new_way.tags
 
-      post :amf_write, :body => amf_content("putway", "/1", ["#{user.email}:test", cs_id, way.version + 2, way.id, [a, -1, b, c], way.tags, [[4.56, 12.34, -1, 0, { "test" => "new" }], [12.34, 4.56, b, 1, { "test" => "ok" }]], { d => 1 }])
+      post amf_write_path, amf_content("putway", "/1", ["#{user.email}:test", cs_id, way.version + 2, way.id, [a, -1, b, c], way.tags, [[4.56, 12.34, -1, 0, { "test" => "new" }], [12.34, 4.56, b, 1, { "test" => "ok" }]], { d => 1 }])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -1074,15 +1073,15 @@ module Api
       new_node = Node.find(new_node_id)
       assert_equal 1, new_node.version
       assert new_node.visible
       new_node = Node.find(new_node_id)
       assert_equal 1, new_node.version
       assert new_node.visible
-      assert_equal 4.56, new_node.lon
-      assert_equal 12.34, new_node.lat
+      assert_in_delta(4.56, new_node.lon)
+      assert_in_delta(12.34, new_node.lat)
       assert_equal({ "test" => "new" }, new_node.tags)
 
       changed_node = Node.find(b)
       assert_equal 2, changed_node.version
       assert changed_node.visible
       assert_equal({ "test" => "new" }, new_node.tags)
 
       changed_node = Node.find(b)
       assert_equal 2, changed_node.version
       assert changed_node.visible
-      assert_equal 12.34, changed_node.lon
-      assert_equal 4.56, changed_node.lat
+      assert_in_delta(12.34, changed_node.lon)
+      assert_in_delta(4.56, changed_node.lat)
       assert_equal({ "test" => "ok" }, changed_node.tags)
 
       deleted_node = Node.find(d)
       assert_equal({ "test" => "ok" }, changed_node.tags)
 
       deleted_node = Node.find(d)
@@ -1106,7 +1105,7 @@ module Api
       create(:way_node, :node => b)
       c = way.nodes[2]
 
       create(:way_node, :node => b)
       c = way.nodes[2]
 
-      post :amf_write, :body => amf_content("deleteway", "/1", ["#{user.email}:test", cs_id, way.id, way.version, nodes])
+      post amf_write_path, amf_content("deleteway", "/1", ["#{user.email}:test", cs_id, way.id, way.version, nodes])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -1135,7 +1134,7 @@ module Api
       cs_id = way.changeset.id
       user = way.changeset.user
 
       cs_id = way.changeset.id
       user = way.changeset.user
 
-      post :amf_write, :body => amf_content("deleteway", "/1", ["#{user.email}:test", cs_id, way.id, way.version, nodes])
+      post amf_write_path, amf_content("deleteway", "/1", ["#{user.email}:test", cs_id, way.id, way.version, nodes])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -1163,7 +1162,7 @@ module Api
       way = create(:way_with_nodes, :nodes_count => 2)
       relation = create(:relation)
 
       way = create(:way_with_nodes, :nodes_count => 2)
       relation = create(:relation)
 
-      post :amf_write, :body => amf_content("putrelation", "/1", ["#{user.email}:test", cs_id, 0, -1, { "test" => "new" }, [["Node", node.id, "node"], ["Way", way.id, "way"], ["Relation", relation.id, "relation"]], true])
+      post amf_write_path, amf_content("putrelation", "/1", ["#{user.email}:test", cs_id, 0, -1, { "test" => "new" }, [["Node", node.id, "node"], ["Way", way.id, "way"], ["Relation", relation.id, "relation"]], true])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -1191,7 +1190,7 @@ module Api
       cs_id = relation.changeset.id
 
       assert_not_equal({ "test" => "ok" }, relation.tags)
       cs_id = relation.changeset.id
 
       assert_not_equal({ "test" => "ok" }, relation.tags)
-      post :amf_write, :body => amf_content("putrelation", "/1", ["#{user.email}:test", cs_id, relation.version, relation.id, { "test" => "ok" }, relation.members, true])
+      post amf_write_path, amf_content("putrelation", "/1", ["#{user.email}:test", cs_id, relation.version, relation.id, { "test" => "ok" }, relation.members, true])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -1218,7 +1217,7 @@ module Api
       cs_id = relation.changeset.id
       user = relation.changeset.user
 
       cs_id = relation.changeset.id
       user = relation.changeset.user
 
-      post :amf_write, :body => amf_content("putrelation", "/1", ["#{user.email}:test", cs_id, relation.version, relation.id, relation.tags, relation.members, false])
+      post amf_write_path, amf_content("putrelation", "/1", ["#{user.email}:test", cs_id, relation.version, relation.id, relation.tags, relation.members, false])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -1245,7 +1244,7 @@ module Api
       cs_id = relation.changeset.id
       user = relation.changeset.user
 
       cs_id = relation.changeset.id
       user = relation.changeset.user
 
-      post :amf_write, :body => amf_content("putrelation", "/1", ["#{user.email}:test", cs_id, relation.version, relation.id, relation.tags, relation.members, false])
+      post amf_write_path, amf_content("putrelation", "/1", ["#{user.email}:test", cs_id, relation.version, relation.id, relation.tags, relation.members, false])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -1265,7 +1264,7 @@ module Api
     def test_startchangeset_valid
       user = create(:user)
 
     def test_startchangeset_valid
       user = create(:user)
 
-      post :amf_write, :body => amf_content("startchangeset", "/1", ["#{user.email}:test", { "source" => "new" }, nil, "new", 1])
+      post amf_write_path, amf_content("startchangeset", "/1", ["#{user.email}:test", { "source" => "new" }, nil, "new", 1])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -1281,7 +1280,7 @@ module Api
 
       old_cs_id = new_cs_id
 
 
       old_cs_id = new_cs_id
 
-      post :amf_write, :body => amf_content("startchangeset", "/1", ["#{user.email}:test", { "source" => "newer" }, old_cs_id, "newer", 1])
+      post amf_write_path, amf_content("startchangeset", "/1", ["#{user.email}:test", { "source" => "newer" }, old_cs_id, "newer", 1])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -1303,7 +1302,7 @@ module Api
 
       old_cs_id = new_cs_id
 
 
       old_cs_id = new_cs_id
 
-      post :amf_write, :body => amf_content("startchangeset", "/1", ["#{user.email}:test", {}, old_cs_id, "", 0])
+      post amf_write_path, amf_content("startchangeset", "/1", ["#{user.email}:test", {}, old_cs_id, "", 0])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -1323,7 +1322,7 @@ module Api
       user = create(:user)
       user2 = create(:user)
 
       user = create(:user)
       user2 = create(:user)
 
-      post :amf_write, :body => amf_content("startchangeset", "/1", ["#{user.email}:test", { "source" => "new" }, nil, "new", 1])
+      post amf_write_path, amf_content("startchangeset", "/1", ["#{user.email}:test", { "source" => "new" }, nil, "new", 1])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -1337,7 +1336,7 @@ module Api
       assert cs.is_open?
       assert_equal({ "comment" => "new", "source" => "new" }, cs.tags)
 
       assert cs.is_open?
       assert_equal({ "comment" => "new", "source" => "new" }, cs.tags)
 
-      post :amf_write, :body => amf_content("startchangeset", "/1", ["#{user2.email}:test", {}, cs_id, "delete", 0])
+      post amf_write_path, amf_content("startchangeset", "/1", ["#{user2.email}:test", {}, cs_id, "delete", 0])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -1358,7 +1357,7 @@ module Api
       invalid = "\035\022"
       comment = "foo#{invalid}bar"
 
       invalid = "\035\022"
       comment = "foo#{invalid}bar"
 
-      post :amf_write, :body => amf_content("startchangeset", "/1", ["#{user.email}:test", {}, nil, comment, 1])
+      post amf_write_path, amf_content("startchangeset", "/1", ["#{user.email}:test", {}, nil, comment, 1])
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
       assert_response :success
       amf_parse_response
       result = amf_result("/1")
@@ -1390,15 +1389,15 @@ module Api
     def amf_content(target, ref, data)
       a, b = 1.divmod(256)
       c = StringIO.new
     def amf_content(target, ref, data)
       a, b = 1.divmod(256)
       c = StringIO.new
-      c.write 0.chr + 0.chr   # version 0
-      c.write 0.chr + 0.chr   # n headers
+      c.write 0.chr * 2       # version 0
+      c.write 0.chr * 2       # n headers
       c.write a.chr + b.chr   # n bodies
       c.write AMF.encodestring(target)
       c.write AMF.encodestring(ref)
       c.write [-1].pack("N")
       c.write AMF.encodevalue(data)
 
       c.write a.chr + b.chr   # n bodies
       c.write AMF.encodestring(target)
       c.write AMF.encodestring(ref)
       c.write [-1].pack("N")
       c.write AMF.encodevalue(data)
 
-      c.string
+      { :params => c.string, :headers => { "Content-Type" => "application/x-amf" } }
     end
 
     # Parses the @response object as an AMF messsage.
     end
 
     # Parses the @response object as an AMF messsage.
@@ -1437,7 +1436,7 @@ module Api
     # caller's block for assertion testing.
     def check_bboxes_are_bad(bboxes)
       bboxes.each do |bbox|
     # caller's block for assertion testing.
     def check_bboxes_are_bad(bboxes)
       bboxes.each do |bbox|
-        post :amf_read, :body => amf_content("whichways", "/1", bbox)
+        post amf_read_path, amf_content("whichways", "/1", bbox)
         assert_response :success
         amf_parse_response
 
         assert_response :success
         amf_parse_response