class NodeControllerTest < ActionController::TestCase
api_fixtures
+ ##
+ # test all routes which lead to this controller
+ def test_routes
+ assert_routing(
+ { :path => "/api/0.6/node/create", :method => :put },
+ { :controller => "node", :action => "create" }
+ )
+ assert_routing(
+ { :path => "/api/0.6/node/1", :method => :get },
+ { :controller => "node", :action => "read", :id => "1" }
+ )
+ assert_routing(
+ { :path => "/api/0.6/node/1", :method => :put },
+ { :controller => "node", :action => "update", :id => "1" }
+ )
+ assert_routing(
+ { :path => "/api/0.6/node/1", :method => :delete },
+ { :controller => "node", :action => "delete", :id => "1" }
+ )
+ assert_routing(
+ { :path => "/api/0.6/nodes", :method => :get },
+ { :controller => "node", :action => "nodes" }
+ )
+ end
+
def test_create
# cannot read password from fixture as it is stored as MD5 digest
## First try with no auth
content("<osm><node lat='#{lat}' lon='#{lon}' changeset='#{changeset.id}'><tag k='foo' v='#{'x'*256}'/></node></osm>")
put :create
assert_response :bad_request, "node upload did not return bad_request status"
- assert_equal ["NodeTag ", " v: is too long (maximum is 255 characters) (\"#{'x'*256}\")"], @response.body.split(/[0-9]+:/)
+ assert_equal ["NodeTag ", " v: is too long (maximum is 255 characters) (\"#{'x'*256}\")"], @response.body.split(/[0-9]+,foo:/)
end
assert @response.body.to_i > current_nodes(:public_visible_node).version,
"delete request should return a new version number for node"
- # this won't work since the node is already deleted
- content(nodes(:invisible_node).to_xml)
- delete :delete, :id => current_nodes(:invisible_node).id
+ # deleting the same node twice doesn't work
+ content(nodes(:public_visible_node).to_xml)
+ delete :delete, :id => current_nodes(:public_visible_node).id
assert_response :gone
# this won't work since the node never existed
delete :delete, :id => current_nodes(:used_node_1).id
assert_response :precondition_failed,
"shouldn't be able to delete a node used in a way (#{@response.body})"
- assert_equal "Precondition failed: Node 3 is still used by way 1.", @response.body
+ assert_equal "Precondition failed: Node 3 is still used by ways 1,3.", @response.body
# in a relation...
content(nodes(:node_used_by_relationship).to_xml)
delete :delete, :id => current_nodes(:node_used_by_relationship).id
assert_response :precondition_failed,
"shouldn't be able to delete a node used in a relation (#{@response.body})"
- assert_match /Precondition failed: Node 5 is still used by relation [13]./, @response.body
+ assert_equal "Precondition failed: Node 5 is still used by relations 1,3.", @response.body
end
##