summaryrefslogtreecommitdiff
path: root/qa/qa/resource/api_fabricator.rb
diff options
context:
space:
mode:
Diffstat (limited to 'qa/qa/resource/api_fabricator.rb')
-rw-r--r--qa/qa/resource/api_fabricator.rb34
1 files changed, 19 insertions, 15 deletions
diff --git a/qa/qa/resource/api_fabricator.rb b/qa/qa/resource/api_fabricator.rb
index c1533577657..b94fa543b48 100644
--- a/qa/qa/resource/api_fabricator.rb
+++ b/qa/qa/resource/api_fabricator.rb
@@ -96,31 +96,35 @@ module QA
end
def api_post
- if api_post_path == "/graphql"
- graphql_response = post(
- Runtime::API::Request.new(api_client, api_post_path).url,
- query: api_post_body)
+ process_api_response(api_post_to(api_post_path, api_post_body))
+ end
+
+ def api_post_to(post_path, post_body)
+ if post_path == "/graphql"
+ graphql_response = post(Runtime::API::Request.new(api_client, post_path).url, query: post_body)
- flattened_response = flatten_hash(parse_body(graphql_response))
+ body = flatten_hash(parse_body(graphql_response))
- unless graphql_response.code == HTTP_STATUS_OK && flattened_response[:errors].empty?
- raise ResourceFabricationFailedError, "Fabrication of #{self.class.name} using the API failed (#{graphql_response.code}) with `#{graphql_response}`."
+ unless graphql_response.code == HTTP_STATUS_OK && (body[:errors].nil? || body[:errors].empty?)
+ raise(ResourceFabricationFailedError, <<~MSG)
+ Fabrication of #{self.class.name} using the API failed (#{graphql_response.code}) with `#{graphql_response}`.
+ MSG
end
- flattened_response[:web_url] = flattened_response.delete(:webUrl)
- flattened_response[:id] = flattened_response.fetch(:id).split('/')[-1]
+ body[:id] = body.fetch(:id).split('/').last
- process_api_response(flattened_response)
+ body.transform_keys { |key| key.to_s.underscore.to_sym }
else
- response = post(
- Runtime::API::Request.new(api_client, api_post_path).url,
- api_post_body)
+ response = post(Runtime::API::Request.new(api_client, post_path).url, post_body)
unless response.code == HTTP_STATUS_CREATED
- raise ResourceFabricationFailedError, "Fabrication of #{self.class.name} using the API failed (#{response.code}) with `#{response}`."
+ raise(
+ ResourceFabricationFailedError,
+ "Fabrication of #{self.class.name} using the API failed (#{response.code}) with `#{response}`."
+ )
end
- process_api_response(parse_body(response))
+ parse_body(response)
end
end