summaryrefslogtreecommitdiff
path: root/spec/lib
diff options
context:
space:
mode:
authorValery Sizov <valery@gitlab.com>2015-01-20 15:23:37 -0800
committerValery Sizov <valery@gitlab.com>2015-01-20 17:34:23 -0800
commitab7a79bf3bb47fd1c9d82da0bb29a3cdf0246cdc (patch)
tree7a32b98b19476c6ca633f9cb907f3f9c6e1f6bb8 /spec/lib
parent148740cc6769b0faf7ee564552143ccd0a18768b (diff)
downloadgitlab-ce-ab7a79bf3bb47fd1c9d82da0bb29a3cdf0246cdc.tar.gz
developer can push to protected branches
Diffstat (limited to 'spec/lib')
-rw-r--r--spec/lib/gitlab/git_access_spec.rb62
1 files changed, 62 insertions, 0 deletions
diff --git a/spec/lib/gitlab/git_access_spec.rb b/spec/lib/gitlab/git_access_spec.rb
index 8561fd89ba7..fbcaa405f8d 100644
--- a/spec/lib/gitlab/git_access_spec.rb
+++ b/spec/lib/gitlab/git_access_spec.rb
@@ -5,6 +5,68 @@ describe Gitlab::GitAccess do
let(:project) { create(:project) }
let(:user) { create(:user) }
+ describe 'can_push_to_branch?' do
+ describe 'push to none protected branch' do
+ it "returns true if user is a master" do
+ project.team << [user, :master]
+ Gitlab::GitAccess.can_push_to_branch?(user, project, "random_branch").should be_true
+ end
+
+ it "returns true if user is a developer" do
+ project.team << [user, :developer]
+ Gitlab::GitAccess.can_push_to_branch?(user, project, "random_branch").should be_true
+ end
+
+ it "returns false if user is a reporter" do
+ project.team << [user, :reporter]
+ Gitlab::GitAccess.can_push_to_branch?(user, project, "random_branch").should be_false
+ end
+ end
+
+ describe 'push to protected branch' do
+ before do
+ @branch = create :protected_branch, project: project
+ end
+
+ it "returns true if user is a master" do
+ project.team << [user, :master]
+ Gitlab::GitAccess.can_push_to_branch?(user, project, @branch.name).should be_true
+ end
+
+ it "returns false if user is a developer" do
+ project.team << [user, :developer]
+ Gitlab::GitAccess.can_push_to_branch?(user, project, @branch.name).should be_false
+ end
+
+ it "returns false if user is a reporter" do
+ project.team << [user, :reporter]
+ Gitlab::GitAccess.can_push_to_branch?(user, project, @branch.name).should be_false
+ end
+ end
+
+ describe 'push to protected branch if allowed for developers' do
+ before do
+ @branch = create :protected_branch, project: project, developers_can_push: true
+ end
+
+ it "returns true if user is a master" do
+ project.team << [user, :master]
+ Gitlab::GitAccess.can_push_to_branch?(user, project, @branch.name).should be_true
+ end
+
+ it "returns true if user is a developer" do
+ project.team << [user, :developer]
+ Gitlab::GitAccess.can_push_to_branch?(user, project, @branch.name).should be_true
+ end
+
+ it "returns false if user is a reporter" do
+ project.team << [user, :reporter]
+ Gitlab::GitAccess.can_push_to_branch?(user, project, @branch.name).should be_false
+ end
+ end
+
+ end
+
describe 'download_access_check' do
describe 'master permissions' do
before { project.team << [user, :master] }