class NodeController; def rescue_action(e) raise e end; end
class NodeControllerTest < Test::Unit::TestCase
- fixtures :current_nodes, :nodes, :users
- set_fixture_class :current_nodes => :Node
- set_fixture_class :nodes => :OldNode
+ api_fixtures
def setup
@controller = NodeController.new
checknode = Node.find(nodeid)
assert_not_nil checknode, "uploaded node not found in data base after upload"
# compare values
- assert_in_delta lat, checknode.latitude, 1E-8, "saved node does not match requested latitude"
- assert_in_delta lon, checknode.longitude, 1E-8, "saved node does not match requested longitude"
+ assert_in_delta lat * 10000000, checknode.latitude, 1, "saved node does not match requested latitude"
+ assert_in_delta lon * 10000000, checknode.longitude, 1, "saved node does not match requested longitude"
assert_equal users(:normal_user).id, checknode.user_id, "saved node does not belong to user that created it"
assert_equal true, checknode.visible, "saved node is not visible"
end
assert_response :not_found
end
+ # this tests deletion restrictions - basic deletion is tested in the unit
+ # tests for node!
+ def test_delete
+
+ # first try to delete node without auth
+ delete :delete, :id => current_nodes(:visible_node).id
+ assert_response :unauthorized
+
+ # now set auth
+ basic_authorization("test@openstreetmap.org", "test");
+
+ # this should work
+ delete :delete, :id => current_nodes(:visible_node).id
+ assert_response :success
+
+ # this won't work since the node is already deleted
+ delete :delete, :id => current_nodes(:invisible_node).id
+ assert_response :gone
+
+ # this won't work since the node never existed
+ delete :delete, :id => 0
+ assert_response :not_found
+
+ # this won't work since the node is in use
+ delete :delete, :id => current_nodes(:used_node_1).id
+ assert_response :precondition_failed
+ end
+
+
def basic_authorization(user, pass)
@request.env["HTTP_AUTHORIZATION"] = "Basic %s" % Base64.encode64("#{user}:#{pass}")
end