From: Shaun McDonald Date: Mon, 3 Nov 2008 18:54:19 +0000 (+0000) Subject: Adding an extra test to make sure that the correct response is returned when an inval... X-Git-Tag: live~7619^2~226 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/183ffc78648938ca079f7ea5f899d3e71e829333 Adding an extra test to make sure that the correct response is returned when an invalid changeset action is uploaded. --- diff --git a/lib/diff_reader.rb b/lib/diff_reader.rb index eca6d438c..165e30e20 100644 --- a/lib/diff_reader.rb +++ b/lib/diff_reader.rb @@ -156,7 +156,7 @@ class DiffReader else # no other actions to choose from, so it must be the users fault! - raise "Unknown action #{action_name}, choices are create, modify, delete." + raise OSM::APIChangesetActionInvalid.new(action_name) end end diff --git a/lib/osm.rb b/lib/osm.rb index b002ebbe8..223e351f4 100644 --- a/lib/osm.rb +++ b/lib/osm.rb @@ -66,6 +66,19 @@ module OSM "#{@allowed} is allowed.", :status => :conflict } end end + + # Raised when a diff upload has an unknown action. You can only have create, + # modify, or delete + class APIChangesetActionInvalid < APIError + def initialize(provided) + @provided = provided + end + + def render_opts + { :text => "Unknown action #{@provided}, choices are create, modify, delete.", + :status => :bad_request } + end + end # Raised when bad XML is encountered which stops things parsing as # they should. diff --git a/test/functional/changeset_controller_test.rb b/test/functional/changeset_controller_test.rb index 5e26c2071..31ade9fce 100644 --- a/test/functional/changeset_controller_test.rb +++ b/test/functional/changeset_controller_test.rb @@ -233,7 +233,7 @@ EOF "can't upload a complex diff to changeset: #{@response.body}" # check the returned payload - assert_select "osm[version=#{API_VERSION}][generator=\"OpenStreetMap server\"]", 1 + assert_select "osm[version=#{API_VERSION}][generator=\"#{GENERATOR}\"]", 1 assert_select "osm>node", 1 assert_select "osm>way", 1 assert_select "osm>relation", 1 @@ -369,6 +369,24 @@ EOF assert_response :bad_request, "shouldn't be able to upload an element without version: #{@response.body}" end + + ## + # try to upload with commands other than create, modify, or delete + def test_action_upload_invalid + basic_authorization "test@openstreetmap.org", "test" + + diff = < + + + + +EOF + content diff + post :upload, :id => 1 + assert_response :bad_request, "Shouldn't be able to upload a diff with the action ping" + assert_equal @response.body, "Unknown action ping, choices are create, modify, delete." + end ## # when we make some simple changes we get the same changes back from the