summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohan Sørensen <johan@johansorensen.com>2009-11-17 14:55:20 +0100
committerJohan Sørensen <johan@johansorensen.com>2009-11-19 15:42:28 +0100
commit9bd5b1b8d526bae9744635cb32925ea49491e85c (patch)
treea63307c51f0f43ee5a8f4443a679fc7e286c1afb
parent2d24286d6d54bb10812af78685571496a4e1902c (diff)
downloadgitorious-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.rb7
-rw-r--r--app/models/repository.rb2
-rw-r--r--test/unit/committership_test.rb7
-rw-r--r--test/unit/repository_test.rb6
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