diff options
-rw-r--r-- | qa/qa/specs/features/repository/protected_branches_spec.rb | 78 |
1 files changed, 35 insertions, 43 deletions
diff --git a/qa/qa/specs/features/repository/protected_branches_spec.rb b/qa/qa/specs/features/repository/protected_branches_spec.rb index 40c810605ba..fcec987ec69 100644 --- a/qa/qa/specs/features/repository/protected_branches_spec.rb +++ b/qa/qa/specs/features/repository/protected_branches_spec.rb @@ -27,69 +27,61 @@ module QA end scenario 'user is able to protect a branch' do - protected_branch = Factory::Resource::Branch.fabricate! do |resource| - resource.branch_name = branch_name - resource.project = project - resource.allow_to_push = true - resource.protected = true - end + protected_branch = fabricate_branch(allow_to_push: true) expect(protected_branch.name).to have_content(branch_name) expect(protected_branch.push_allowance).to have_content('Developers + Maintainers') end - scenario 'users without authorization cannot push to protected branch' do - Factory::Resource::Branch.fabricate! do |resource| - resource.branch_name = branch_name - resource.project = project - resource.allow_to_push = false - resource.protected = true - end + context 'push to protected branch' do + scenario 'unauthorized users are blocked' do + fabricate_branch(allow_to_push: false) - project.visit! + project.visit! - Git::Repository.perform do |repository| - repository.uri = location.uri - repository.use_default_credentials + Git::Repository.perform do |repository| + push_output = push_to_repository(repository) - repository.act do - clone - configure_identity('GitLab QA', 'root@gitlab.com') - checkout('protected-branch') - commit_file('README.md', 'readme content', 'Add a readme') - push_changes('protected-branch') + expect(push_output) + .to match(/remote\: GitLab\: You are not allowed to push code to protected branches on this project/) + expect(push_output) + .to match(/\[remote rejected\] #{branch_name} -> #{branch_name} \(pre-receive hook declined\)/) end + end + + scenario 'authorized users are allowed' do + fabricate_branch(allow_to_push: true) + + project.visit! - expect(repository.push_output) - .to match(/remote\: GitLab\: You are not allowed to push code to protected branches on this project/) - expect(repository.push_output) - .to match(/\[remote rejected\] #{branch_name} -> #{branch_name} \(pre-receive hook declined\)/) + Git::Repository.perform do |repository| + push_output = push_to_repository(repository) + + expect(push_output).to match(/remote: To create a merge request for protected-branch, visit/) + end end end - scenario 'users with authorization can push to protected branch' do + def fabricate_branch(allow_to_push:) Factory::Resource::Branch.fabricate! do |resource| resource.branch_name = branch_name resource.project = project - resource.allow_to_push = true + resource.allow_to_push = allow_to_push resource.protected = true end + end - project.visit! - - Git::Repository.perform do |repository| - repository.uri = location.uri - repository.use_default_credentials - - repository.act do - clone - configure_identity('GitLab QA', 'root@gitlab.com') - checkout('protected-branch') - commit_file('README.md', 'readme content', 'Add a readme') - push_changes('protected-branch') - end + def push_to_repository(repository) + repository.uri = location.uri + repository.use_default_credentials - expect(repository.push_output).to match(/remote: To create a merge request for protected-branch, visit/) + repository.act do + clone + configure_identity('GitLab QA', 'root@gitlab.com') + checkout('protected-branch') + commit_file('README.md', 'readme content', 'Add a readme') + push_changes('protected-branch') + push_output end end end |