]> git.openstreetmap.org Git - rails.git/blobdiff - test/functional/node_controller_test.rb
Merge oauth branch at r17138 to trunk.
[rails.git] / test / functional / node_controller_test.rb
index 0595f3d086827163ac3ad88905133b42747e90a9..b5f93c4587eb0381073fbe22a93ee5c10527ce6e 100644 (file)
@@ -75,6 +75,12 @@ class NodeControllerTest < ActionController::TestCase
     lat = 3.434
     lon = 3.23
     
+    # test that the upload is rejected when xml is valid, but osm doc isn't
+    content("<create/>")
+    put :create
+    assert_response :bad_request, "node upload did not return bad_request status"
+    assert_equal "Cannot parse valid node from xml string <create/>. XML doesn't contain an osm/node element.", @response.body
+
     # test that the upload is rejected when no lat is supplied
     # create a minimal xml file
     content("<osm><node lon='#{lon}' changeset='#{changeset.id}'/></osm>")
@@ -184,6 +190,12 @@ class NodeControllerTest < ActionController::TestCase
     assert_response :bad_request, 
        "should not be able to delete a node with a different ID from the XML"
 
+    # try to delete a node rubbish in the payloads
+    content("<delete/>")
+    delete :delete, :id => current_nodes(:visible_node).id
+    assert_response :bad_request, 
+       "should not be able to delete a node without a valid XML payload"
+
     # valid delete now takes a payload
     content(nodes(:public_visible_node).to_xml)
     delete :delete, :id => current_nodes(:public_visible_node).id
@@ -353,6 +365,12 @@ class NodeControllerTest < ActionController::TestCase
     assert_response :bad_request, 
        "should not be able to update a node with a different ID from the XML"
 
+    ## try an update with a minimal valid XML doc which isn't a well-formed OSM doc.
+    content "<update/>"
+    put :update, :id => current_nodes(:visible_node).id
+    assert_response :bad_request, 
+       "should not be able to update a node with non-OSM XML doc."
+
     ## finally, produce a good request which should work
     content current_nodes(:public_visible_node).to_xml
     put :update, :id => current_nodes(:public_visible_node).id