X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/0e93af3e30aabf258d8ff7daf9e0b3ba385e9d44..d479a3781a1c5437620010c5254039befec30f5c:/test/controllers/api/changesets_controller_test.rb?ds=sidebyside diff --git a/test/controllers/api/changesets_controller_test.rb b/test/controllers/api/changesets_controller_test.rb index 3e2d7e6ad..76c05fc0a 100644 --- a/test/controllers/api/changesets_controller_test.rb +++ b/test/controllers/api/changesets_controller_test.rb @@ -6,7 +6,7 @@ module Api # test all routes which lead to this controller def test_routes assert_routing( - { :path => "/api/0.6/changeset/create", :method => :put }, + { :path => "/api/0.6/changesets", :method => :post }, { :controller => "api/changesets", :action => "create" } ) assert_routing( @@ -57,6 +57,11 @@ module Api { :path => "/api/0.6/changesets.json", :method => :get }, { :controller => "api/changesets", :action => "index", :format => "json" } ) + + assert_recognizes( + { :controller => "api/changesets", :action => "create" }, + { :path => "/api/0.6/changeset/create", :method => :put } + ) end # ----------------------- @@ -69,7 +74,7 @@ module Api xml = "" \ "" \ "" - put changeset_create_path, :params => xml, :headers => auth_header + post api_changesets_path, :params => xml, :headers => auth_header assert_require_public_data auth_header = bearer_authorization_header @@ -77,7 +82,7 @@ module Api xml = "" \ "" \ "" - put changeset_create_path, :params => xml, :headers => auth_header + post api_changesets_path, :params => xml, :headers => auth_header assert_response :success, "Creation of changeset did not return success status" newid = @response.body.to_i @@ -101,47 +106,55 @@ module Api def test_create_invalid auth_header = bearer_authorization_header create(:user, :data_public => false) xml = "" - put changeset_create_path, :params => xml, :headers => auth_header + post api_changesets_path, :params => xml, :headers => auth_header assert_require_public_data ## Try the public user auth_header = bearer_authorization_header xml = "" - put changeset_create_path, :params => xml, :headers => auth_header + post api_changesets_path, :params => xml, :headers => auth_header assert_response :bad_request, "creating a invalid changeset should fail" end def test_create_invalid_no_content ## First check with no auth - put changeset_create_path + post api_changesets_path assert_response :unauthorized, "shouldn't be able to create a changeset with no auth" ## Now try to with a non-public user auth_header = bearer_authorization_header create(:user, :data_public => false) - put changeset_create_path, :headers => auth_header + post api_changesets_path, :headers => auth_header assert_require_public_data ## Try an inactive user auth_header = bearer_authorization_header create(:user, :pending) - put changeset_create_path, :headers => auth_header + post api_changesets_path, :headers => auth_header assert_inactive_user ## Now try to use a normal user auth_header = bearer_authorization_header - put changeset_create_path, :headers => auth_header + post api_changesets_path, :headers => auth_header assert_response :bad_request, "creating a changeset with no content should fail" end def test_create_wrong_method auth_header = bearer_authorization_header - get changeset_create_path, :headers => auth_header + put api_changesets_path, :headers => auth_header assert_response :not_found assert_template "rescues/routing_error" + end - post changeset_create_path, :headers => auth_header - assert_response :not_found - assert_template "rescues/routing_error" + def test_create_legacy_path + auth_header = bearer_authorization_header + xml = "" + + assert_difference "Changeset.count", 1 do + put "/api/0.6/changeset/create", :params => xml, :headers => auth_header + end + + assert_response :success, "Creation of changeset did not return success status" + assert_equal Changeset.last.id, @response.body.to_i end ## @@ -193,6 +206,7 @@ module Api # one hidden comment not included because not asked for comment2.update(:visible => false) + changeset.reload get changeset_show_path(changeset), :params => { :include_discussion => true } assert_response :success, "cannot get closed changeset with comments" @@ -248,6 +262,22 @@ module Api end end + def test_show_tags + changeset = create(:changeset, :closed) + create(:changeset_tag, :changeset => changeset, :k => "created_by", :v => "JOSM/1.5 (18364)") + create(:changeset_tag, :changeset => changeset, :k => "comment", :v => "changeset comment") + + get changeset_show_path(changeset) + + assert_response :success + assert_dom "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1 + assert_single_changeset changeset do + assert_dom "> tag", 2 + assert_dom "> tag[k='created_by'][v='JOSM/1.5 (18364)']", 1 + assert_dom "> tag[k='comment'][v='changeset comment']", 1 + end + end + def test_show_json changeset = create(:changeset) @@ -304,6 +334,7 @@ module Api # one hidden comment not included because not asked for comment1.update(:visible => false) + changeset.reload get changeset_show_path(changeset), :params => { :format => "json", :include_discussion => true } assert_response :success, "cannot get closed changeset with comments" @@ -356,28 +387,22 @@ module Api assert js["changeset"]["comments"][2]["visible"] end - def test_show_tag_and_discussion_json + def test_show_tags_json changeset = create(:changeset, :closed) create(:changeset_tag, :changeset => changeset, :k => "created_by", :v => "JOSM/1.5 (18364)") create(:changeset_tag, :changeset => changeset, :k => "comment", :v => "changeset comment") - create_list(:changeset_comment, 3, :changeset_id => changeset.id) - get changeset_show_path(changeset), :params => { :format => "json", :include_discussion => true } - assert_response :success, "cannot get closed changeset with comments" + get changeset_show_path(changeset, :format => "json") + assert_response :success js = ActiveSupport::JSON.decode(@response.body) - assert_not_nil js assert_equal Settings.api_version, js["version"] assert_equal Settings.generator, js["generator"] assert_single_changeset_json changeset, js assert_equal 2, js["changeset"]["tags"].count - assert_equal 3, js["changeset"]["comments"].count - assert_equal 3, js["changeset"]["comments_count"] - assert_equal 0, js["changeset"]["changes_count"] - assert_not_nil js["changeset"]["comments"][0]["uid"] - assert_not_nil js["changeset"]["comments"][0]["user"] - assert_not_nil js["changeset"]["comments"][0]["text"] + assert_equal "JOSM/1.5 (18364)", js["changeset"]["tags"]["created_by"] + assert_equal "changeset comment", js["changeset"]["tags"]["comment"] end def test_show_bbox_json @@ -747,7 +772,7 @@ module Api "" \ "" assert_difference "Changeset.count", 1 do - put changeset_create_path, :params => xml, :headers => auth_header + post api_changesets_path, :params => xml, :headers => auth_header end assert_response :success end @@ -761,7 +786,7 @@ module Api create(:changeset, :user => user, :created_at => Time.now.utc - 28.days) # create a changeset - put changeset_create_path, :params => "", :headers => auth_header + post api_changesets_path, :params => "", :headers => auth_header assert_response :success, "Should be able to create a changeset: #{@response.body}" changeset_id = @response.body.to_i @@ -1443,7 +1468,7 @@ module Api xml = "" \ "" \ "" - put changeset_create_path, :params => xml, :headers => auth_header + post api_changesets_path, :params => xml, :headers => auth_header assert_response :success changeset_id = @response.body.to_i @@ -1480,7 +1505,7 @@ module Api xml = "" \ "" \ "" - put changeset_create_path, :params => xml, :headers => auth_header + post api_changesets_path, :params => xml, :headers => auth_header assert_response :success changeset_id = @response.body.to_i @@ -1883,7 +1908,7 @@ module Api xml = "" \ "" \ "" - put changeset_create_path, :params => xml, :headers => auth_header + post api_changesets_path, :params => xml, :headers => auth_header assert_response :forbidden ## Now try with a normal user @@ -1893,7 +1918,7 @@ module Api xml = "" \ "" \ "" - put changeset_create_path, :params => xml, :headers => auth_header + post api_changesets_path, :params => xml, :headers => auth_header assert_response :success changeset_id = @response.body.to_i @@ -1938,7 +1963,7 @@ module Api xml = "" \ "" \ "" - put changeset_create_path, :params => xml, :headers => auth_header + post api_changesets_path, :params => xml, :headers => auth_header assert_response :success changeset_id = @response.body.to_i @@ -1999,7 +2024,7 @@ module Api xml = "" \ "" \ "" - put changeset_create_path, :params => xml, :headers => auth_header + post api_changesets_path, :params => xml, :headers => auth_header assert_response :success changeset_id = @response.body.to_i @@ -2112,7 +2137,7 @@ module Api # create a new changeset xml = "" - put changeset_create_path, :params => xml, :headers => auth_header + post api_changesets_path, :params => xml, :headers => auth_header assert_response :success, "Creating of changeset failed." changeset_id = @response.body.to_i @@ -2489,7 +2514,7 @@ module Api # open a new changeset xml = "" - put changeset_create_path, :params => xml, :headers => auth_header + post api_changesets_path, :params => xml, :headers => auth_header assert_response :success, "can't create a new changeset" cs_id = @response.body.to_i @@ -2672,6 +2697,8 @@ module Api assert_dom "> @open", "false" assert_dom "> @closed_at", changeset.closed_at.xmlschema end + assert_dom "> @comments_count", changeset.comments.length.to_s + assert_dom "> @changes_count", changeset.num_changes.to_s yield if block_given? end end @@ -2686,6 +2713,8 @@ module Api assert_not js["changeset"]["open"] assert_equal changeset.closed_at.xmlschema, js["changeset"]["closed_at"] end + assert_equal changeset.comments.length, js["changeset"]["comments_count"] + assert_equal changeset.num_changes, js["changeset"]["changes_count"] end ##