From 6482d373bebab09547b5f0067688af576fbedef3 Mon Sep 17 00:00:00 2001 From: Anton Khorev Date: Sun, 4 May 2025 04:58:36 +0300 Subject: [PATCH] Move api changeset upload-download tests --- .../api/changesets_controller_test.rb | 174 ----------------- .../changeset_upload_download_test.rb | 177 ++++++++++++++++++ 2 files changed, 177 insertions(+), 174 deletions(-) create mode 100644 test/integration/changeset_upload_download_test.rb diff --git a/test/controllers/api/changesets_controller_test.rb b/test/controllers/api/changesets_controller_test.rb index c5fa1eccf..716a66a34 100644 --- a/test/controllers/api/changesets_controller_test.rb +++ b/test/controllers/api/changesets_controller_test.rb @@ -658,180 +658,6 @@ module Api end end - ## - # when we make some simple changes we get the same changes back from the - # diff download. - def test_diff_download_simple - node = create(:node) - - ## First try with a non-public user, which should get a forbidden - auth_header = bearer_authorization_header create(:user, :data_public => false) - - # create a temporary changeset - xml = "" \ - "" \ - "" - post api_changesets_path, :params => xml, :headers => auth_header - assert_response :forbidden - - ## Now try with a normal user - auth_header = bearer_authorization_header - - # create a temporary changeset - xml = "" \ - "" \ - "" - post api_changesets_path, :params => xml, :headers => auth_header - assert_response :success - changeset_id = @response.body.to_i - - # add a diff to it - diff = <<~CHANGESET - - - - - - - - - - - - - CHANGESET - - # upload it - post api_changeset_upload_path(changeset_id), :params => diff, :headers => auth_header - assert_response :success, - "can't upload multiple versions of an element in a diff: #{@response.body}" - - get api_changeset_download_path(changeset_id) - assert_response :success - - assert_select "osmChange", 1 - assert_select "osmChange>modify", 8 - assert_select "osmChange>modify>node", 8 - end - - ## - # culled this from josm to ensure that nothing in the way that josm - # is formatting the request is causing it to fail. - # - # NOTE: the error turned out to be something else completely! - def test_josm_upload - auth_header = bearer_authorization_header - - # create a temporary changeset - xml = "" \ - "" \ - "" - post api_changesets_path, :params => xml, :headers => auth_header - assert_response :success - changeset_id = @response.body.to_i - - diff = <<~OSMFILE - - - - - - - - - - - - - - - - - - - - - - - - - - - OSMFILE - - # upload it - post api_changeset_upload_path(changeset_id), :params => diff, :headers => auth_header - assert_response :success, - "can't upload a diff from JOSM: #{@response.body}" - - get api_changeset_download_path(changeset_id) - assert_response :success - - assert_select "osmChange", 1 - assert_select "osmChange>create>node", 9 - assert_select "osmChange>create>way", 1 - assert_select "osmChange>create>way>nd", 9 - assert_select "osmChange>create>way>tag", 2 - end - - ## - # when we make some complex changes we get the same changes back from the - # diff download. - def test_diff_download_complex - node = create(:node) - node2 = create(:node) - way = create(:way) - auth_header = bearer_authorization_header - - # create a temporary changeset - xml = "" \ - "" \ - "" - post api_changesets_path, :params => xml, :headers => auth_header - assert_response :success - changeset_id = @response.body.to_i - - # add a diff to it - diff = <<~CHANGESET - - - - - - - - - - - - - - - - - - - - CHANGESET - - # upload it - post api_changeset_upload_path(changeset_id), :params => diff, :headers => auth_header - assert_response :success, - "can't upload multiple versions of an element in a diff: #{@response.body}" - - get api_changeset_download_path(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 - ## # check that the bounding box of a changeset gets updated correctly # FIXME: This should really be moded to a integration test due to the with_controller diff --git a/test/integration/changeset_upload_download_test.rb b/test/integration/changeset_upload_download_test.rb new file mode 100644 index 000000000..77b676af9 --- /dev/null +++ b/test/integration/changeset_upload_download_test.rb @@ -0,0 +1,177 @@ +require "test_helper" + +class ChangesetUploadDownloadTest < ActionDispatch::IntegrationTest + ## + # when we make some simple changes we get the same changes back from the + # diff download. + def test_diff_download_simple + node = create(:node) + + ## First try with a non-public user, which should get a forbidden + auth_header = bearer_authorization_header create(:user, :data_public => false) + + # create a temporary changeset + xml = "" \ + "" \ + "" + post api_changesets_path, :params => xml, :headers => auth_header + assert_response :forbidden + + ## Now try with a normal user + auth_header = bearer_authorization_header + + # create a temporary changeset + xml = "" \ + "" \ + "" + post api_changesets_path, :params => xml, :headers => auth_header + assert_response :success + changeset_id = @response.body.to_i + + # add a diff to it + diff = <<~CHANGESET + + + + + + + + + + + + + CHANGESET + + # upload it + post api_changeset_upload_path(changeset_id), :params => diff, :headers => auth_header + assert_response :success, + "can't upload multiple versions of an element in a diff: #{@response.body}" + + get api_changeset_download_path(changeset_id) + assert_response :success + + assert_dom "osmChange", 1 + assert_dom "osmChange>modify", 8 + assert_dom "osmChange>modify>node", 8 + end + + ## + # culled this from josm to ensure that nothing in the way that josm + # is formatting the request is causing it to fail. + # + # NOTE: the error turned out to be something else completely! + def test_josm_upload + auth_header = bearer_authorization_header + + # create a temporary changeset + xml = "" \ + "" \ + "" + post api_changesets_path, :params => xml, :headers => auth_header + assert_response :success + changeset_id = @response.body.to_i + + diff = <<~OSMFILE + + + + + + + + + + + + + + + + + + + + + + + + + + + OSMFILE + + # upload it + post api_changeset_upload_path(changeset_id), :params => diff, :headers => auth_header + assert_response :success, + "can't upload a diff from JOSM: #{@response.body}" + + get api_changeset_download_path(changeset_id) + assert_response :success + + assert_dom "osmChange", 1 + assert_dom "osmChange>create>node", 9 + assert_dom "osmChange>create>way", 1 + assert_dom "osmChange>create>way>nd", 9 + assert_dom "osmChange>create>way>tag", 2 + end + + ## + # when we make some complex changes we get the same changes back from the + # diff download. + def test_diff_download_complex + node = create(:node) + node2 = create(:node) + way = create(:way) + auth_header = bearer_authorization_header + + # create a temporary changeset + xml = "" \ + "" \ + "" + post api_changesets_path, :params => xml, :headers => auth_header + assert_response :success + changeset_id = @response.body.to_i + + # add a diff to it + diff = <<~CHANGESET + + + + + + + + + + + + + + + + + + + + CHANGESET + + # upload it + post api_changeset_upload_path(changeset_id), :params => diff, :headers => auth_header + assert_response :success, + "can't upload multiple versions of an element in a diff: #{@response.body}" + + get api_changeset_download_path(changeset_id) + assert_response :success + + assert_dom "osmChange", 1 + assert_dom "osmChange>create", 3 + assert_dom "osmChange>delete", 1 + assert_dom "osmChange>modify", 2 + assert_dom "osmChange>create>node", 3 + assert_dom "osmChange>delete>node", 1 + assert_dom "osmChange>modify>node", 1 + assert_dom "osmChange>modify>way", 1 + end +end -- 2.39.5