]> git.openstreetmap.org Git - rails.git/blobdiff - test/functional/node_controller_test.rb
ensure that uploads that don't supply a lat and lon for a node. Adding related test...
[rails.git] / test / functional / node_controller_test.rb
index 9e5621f8b324adad189a9731c89af9b9a3141a04..2289953fe53c72ba0b3168d1c0d04bfbe6098601 100644 (file)
@@ -6,7 +6,7 @@ class NodeControllerTest < ActionController::TestCase
 
   def test_create
     # cannot read password from fixture as it is stored as MD5 digest
 
   def test_create
     # cannot read password from fixture as it is stored as MD5 digest
-    basic_authorization(users(:normal_user).email, "test");
+    basic_authorization(users(:normal_user).email, "test")
     
     # create a node with random lat/lon
     lat = rand(100)-50 + rand
     
     # create a node with random lat/lon
     lat = rand(100)-50 + rand
@@ -30,6 +30,32 @@ class NodeControllerTest < ActionController::TestCase
     assert_equal true, checknode.visible, "saved node is not visible"
   end
 
     assert_equal true, checknode.visible, "saved node is not visible"
   end
 
+  def test_create_invalid_xml
+    # Initial setup
+    basic_authorization(users(:normal_user).email, "test")
+    # normal user has a changeset open, so we'll use that.
+    changeset = changesets(:normal_user_first_change)
+    lat = 3.434
+    lon = 3.23
+    
+    # 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>")
+    put :create
+    # hope for success
+    assert_response :bad_request, "node upload did not return bad_request status"
+    assert_equal 'Cannot parse valid node from xml string <node lon="3.23" changeset="1"/>. lat missing', @response.body
+
+    # test that the upload is rejected when no lon is supplied
+    # create a minimal xml file
+    content("<osm><node lat='#{lat}' changeset='#{changeset.id}'/></osm>")
+    put :create
+    # hope for success
+    assert_response :bad_request, "node upload did not return bad_request status"
+    assert_equal 'Cannot parse valid node from xml string <node lat="3.434" changeset="1"/>. lon missing', @response.body
+
+  end
+
   def test_read
     # check that a visible node is returned properly
     get :read, :id => current_nodes(:visible_node).id
   def test_read
     # check that a visible node is returned properly
     get :read, :id => current_nodes(:visible_node).id
@@ -194,7 +220,8 @@ class NodeControllerTest < ActionController::TestCase
     content node_xml
     put :update, :id => current_nodes(:visible_node).id
     assert_response :bad_request, 
     content node_xml
     put :update, :id => current_nodes(:visible_node).id
     assert_response :bad_request, 
-       "adding duplicate tags to a node should fail with 'bad request'"
+      "adding duplicate tags to a node should fail with 'bad request'"
+    assert_equal "Element node/#{current_nodes(:visible_node).id} has duplicate tags with key #{current_node_tags(:t1).k}.", @response.body
   end
 
   # test whether string injection is possible
   end
 
   # test whether string injection is possible