X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/5d07b6d76c9488334608d3db57c5bc79bb6d177d..f20a85a5c5c68f4b87a3f4d9faa1de0ba780ce3b:/test/functional/changeset_controller_test.rb diff --git a/test/functional/changeset_controller_test.rb b/test/functional/changeset_controller_test.rb index b02f556c9..38f301524 100644 --- a/test/functional/changeset_controller_test.rb +++ b/test/functional/changeset_controller_test.rb @@ -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. @@ -1337,16 +1363,32 @@ EOF assert_response :success, "can't get changesets in bbox" assert_changesets [1] + # not found when looking for changesets of non-existing users + get :query, :user => User.maximum(:id) + 1 + assert_response :not_found + get :query, :display_name => " " + assert_response :not_found + # can't get changesets of user 1 without authenticating get :query, :user => users(:normal_user).id - assert_response :not_found, "shouldn't be able to get changesets by non-public user" + assert_response :not_found, "shouldn't be able to get changesets by non-public user (ID)" + get :query, :display_name => users(:normal_user).display_name + assert_response :not_found, "shouldn't be able to get changesets by non-public user (name)" # but this should work basic_authorization "test@openstreetmap.org", "test" get :query, :user => users(:normal_user).id - assert_response :success, "can't get changesets by user" + assert_response :success, "can't get changesets by user ID" + assert_changesets [1,3,6] + + get :query, :display_name => users(:normal_user).display_name + assert_response :success, "can't get changesets by user name" assert_changesets [1,3,6] + # check that the correct error is given when we provide both UID and name + get :query, :user => users(:normal_user).id, :display_name => users(:normal_user).display_name + assert_response :bad_request, "should be a bad request to have both ID and name specified" + get :query, :user => users(:normal_user).id, :open => true assert_response :success, "can't get changesets by user and open" assert_changesets [1] @@ -1366,6 +1408,10 @@ EOF get :query, :open => 'true' assert_response :success, "can't get changesets by open-ness" assert_changesets [1,2,4] + + get :query, :closed => 'true' + assert_response :success, "can't get changesets by closed-ness" + assert_changesets [3,5,6,7] end ##