summaryrefslogtreecommitdiff
path: root/qa/qa/resource/registry_repository.rb
diff options
context:
space:
mode:
Diffstat (limited to 'qa/qa/resource/registry_repository.rb')
-rw-r--r--qa/qa/resource/registry_repository.rb53
1 files changed, 53 insertions, 0 deletions
diff --git a/qa/qa/resource/registry_repository.rb b/qa/qa/resource/registry_repository.rb
new file mode 100644
index 00000000000..1e43d93a784
--- /dev/null
+++ b/qa/qa/resource/registry_repository.rb
@@ -0,0 +1,53 @@
+# frozen_string_literal: true
+
+require 'securerandom'
+
+module QA
+ module Resource
+ class RegistryRepository < Base
+ attr_accessor :name,
+ :repository_id
+
+ attribute :project do
+ Project.fabricate_via_api! do |resource|
+ resource.name = 'project-with-registry'
+ resource.description = 'Project with Registry'
+ end
+ end
+
+ def initialize
+ @name = project.path_with_namespace
+ @repository_id = nil
+ end
+
+ def fabricate!
+ end
+
+ def fabricate_via_api!
+ resource_web_url(api_get)
+ rescue ResourceNotFoundError
+ super
+ end
+
+ def remove_via_api!
+ registry_repositories = project.registry_repositories
+ if registry_repositories && !registry_repositories.empty?
+ this_registry_repository = registry_repositories.find { |registry_repository| registry_repository[:path] == name }
+
+ @repository_id = this_registry_repository[:id]
+
+ QA::Runtime::Logger.debug("Deleting registry '#{name}'")
+ super
+ end
+ end
+
+ def api_delete_path
+ "/projects/#{project.id}/registry/repositories/#{@repository_id}"
+ end
+
+ def api_get_path
+ "/projects/#{project.id}/registry/repositories"
+ end
+ end
+ end
+end