X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/8a504ad561c1ffbafee8a7bc8da551f9d4b9a29e..cefddd8efdc88c3d33e5aad4c02e96c64cbe8242:/services/api/test/unit/link_test.rb diff --git a/services/api/test/unit/link_test.rb b/services/api/test/unit/link_test.rb index 16ce54bbe0..cba5d20cb2 100644 --- a/services/api/test/unit/link_test.rb +++ b/services/api/test/unit/link_test.rb @@ -1,3 +1,7 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 + require 'test_helper' class LinkTest < ActiveSupport::TestCase @@ -7,17 +11,27 @@ class LinkTest < ActiveSupport::TestCase set_user_from_auth :admin_trustedclient end - test "cannot delete an object referenced by links" do - ob = Specimen.create - link = Link.create(tail_uuid: users(:active).uuid, - head_uuid: ob.uuid, - link_class: 'test', - name: 'test') + test "cannot delete an object referenced by unwritable links" do + ob = act_as_user users(:active) do + Specimen.create + end + link = act_as_user users(:admin) do + Link.create(tail_uuid: users(:active).uuid, + head_uuid: ob.uuid, + link_class: 'test', + name: 'test') + end assert_equal users(:admin).uuid, link.owner_uuid - assert_raises(ActiveRecord::DeleteRestrictionError, + assert_raises(ArvadosModel::PermissionDeniedError, "should not delete #{ob.uuid} with link #{link.uuid}") do + act_as_user users(:active) do + ob.destroy + end + end + act_as_user users(:admin) do ob.destroy end + assert_empty Link.where(uuid: link.uuid) end def new_active_link_valid?(link_attrs)