diff options
author | Johan Sørensen <johan@johansorensen.com> | 2009-11-17 14:55:20 +0100 |
---|---|---|
committer | Johan Sørensen <johan@johansorensen.com> | 2009-11-19 15:42:28 +0100 |
commit | 9bd5b1b8d526bae9744635cb32925ea49491e85c (patch) | |
tree | a63307c51f0f43ee5a8f4443a679fc7e286c1afb | |
parent | 2d24286d6d54bb10812af78685571496a4e1902c (diff) | |
download | gitorious-mainline-outdated-9bd5b1b8d526bae9744635cb32925ea49491e85c.zip gitorious-mainline-outdated-9bd5b1b8d526bae9744635cb32925ea49491e85c.tar.gz gitorious-mainline-outdated-9bd5b1b8d526bae9744635cb32925ea49491e85c.tar.bz2 |
Create the proper initial Committership permissions when a repository is created
-rw-r--r-- | app/models/committership.rb | 7 | ||||
-rw-r--r-- | app/models/repository.rb | 2 | ||||
-rw-r--r-- | test/unit/committership_test.rb | 7 | ||||
-rw-r--r-- | test/unit/repository_test.rb | 6 |
4 files changed, 20 insertions, 2 deletions
diff --git a/app/models/committership.rb b/app/models/committership.rb index e03be85..f9277ed 100644 --- a/app/models/committership.rb +++ b/app/models/committership.rb @@ -51,6 +51,13 @@ class Committership < ActiveRecord::Base named_scope :committers, :conditions => ["(permissions & ?)", CAN_COMMIT] named_scope :admins, :conditions => ["(permissions & ?)", CAN_ADMIN] + def self.create_for_owner!(an_owner) + create!({ + :committer => an_owner, + :permissions => (CAN_REVIEW | CAN_COMMIT | CAN_ADMIN) + }) + end + def permission_mask_for(*perms) perms.inject(0) do |memo, perm_symbol| memo | PERMISSION_TABLE[perm_symbol] diff --git a/app/models/repository.rb b/app/models/repository.rb index 0b581ff..5192462 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -633,7 +633,7 @@ class Repository < ActiveRecord::Base end def create_initial_committership - self.committerships.create!(:committer => self.owner) + self.committerships.create_for_owner!(self.owner) end def self.full_path_from_partial_path(path) diff --git a/test/unit/committership_test.rb b/test/unit/committership_test.rb index 620ad0a..71cfc0b 100644 --- a/test/unit/committership_test.rb +++ b/test/unit/committership_test.rb @@ -211,5 +211,12 @@ class CommittershipTest < ActiveSupport::TestCase @cs.save! assert Committership.admins.all.include?(@cs) end + + should "create an initial set of permissions for an owner with full perms" do + assert cs = @repository.committerships.create_for_owner!(Group.first) + assert cs.admin? + assert cs.committer? + assert cs.reviewer? + end end end diff --git a/test/unit/repository_test.rb b/test/unit/repository_test.rb index a07a1ac..cc1028e 100644 --- a/test/unit/repository_test.rb +++ b/test/unit/repository_test.rb @@ -592,7 +592,11 @@ class RepositoryTest < ActiveSupport::TestCase assert_difference("Committership.count") do user_repo.save! assert_equal 1, user_repo.committerships.count - assert_equal users(:johan), user_repo.committerships.first.committer + cs = user_repo.committerships.first + assert_equal users(:johan), cs.committer + [:reviewer?, :committer?, :admin?].each do |m| + assert cs.send(m), "should have #{m} permissions" + end end end |