diff options
author | Valery Sizov <valery@gitlab.com> | 2015-01-20 15:23:37 -0800 |
---|---|---|
committer | Valery Sizov <valery@gitlab.com> | 2015-01-20 17:34:23 -0800 |
commit | ab7a79bf3bb47fd1c9d82da0bb29a3cdf0246cdc (patch) | |
tree | 7a32b98b19476c6ca633f9cb907f3f9c6e1f6bb8 /spec/lib | |
parent | 148740cc6769b0faf7ee564552143ccd0a18768b (diff) | |
download | gitlab-ce-ab7a79bf3bb47fd1c9d82da0bb29a3cdf0246cdc.tar.gz |
developer can push to protected branches
Diffstat (limited to 'spec/lib')
-rw-r--r-- | spec/lib/gitlab/git_access_spec.rb | 62 |
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] } |