summaryrefslogtreecommitdiff
path: root/qa/qa/resource/fork.rb
diff options
context:
space:
mode:
Diffstat (limited to 'qa/qa/resource/fork.rb')
-rw-r--r--qa/qa/resource/fork.rb52
1 files changed, 46 insertions, 6 deletions
diff --git a/qa/qa/resource/fork.rb b/qa/qa/resource/fork.rb
index 73f1b0b9695..854dd92e89c 100644
--- a/qa/qa/resource/fork.rb
+++ b/qa/qa/resource/fork.rb
@@ -3,19 +3,24 @@
module QA
module Resource
class Fork < Base
+ attribute :name do
+ upstream.name
+ end
+
attribute :project do
- Resource::Project.fabricate! do |resource|
- resource.name = upstream.project.name
- resource.path_with_namespace = "#{user.name}/#{upstream.project.name}"
+ Resource::Project.fabricate_via_api! do |resource|
+ resource.add_name_uuid = false
+ resource.name = name
+ resource.path_with_namespace = "#{user.username}/#{name}"
end
end
attribute :upstream do
- Repository::ProjectPush.fabricate!
+ Repository::ProjectPush.fabricate!.project
end
attribute :user do
- User.fabricate! do |resource|
+ User.fabricate_via_api! do |resource|
if Runtime::Env.forker?
resource.username = Runtime::Env.forker_username
resource.password = Runtime::Env.forker_password
@@ -33,7 +38,7 @@ module QA
login.sign_in_using_credentials(user: user)
end
- upstream.project.visit!
+ upstream.visit!
Page::Project::Show.perform(&:fork_project)
@@ -47,6 +52,41 @@ module QA
populate(:project)
end
+
+ def fabricate_via_api!
+ populate(:upstream, :user)
+
+ Runtime::Logger.debug("Forking project #{upstream.name} to namespace #{user.username}...")
+ super
+ wait_until_forked
+
+ populate(:project)
+ end
+
+ def api_get_path
+ "/projects/#{CGI.escape(path_with_namespace)}"
+ end
+
+ def api_post_path
+ "/projects/#{upstream.id}/fork"
+ end
+
+ def api_post_body
+ {
+ namespace: user.username,
+ name: name,
+ path: name
+ }
+ end
+
+ def wait_until_forked
+ Runtime::Logger.debug("Waiting for the fork process to complete...")
+ forked = wait_until do
+ project.import_status == "finished"
+ end
+
+ raise "Timed out while waiting for the fork process to complete." unless forked
+ end
end
end
end