Commit 92c21068 authored by Ramya Authappan's avatar Ramya Authappan

Merge branch 'ml-fix-resource-removal-when-already-removed' into 'master'

Check if resource exists before removing after tests

See merge request gitlab-org/gitlab!79574
parents 074ee55e 11820e8d
...@@ -7,11 +7,11 @@ module QA ...@@ -7,11 +7,11 @@ module QA
module Resource module Resource
module ApiFabricator module ApiFabricator
include Capybara::DSL include Capybara::DSL
include Support::API
include Errors include Errors
attr_reader :api_resource, :api_response
attr_writer :api_client attr_writer :api_client
attr_accessor :api_user attr_accessor :api_user, :api_resource, :api_response
def api_support? def api_support?
respond_to?(:api_get_path) && respond_to?(:api_get_path) &&
...@@ -48,9 +48,6 @@ module QA ...@@ -48,9 +48,6 @@ module QA
end end
end end
include Support::API
attr_writer :api_resource, :api_response
def api_put(body = api_put_body) def api_put(body = api_put_body)
response = put( response = put(
Runtime::API::Request.new(api_client, api_put_path).url, Runtime::API::Request.new(api_client, api_put_path).url,
...@@ -67,6 +64,16 @@ module QA ...@@ -67,6 +64,16 @@ module QA
@api_fabrication_http_method ||= :post @api_fabrication_http_method ||= :post
end end
# Checks if a resource already exists
#
# @return [Boolean] true if the resource returns HTTP status code 200
def exists?
request = Runtime::API::Request.new(api_client, api_get_path)
response = get(request.url)
response.code == HTTP_STATUS_OK
end
private private
def resource_web_url(resource) def resource_web_url(resource)
......
...@@ -46,7 +46,9 @@ module QA ...@@ -46,7 +46,9 @@ module QA
# @return [Hash<Symbol, QA::Resource>] the resources that were to be removed. # @return [Hash<Symbol, QA::Resource>] the resources that were to be removed.
def remove_all_via_api! def remove_all_via_api!
resources.each do |reuse_as, resource| resources.each do |reuse_as, resource|
QA::Runtime::Logger.debug("#{self.name} - removing #{reuse_as}") QA::Runtime::Logger.debug("#{self.name} - removing resource reused as :#{reuse_as}")
next QA::Runtime::Logger.debug("#{self.name} reused as :#{reuse_as} has already been removed.") unless resource.exists?
resource.method(:remove_via_api!).super_method.call resource.method(:remove_via_api!).super_method.call
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment