diff options
Diffstat (limited to 'qa/qa/resource/deploy_key.rb')
-rw-r--r-- | qa/qa/resource/deploy_key.rb | 42 |
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 |