]> git.openstreetmap.org Git - rails.git/blobdiff - test/functional/changeset_controller_test.rb
Allow the client to request errors as an XML document
[rails.git] / test / functional / changeset_controller_test.rb
index befa8192a6b6d842e1321fa92e736bd52f135eda..38f301524243a70d468c047c8e6c5744515a45c8 100644 (file)
@@ -1024,6 +1024,32 @@ EOF
     end
   end
 
+  ##
+  # test that the X-Error-Format header works to request XML errors
+  def test_upload_xml_errors
+    basic_authorization users(:public_user).email, "test"
+
+    # try and delete a node that is in use
+    diff = XML::Document.new
+    diff.root = XML::Node.new "osmChange"
+    delete = XML::Node.new "delete"
+    diff.root << delete
+    delete << current_nodes(:node_used_by_relationship).to_xml_node
+
+    # upload it
+    content diff
+    error_format "xml"
+    post :upload, :id => 2
+    assert_response :success, 
+      "failed to return error in XML format"
+
+    # check the returned payload
+    assert_select "osmError[version=#{API_VERSION}][generator=\"OpenStreetMap server\"]", 1
+    assert_select "osmError>status", 1
+    assert_select "osmError>message", 1
+
+  end
+
   ##
   # when we make some simple changes we get the same changes back from the 
   # diff download.