diff options
Diffstat (limited to 'qa/qa/factory')
-rw-r--r-- | qa/qa/factory/repository/project_push.rb | 2 | ||||
-rw-r--r-- | qa/qa/factory/repository/push.rb | 16 | ||||
-rw-r--r-- | qa/qa/factory/resource/fork.rb | 24 | ||||
-rw-r--r-- | qa/qa/factory/resource/kubernetes_cluster.rb | 3 | ||||
-rw-r--r-- | qa/qa/factory/resource/merge_request_from_fork.rb | 24 | ||||
-rw-r--r-- | qa/qa/factory/resource/project.rb | 1 | ||||
-rw-r--r-- | qa/qa/factory/resource/user.rb | 34 |
7 files changed, 102 insertions, 2 deletions
diff --git a/qa/qa/factory/repository/project_push.rb b/qa/qa/factory/repository/project_push.rb index 48674c08a8d..4f78098d348 100644 --- a/qa/qa/factory/repository/project_push.rb +++ b/qa/qa/factory/repository/project_push.rb @@ -11,6 +11,8 @@ module QA factory.output end + product(:project) { |factory| factory.project } + def initialize @file_name = 'file.txt' @file_content = '# This is test project' diff --git a/qa/qa/factory/repository/push.rb b/qa/qa/factory/repository/push.rb index 4f97e65b091..5b7ebf6c41f 100644 --- a/qa/qa/factory/repository/push.rb +++ b/qa/qa/factory/repository/push.rb @@ -5,7 +5,8 @@ module QA module Repository class Push < Factory::Base attr_accessor :file_name, :file_content, :commit_message, - :branch_name, :new_branch, :output, :repository_uri + :branch_name, :new_branch, :output, :repository_uri, + :user attr_writer :remote_branch @@ -31,9 +32,20 @@ module QA def fabricate! Git::Repository.perform do |repository| repository.uri = repository_uri + repository.use_default_credentials + username = 'GitLab QA' + email = 'root@gitlab.com' + + if user + repository.username = user.username + repository.password = user.password + username = user.name + email = user.email + end + repository.clone - repository.configure_identity('GitLab QA', 'root@gitlab.com') + repository.configure_identity(username, email) if new_branch repository.checkout_new_branch(branch_name) diff --git a/qa/qa/factory/resource/fork.rb b/qa/qa/factory/resource/fork.rb new file mode 100644 index 00000000000..1d0c76a3d30 --- /dev/null +++ b/qa/qa/factory/resource/fork.rb @@ -0,0 +1,24 @@ +module QA + module Factory + module Resource + class Fork < Factory::Base + dependency Factory::Repository::ProjectPush, as: :push + + dependency Factory::Resource::User, as: :user + + product(:user) { |factory| factory.user } + + def fabricate! + push.project.visit! + Page::Project::Show.act { fork_project } + + Page::Project::Fork::New.perform do |fork_new| + fork_new.choose_namespace(user.name) + end + + Page::Layout::Banner.act { has_notice?('The project was successfully forked.') } + end + end + end + end +end diff --git a/qa/qa/factory/resource/kubernetes_cluster.rb b/qa/qa/factory/resource/kubernetes_cluster.rb index f32cf985e9d..1c9e5f94b22 100644 --- a/qa/qa/factory/resource/kubernetes_cluster.rb +++ b/qa/qa/factory/resource/kubernetes_cluster.rb @@ -36,6 +36,9 @@ module QA if @install_helm_tiller Page::Project::Operations::Kubernetes::Show.perform do |page| + # We must wait a few seconds for permissions to be setup correctly for new cluster + sleep 10 + # Helm must be installed before everything else page.install!(:helm) page.await_installed(:helm) diff --git a/qa/qa/factory/resource/merge_request_from_fork.rb b/qa/qa/factory/resource/merge_request_from_fork.rb new file mode 100644 index 00000000000..6caaf65f673 --- /dev/null +++ b/qa/qa/factory/resource/merge_request_from_fork.rb @@ -0,0 +1,24 @@ +module QA + module Factory + module Resource + class MergeRequestFromFork < MergeRequest + attr_accessor :fork_branch + + dependency Factory::Resource::Fork, as: :fork + + dependency Factory::Repository::ProjectPush, as: :push do |push, factory| + push.project = factory.fork + push.branch_name = factory.fork_branch + push.file_name = 'file2.txt' + push.user = factory.fork.user + end + + def fabricate! + fork.visit! + Page::Project::Show.act { new_merge_request } + Page::MergeRequest::New.act { create_merge_request } + end + end + end + end +end diff --git a/qa/qa/factory/resource/project.rb b/qa/qa/factory/resource/project.rb index 7bc64c6ae5d..7fff22b5468 100644 --- a/qa/qa/factory/resource/project.rb +++ b/qa/qa/factory/resource/project.rb @@ -37,6 +37,7 @@ module QA page.choose_test_namespace page.choose_name(@name) page.add_description(@description) + page.set_visibility('Public') page.create_new_project end end diff --git a/qa/qa/factory/resource/user.rb b/qa/qa/factory/resource/user.rb new file mode 100644 index 00000000000..e08df9e0cd0 --- /dev/null +++ b/qa/qa/factory/resource/user.rb @@ -0,0 +1,34 @@ +require 'securerandom' + +module QA + module Factory + module Resource + class User < Factory::Base + attr_accessor :name, :username, :email, :password + + def initialize + @name = "name-#{SecureRandom.hex(8)}" + @username = "username-#{SecureRandom.hex(8)}" + @email = "mail#{SecureRandom.hex(8)}@mail.com" + @password = 'password' + end + + product(:name) { |factory| factory.name } + + product(:username) { |factory| factory.username } + + product(:email) { |factory| factory.email } + + product(:password) { |factory| factory.password } + + def fabricate! + Page::Menu::Main.act { sign_out } + Page::Main::Login.act { switch_to_register_tab } + Page::Main::SignUp.perform do |page| + page.sign_up!(name: name, username: username, email: email, password: password) + end + end + end + end + end +end |