From 7ed21d255498c801777d1bf1f313d8ebad19f261 Mon Sep 17 00:00:00 2001 From: victor felder Date: Mon, 15 Jul 2024 18:15:17 +0200 Subject: [PATCH] handle errors in parse_complete_multipart_upload --- lib/ex_aws/s3/parsers.ex | 2 ++ test/lib/s3/parser_test.exs | 50 +++++++++++++++++++++---------------- 2 files changed, 31 insertions(+), 21 deletions(-) diff --git a/lib/ex_aws/s3/parsers.ex b/lib/ex_aws/s3/parsers.ex index bfa6e65..54ca874 100644 --- a/lib/ex_aws/s3/parsers.ex +++ b/lib/ex_aws/s3/parsers.ex @@ -105,6 +105,8 @@ if Code.ensure_loaded?(SweetXml) do {:ok, %{resp | body: parsed_body}} end + def parse_complete_multipart_upload(val), do: val + def parse_list_multipart_uploads({:ok, %{body: xml} = resp}) do parsed_body = SweetXml.xpath(xml, ~x"//ListMultipartUploadsResult", diff --git a/test/lib/s3/parser_test.exs b/test/lib/s3/parser_test.exs index 5c519a8..692f8bb 100644 --- a/test/lib/s3/parser_test.exs +++ b/test/lib/s3/parser_test.exs @@ -334,28 +334,36 @@ defmodule ExAws.S3.ParserTest do end end - test "#parse_complete_multipart_upload parses CompleteMultipartUploadResult" do - complete_multipart_upload_response = """ - - https://s3-eu-west-1.amazonaws.com/my-bucket/tmp-copy3.mp4 - my-bucket - tmp-copy3.mp4 - "17fbc0a106abbb6f381aac6e331f2a19-1" - - """ - - result = - ExAws.S3.Parsers.parse_complete_multipart_upload( - {:ok, %{body: complete_multipart_upload_response}} - ) + describe "#parse_complete_multipart_upload" do + test "parses CompleteMultipartUploadResult" do + complete_multipart_upload_response = """ + + https://s3-eu-west-1.amazonaws.com/my-bucket/tmp-copy3.mp4 + my-bucket + tmp-copy3.mp4 + "17fbc0a106abbb6f381aac6e331f2a19-1" + + """ - {:ok, %{body: body}} = result + result = + ExAws.S3.Parsers.parse_complete_multipart_upload( + {:ok, %{body: complete_multipart_upload_response}} + ) + + {:ok, %{body: body}} = result + + assert body == %{ + location: "https://s3-eu-west-1.amazonaws.com/my-bucket/tmp-copy3.mp4", + bucket: "my-bucket", + key: "tmp-copy3.mp4", + etag: "\"17fbc0a106abbb6f381aac6e331f2a19-1\"" + } + end - assert body == %{ - location: "https://s3-eu-west-1.amazonaws.com/my-bucket/tmp-copy3.mp4", - bucket: "my-bucket", - key: "tmp-copy3.mp4", - etag: "\"17fbc0a106abbb6f381aac6e331f2a19-1\"" - } + test "handles errors by passing them through" do + error = {:error, "error"} + result = ExAws.S3.Parsers.parse_complete_multipart_upload(error) + assert result == error + end end end