]> git.openstreetmap.org Git - rails.git/blobdiff - test/controllers/amf_controller_test.rb
Merge remote-tracking branch 'openstreetmap/pull/1331'
[rails.git] / test / controllers / amf_controller_test.rb
index 55445683771a7cae770a0242a21b3ea67833ab2f..7c8c64ba085813f597d7353a9f86a8c49e5a024b 100644 (file)
@@ -306,10 +306,9 @@ 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|
+      v1.way_id => v1.timestamp.strftime("%d %b %Y, %H:%M:%S") }.each do |id, t|
       amf_content "getway_old", "/1", [id, t]
       post :amf_read
       assert_response :success
@@ -329,10 +328,9 @@ class AmfControllerTest < ActionController::TestCase
     way_id = current_ways(:way_with_versions).id
     { "foo"  => "bar",
       way_id => "not a date",
-      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"  # <- invalid ID
-    }.each do |id, t|
+      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
       amf_content "getway_old", "/1", [id, t]
       post :amf_read
       assert_response :success
@@ -346,14 +344,29 @@ 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
     [[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|
+     [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_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
@@ -447,6 +460,7 @@ class AmfControllerTest < ActionController::TestCase
     assert_equal -1, result[0]
     assert_match /must be logged in/, result[1]
 
+    create(:user_block, :user => users(:blocked_user))
     amf_content "findgpx", "/1", [1, "blocked@openstreetmap.org:test"]
     post :amf_read
     assert_response :success
@@ -1341,24 +1355,24 @@ class AmfControllerTest < ActionController::TestCase
   def amf_parse_response
     req = StringIO.new(@response.body)
 
-    req.read(2)   # version
+    req.read(2) # version
 
     # parse through any headers
-    headers = AMF.getint(req)          # Read number of headers
-    headers.times do                   # Read each header
-      AMF.getstring(req)               #  |
-      req.getc                         #  | skip boolean
-      AMF.getvalue(req)                        #  |
+    headers = AMF.getint(req)        # Read number of headers
+    headers.times do                 # Read each header
+      AMF.getstring(req)             #  |
+      req.getc                       #  | skip boolean
+      AMF.getvalue(req)              #  |
     end
 
     # parse through responses
     results = {}
-    bodies = AMF.getint(req)           # Read number of bodies
-    bodies.times do                    # Read each body
-      message = AMF.getstring(req)     #  | get message name
-      AMF.getstring(req)               #  | get index in response sequence
-      AMF.getlong(req)                 #  | get total size in bytes
-      args = AMF.getvalue(req)         #  | get response (probably an array)
+    bodies = AMF.getint(req)         # Read number of bodies
+    bodies.times do                  # Read each body
+      message = AMF.getstring(req)   #  | get message name
+      AMF.getstring(req)             #  | get index in response sequence
+      AMF.getlong(req)               #  | get total size in bytes
+      args = AMF.getvalue(req)       #  | get response (probably an array)
       results[message] = args
     end
     @amf_result = results