X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/dc2a95903722644f6109244cec9a2d1e195fef0e..0ca779e5bd2b53e83331640d21945b9fb06b2c8c:/test/functional/changeset_controller_test.rb diff --git a/test/functional/changeset_controller_test.rb b/test/functional/changeset_controller_test.rb index 946d139d8..31ade9fce 100644 --- a/test/functional/changeset_controller_test.rb +++ b/test/functional/changeset_controller_test.rb @@ -1,19 +1,8 @@ require File.dirname(__FILE__) + '/../test_helper' require 'changeset_controller' -# Re-raise errors caught by the controller. -class ChangesetController; def rescue_action(e) raise e end; end - - class ChangesetControllerTest < Test::Unit::TestCase +class ChangesetControllerTest < ActionController::TestCase api_fixtures - - - - def setup - @controller = ChangesetController.new - @request = ActionController::TestRequest.new - @response = ActionController::TestResponse.new - end def basic_authorization(user, pass) @request.env["HTTP_AUTHORIZATION"] = "Basic %s" % Base64.encode64("#{user}:#{pass}") @@ -244,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 @@ -380,5 +369,123 @@ 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 + # diff download. + def test_diff_download_simple + basic_authorization(users(:normal_user).email, "test") + + # create a temporary changeset + content "" + + "" + + "" + put :create + assert_response :success + changeset_id = @response.body.to_i + + # add a diff to it + diff = < + + + + + + + + + + + +EOF + # upload it + content diff + post :upload, :id => changeset_id + assert_response :success, + "can't upload multiple versions of an element in a diff: #{@response.body}" + + get :download, :id => changeset_id + assert_response :success + + assert_select "osmChange", 1 + assert_select "osmChange>modify", 8 + assert_select "osmChange>modify>node", 8 + end + + ## + # when we make some complex changes we get the same changes back from the + # diff download. + def test_diff_download_complex + basic_authorization(users(:normal_user).email, "test") + + # create a temporary changeset + content "" + + "" + + "" + put :create + assert_response :success + changeset_id = @response.body.to_i + + # add a diff to it + diff = < + + + + + + + + + + + + + + + + + + +EOF + + # upload it + content diff + post :upload, :id => changeset_id + assert_response :success, + "can't upload multiple versions of an element in a diff: #{@response.body}" + + get :download, :id => changeset_id + assert_response :success + + assert_select "osmChange", 1 + assert_select "osmChange>create", 3 + assert_select "osmChange>delete", 1 + assert_select "osmChange>modify", 2 + assert_select "osmChange>create>node", 3 + assert_select "osmChange>delete>node", 1 + assert_select "osmChange>modify>node", 1 + assert_select "osmChange>modify>way", 1 + end + end