From: Matt Amos Date: Wed, 5 Aug 2009 11:28:49 +0000 (+0000) Subject: Node controller wasn't using the right name for an exception class. X-Git-Tag: live~6746 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/e93becd304fbd019c5e901b73af90fabde3ad02c Node controller wasn't using the right name for an exception class. --- diff --git a/app/controllers/node_controller.rb b/app/controllers/node_controller.rb index 8eb698920..eb6d01823 100644 --- a/app/controllers/node_controller.rb +++ b/app/controllers/node_controller.rb @@ -38,7 +38,7 @@ class NodeController < ApplicationController new_node = Node.from_xml(request.raw_post) unless new_node and new_node.id == node.id - raise OSM::BadUserInput.new("The id in the url (#{node.id}) is not the same as provided in the xml (#{new_node.id})") + raise OSM::APIBadUserInput.new("The id in the url (#{node.id}) is not the same as provided in the xml (#{new_node.id})") end node.update_from(new_node, @user) render :text => node.version.to_s, :content_type => "text/plain" @@ -52,7 +52,7 @@ class NodeController < ApplicationController new_node = Node.from_xml(request.raw_post) unless new_node and new_node.id == node.id - raise OSM::BadUserInput.new("The id in the url (#{node.id}) is not the same as provided in the xml (#{new_node.id})") + raise OSM::APIBadUserInput.new("The id in the url (#{node.id}) is not the same as provided in the xml (#{new_node.id})") end node.delete_with_history!(new_node, @user) render :text => node.version.to_s, :content_type => "text/plain" @@ -63,7 +63,7 @@ class NodeController < ApplicationController ids = params['nodes'].split(',').collect { |n| n.to_i } if ids.length == 0 - raise OSM::BadUserInput.new("No nodes were given to search for") + raise OSM::APIBadUserInput.new("No nodes were given to search for") end doc = OSM::API.new.get_xml_doc diff --git a/test/functional/node_controller_test.rb b/test/functional/node_controller_test.rb index 42311c38f..0595f3d08 100644 --- a/test/functional/node_controller_test.rb +++ b/test/functional/node_controller_test.rb @@ -178,6 +178,12 @@ class NodeControllerTest < ActionController::TestCase delete :delete, :id => current_nodes(:visible_node).id assert_response :conflict + # try to delete a node with a different ID + content(nodes(:public_visible_node).to_xml) + delete :delete, :id => current_nodes(:visible_node).id + assert_response :bad_request, + "should not be able to delete a node with a different ID from the XML" + # valid delete now takes a payload content(nodes(:public_visible_node).to_xml) delete :delete, :id => current_nodes(:public_visible_node).id @@ -271,9 +277,6 @@ class NodeControllerTest < ActionController::TestCase content current_nodes(:visible_node).to_xml put :update, :id => current_nodes(:visible_node).id assert_require_public_data "should have failed with a forbidden when data isn't public" - - - ## Finally test with the public user @@ -344,6 +347,12 @@ class NodeControllerTest < ActionController::TestCase assert_response :conflict, "should not be able to put 'p1r4at3s!' in the version field" + ## try an update with the wrong ID + content current_nodes(:public_visible_node).to_xml + put :update, :id => current_nodes(:visible_node).id + assert_response :bad_request, + "should not be able to update a node with a different ID from the XML" + ## 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