X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/e19b02f69914c086f979ec31eb603bb3b456cd15..5923d0fa912c73e3725e52c869d72793304ae44a:/services/api/test/unit/owner_test.rb diff --git a/services/api/test/unit/owner_test.rb b/services/api/test/unit/owner_test.rb index 2cb40630dd..c7f9776ac6 100644 --- a/services/api/test/unit/owner_test.rb +++ b/services/api/test/unit/owner_test.rb @@ -17,18 +17,32 @@ class OwnerTest < ActiveSupport::TestCase Group.all [User, Group].each do |o_class| test "create object with legit #{o_class} owner" do - o = o_class.create + o = o_class.create! i = Specimen.create(owner_uuid: o.uuid) assert i.valid?, "new item should pass validation" assert i.uuid, "new item should have an ID" assert Specimen.where(uuid: i.uuid).any?, "new item should really be in DB" end + test "create object with non-existent #{o_class} owner" do + assert_raises(ActiveRecord::RecordInvalid, + "create should fail with random owner_uuid") do + i = Specimen.create!(owner_uuid: o_class.generate_uuid) + end + + i = Specimen.create(owner_uuid: o_class.generate_uuid) + assert !i.valid?, "object with random owner_uuid should not be valid?" + + i = Specimen.new(owner_uuid: o_class.generate_uuid) + assert !i.valid?, "new item should not pass validation" + assert !i.uuid, "new item should not have an ID" + end + [User, Group].each do |new_o_class| test "change owner from legit #{o_class} to legit #{new_o_class} owner" do - o = o_class.create - i = Specimen.create(owner_uuid: o.uuid) - new_o = o_class.create + o = o_class.create! + i = Specimen.create!(owner_uuid: o.uuid) + new_o = new_o_class.create! assert(Specimen.where(uuid: i.uuid).any?, "new item should really be in DB") assert(i.update_attributes(owner_uuid: new_o.uuid), @@ -37,7 +51,7 @@ class OwnerTest < ActiveSupport::TestCase end test "delete #{o_class} that owns nothing" do - o = o_class.create + o = o_class.create! assert(o_class.where(uuid: o.uuid).any?, "new #{o_class} should really be in DB") assert(o.destroy, "should delete #{o_class} that owns nothing") @@ -47,7 +61,7 @@ class OwnerTest < ActiveSupport::TestCase test "change uuid of #{o_class} that owns nothing" do # (we're relying on our admin credentials here) - o = o_class.create + o = o_class.create! assert(o_class.where(uuid: o.uuid).any?, "new #{o_class} should really be in DB") old_uuid = o.uuid @@ -59,7 +73,7 @@ class OwnerTest < ActiveSupport::TestCase end end - ['users(:active)', 'groups(:afolder)'].each do |ofixt| + ['users(:active)', 'groups(:aproject)'].each do |ofixt| test "delete #{ofixt} that owns other objects" do o = eval ofixt assert_equal(true, Specimen.where(owner_uuid: o.uuid).any?, @@ -83,7 +97,7 @@ class OwnerTest < ActiveSupport::TestCase end test "delete User that owns self" do - o = User.create + o = User.create! assert User.where(uuid: o.uuid).any?, "new User should really be in DB" assert_equal(true, o.update_attributes(owner_uuid: o.uuid), "setting owner to self should work") @@ -93,7 +107,7 @@ class OwnerTest < ActiveSupport::TestCase end test "change uuid of User that owns self" do - o = User.create + o = User.create! assert User.where(uuid: o.uuid).any?, "new User should really be in DB" assert_equal(true, o.update_attributes(owner_uuid: o.uuid), "setting owner to self should work")