summaryrefslogtreecommitdiff
path: root/qa/qa/resource/deploy_key.rb
diff options
context:
space:
mode:
Diffstat (limited to 'qa/qa/resource/deploy_key.rb')
-rw-r--r--qa/qa/resource/deploy_key.rb42
1 files changed, 42 insertions, 0 deletions
diff --git a/qa/qa/resource/deploy_key.rb b/qa/qa/resource/deploy_key.rb
index 26355729dab..c06671be77d 100644
--- a/qa/qa/resource/deploy_key.rb
+++ b/qa/qa/resource/deploy_key.rb
@@ -5,6 +5,8 @@ module QA
class DeployKey < Base
attr_accessor :title, :key
+ attribute :id
+
attribute :md5_fingerprint do
Page::Project::Settings::Repository.perform do |setting|
setting.expand_deploy_keys do |key|
@@ -34,6 +36,46 @@ module QA
end
end
end
+
+ def fabricate_via_api!
+ resource_web_url(api_get)
+ rescue ResourceNotFoundError
+ super
+ end
+
+ def resource_web_url(resource)
+ super
+ rescue ResourceURLMissingError
+ # this particular resource does not expose a web_url property
+ end
+
+ def api_get_path
+ "/projects/#{project.id}/deploy_keys/#{find_id}"
+ end
+
+ def api_post_path
+ "/projects/#{project.id}/deploy_keys"
+ end
+
+ def api_post_body
+ {
+ key: key,
+ title: title
+ }
+ end
+
+ private
+
+ def find_id
+ id
+ rescue NoValueError
+ found_key = auto_paginated_response(request_url("/projects/#{project.id}/deploy_keys", per_page: '100'))
+ .find { |keys| keys[:key].strip == @key.strip }
+
+ return found_key.fetch(:id) if found_key
+
+ raise ResourceNotFoundError
+ end
end
end
end