From 01400a08a08fe68f96da18a377cda8a1e972480e Mon Sep 17 00:00:00 2001 From: Michael Kozono Date: Thu, 24 May 2018 17:04:59 -0700 Subject: Reuse Push factory --- qa/qa/factory/repository/push.rb | 8 +++- qa/qa/git/repository.rb | 6 +-- .../features/repository/protected_branches_spec.rb | 53 ++++++++-------------- 3 files changed, 27 insertions(+), 40 deletions(-) (limited to 'qa') diff --git a/qa/qa/factory/repository/push.rb b/qa/qa/factory/repository/push.rb index 28711c12701..7bb808652da 100644 --- a/qa/qa/factory/repository/push.rb +++ b/qa/qa/factory/repository/push.rb @@ -3,7 +3,7 @@ module QA module Repository class Push < Factory::Base attr_accessor :file_name, :file_content, :commit_message, - :branch_name, :new_branch + :branch_name, :new_branch, :output attr_writer :remote_branch @@ -12,6 +12,10 @@ module QA project.description = 'Project with repository' end + product :output do |factory| + factory.output + end + def initialize @file_name = 'file.txt' @file_content = '# This is test project' @@ -58,7 +62,7 @@ module QA end repository.commit(commit_message) - repository.push_changes("#{branch_name}:#{remote_branch}") + @output = repository.push_changes("#{branch_name}:#{remote_branch}") end end end diff --git a/qa/qa/git/repository.rb b/qa/qa/git/repository.rb index 5bc4ffbb036..fc753554fc4 100644 --- a/qa/qa/git/repository.rb +++ b/qa/qa/git/repository.rb @@ -7,8 +7,6 @@ module QA class Repository include Scenario::Actable - attr_reader :push_output - def self.perform(*args) Dir.mktmpdir do |dir| Dir.chdir(dir) { super } @@ -71,7 +69,9 @@ module QA end def push_changes(branch = 'master') - @push_output, _ = run_and_redact_credentials("git push #{@uri} #{branch}") + output, _ = run_and_redact_credentials("git push #{@uri} #{branch}") + + output end def commits diff --git a/qa/qa/specs/features/repository/protected_branches_spec.rb b/qa/qa/specs/features/repository/protected_branches_spec.rb index cce9c104432..491675875b9 100644 --- a/qa/qa/specs/features/repository/protected_branches_spec.rb +++ b/qa/qa/specs/features/repository/protected_branches_spec.rb @@ -7,12 +7,6 @@ module QA resource.name = 'protected-branch-project' end end - given(:location) do - Page::Project::Show.act do - choose_repository_clone_http - repository_location - end - end before do Runtime::Browser.visit(:gitlab, Page::Main::Login) @@ -27,40 +21,32 @@ module QA end context 'when developers and maintainers are allowed to push to a protected branch' do - let!(:protected_branch) { fabricate_branch(allow_to_push: true) } + let!(:protected_branch) { create_protected_branch(allow_to_push: true) } scenario 'user with push rights successfully pushes to the protected branch' do expect(protected_branch.name).to have_content(branch_name) expect(protected_branch.push_allowance).to have_content('Developers + Maintainers') - project.visit! + push = push_new_file(branch_name) - 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 + expect(push.output).to match(/remote: To create a merge request for protected-branch, visit/) end end context 'when developers and maintainers are not allowed to push to a protected branch' do scenario 'user without push rights fails to push to the protected branch' do - fabricate_branch(allow_to_push: false) - - project.visit! + create_protected_branch(allow_to_push: false) - Git::Repository.perform do |repository| - push_output = push_to_repository(repository) + push = push_new_file(branch_name) - 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 + 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 - def fabricate_branch(allow_to_push:) + def create_protected_branch(allow_to_push:) Factory::Resource::Branch.fabricate! do |resource| resource.branch_name = branch_name resource.project = project @@ -69,17 +55,14 @@ module QA end end - def push_to_repository(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') - push_output + def push_new_file(branch) + Factory::Repository::Push.fabricate! do |resource| + resource.project = project + resource.file_name = 'new_file.md' + resource.file_content = '# This is a new file' + resource.commit_message = 'Add new_file.md' + resource.branch_name = branch_name + resource.new_branch = false end end end -- cgit v1.2.1