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
##