[ARVADOS] updated: 68aa07e5c152fd573e254614b34b71957b50ad8c
git at public.curoverse.com
git at public.curoverse.com
Fri Jul 18 17:39:52 EDT 2014
Summary of changes:
services/api/app/models/arvados_model.rb | 20 +++++++++++---------
services/api/test/unit/permission_test.rb | 14 +++++++++++---
2 files changed, 22 insertions(+), 12 deletions(-)
via 68aa07e5c152fd573e254614b34b71957b50ad8c (commit)
via 3c2d73031843545d70a2d38542c79a99f270d207 (commit)
from f38d011a7289e2c1819dd7cbb76a738a24e9c825 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
commit 68aa07e5c152fd573e254614b34b71957b50ad8c
Author: Tom Clegg <tom at curoverse.com>
Date: Fri Jul 18 17:37:05 2014 -0400
3214: Readability: rearrange conditionals, and say "old" instead of "existing"
diff --git a/services/api/app/models/arvados_model.rb b/services/api/app/models/arvados_model.rb
index 469b0a3..5cd0c77 100644
--- a/services/api/app/models/arvados_model.rb
+++ b/services/api/app/models/arvados_model.rb
@@ -209,15 +209,17 @@ class ArvadosModel < ActiveRecord::Base
if new_record? and respond_to? :owner_uuid=
self.owner_uuid ||= current_user.uuid
end
- if owner_uuid_changed? and owner_uuid_was
- # Verify permission to write to existing owner
- unless current_user.uuid == self.owner_uuid_was or
- current_user.uuid == self.uuid or
- current_user.can? write: self.owner_uuid_was
- logger.warn "User #{current_user.uuid} tried to modify #{self.class.to_s} #{uuid} but does not have permission to write existing owner_uuid #{owner_uuid_was}"
- errors.add :owner_uuid, "cannot be changed without write permission on existing owner"
- raise PermissionDeniedError
- end
+ # Verify permission to write to old owner (unless owner_uuid was
+ # nil -- or hasn't changed, in which case the following
+ # "permission to write to new owner" block will take care of us)
+ unless !owner_uuid_changed? or
+ owner_uuid_was.nil? or
+ current_user.uuid == self.owner_uuid_was or
+ current_user.uuid == self.uuid or
+ current_user.can? write: self.owner_uuid_was
+ logger.warn "User #{current_user.uuid} tried to modify #{self.class.to_s} #{uuid} but does not have permission to write old owner_uuid #{owner_uuid_was}"
+ errors.add :owner_uuid, "cannot be changed without write permission on old owner"
+ raise PermissionDeniedError
end
# Verify permission to write to new owner
unless current_user == self or current_user.can? write: owner_uuid
commit 3c2d73031843545d70a2d38542c79a99f270d207
Author: Tom Clegg <tom at curoverse.com>
Date: Fri Jul 18 17:35:05 2014 -0400
3214: Split independent unit tests into separate test cases.
diff --git a/services/api/test/unit/permission_test.rb b/services/api/test/unit/permission_test.rb
index 7a6e482..1ea1419 100644
--- a/services/api/test/unit/permission_test.rb
+++ b/services/api/test/unit/permission_test.rb
@@ -132,26 +132,34 @@ class PermissionTest < ActiveSupport::TestCase
end
end
- test "user cannot use owner_uuid without write permission on new owner" do
+ test "cannot create with owner = unwritable user" do
set_user_from_auth :rominiadmin
-
assert_raises ArvadosModel::PermissionDeniedError, "created with owner = unwritable user" do
Specimen.create!(owner_uuid: users(:active).uuid)
end
+ end
+ test "cannot change owner to unwritable user" do
+ set_user_from_auth :rominiadmin
ob = Specimen.create!
assert_raises ArvadosModel::PermissionDeniedError, "changed owner to unwritable user" do
ob.update_attributes!(owner_uuid: users(:active).uuid)
end
+ end
+ test "cannot create with owner = unwritable group" do
+ set_user_from_auth :rominiadmin
assert_raises ArvadosModel::PermissionDeniedError, "created with owner = unwritable group" do
Specimen.create!(owner_uuid: groups(:aproject).uuid)
end
+ end
+ test "cannot change owner to unwritable group" do
+ set_user_from_auth :rominiadmin
ob = Specimen.create!
assert_raises ArvadosModel::PermissionDeniedError, "changed owner to unwritable group" do
ob.update_attributes!(owner_uuid: groups(:aproject).uuid)
end
-
end
+
end
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list