summaryrefslogtreecommitdiff
path: root/qa
diff options
context:
space:
mode:
authorMichael Kozono <mkozono@gmail.com>2018-05-24 17:04:59 -0700
committerMichael Kozono <mkozono@gmail.com>2018-06-08 09:05:06 -0700
commit01400a08a08fe68f96da18a377cda8a1e972480e (patch)
tree693fb9aa1ebb387d9faeb0d3de944a5d53771c6f /qa
parentc5bcae5dd657af0f17219dc708ad33f17bcf3bb1 (diff)
downloadgitlab-ce-01400a08a08fe68f96da18a377cda8a1e972480e.tar.gz
Reuse Push factory
Diffstat (limited to 'qa')
-rw-r--r--qa/qa/factory/repository/push.rb8
-rw-r--r--qa/qa/git/repository.rb6
-rw-r--r--qa/qa/specs/features/repository/protected_branches_spec.rb53
3 files changed, 27 insertions, 40 deletions
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