Skip to content

Commit

Permalink
support non-versioned buckets
Browse files Browse the repository at this point in the history
  • Loading branch information
stwf authored and bernardd committed Jun 30, 2022
1 parent 2a07d2f commit c6404f1
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 30 deletions.
12 changes: 9 additions & 3 deletions lib/ex_aws/s3/utils.ex
Original file line number Diff line number Diff line change
Expand Up @@ -177,9 +177,15 @@ defmodule ExAws.S3.Utils do
},
expiration: %{
tag: "Expiration",
action_tags: fn %{expired_object_delete_marker: marker} ->
marker = if marker, do: "true", else: "false"
[["<ExpiredObjectDeleteMarker>", marker, "</ExpiredObjectDeleteMarker>"]]
action_tags: fn params ->
case params do
%{expired_object_delete_marker: marker} ->
marker = if marker, do: "true", else: "false"
[["<ExpiredObjectDeleteMarker>", marker, "</ExpiredObjectDeleteMarker>"]]

_ ->
[]
end
end
},
noncurrent_version_transition: %{
Expand Down
82 changes: 55 additions & 27 deletions test/lib/s3/utils_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -37,37 +37,65 @@ defmodule ExAws.S3.ImplTest do
}
end

test "build_lifecycle_rule" do
rule = %{
id: "123",
enabled: true,
filter: %{
prefix: "prefix/",
tags: %{}
},
actions: %{
transition: %{
trigger: {:days, 2},
storage: ""
describe "build_lifecycle_rule" do
test "applying rule to unversioned buckets" do
rule = %{
id: "123",
enabled: true,
filter: %{
prefix: "prefix/",
tags: %{}
},
expiration: %{
trigger: {:days, 2},
expired_object_delete_marker: true
},
noncurrent_version_transition: %{
trigger: {:days, 2},
storage: ""
},
noncurrent_version_expiration: %{
trigger: {:days, 2}
actions: %{
transition: %{
trigger: {:days, 2},
storage: ""
},
expiration: %{
trigger: {:days, 2}
},
abort_incomplete_multipart_upload: %{
trigger: {:days, 2}
}
}
}

assert rule |> Utils.build_lifecycle_rule() ==
"<Rule><AbortIncompleteMultipartUpload><DaysAfterInitiation>2</DaysAfterInitiation></AbortIncompleteMultipartUpload><Expiration><Days>2</Days></Expiration><Transition><Days>2</Days><StorageClass></StorageClass></Transition><Filter><Prefix>prefix/</Prefix></Filter><Status>Enabled</Status><ID>123</ID></Rule>"
end

test "applying rule to versioned buckets" do
rule = %{
id: "123",
enabled: true,
filter: %{
prefix: "prefix/",
tags: %{}
},
abort_incomplete_multipart_upload: %{
trigger: {:days, 2}
actions: %{
transition: %{
trigger: {:days, 2},
storage: ""
},
expiration: %{
trigger: {:days, 2},
expired_object_delete_marker: true
},
noncurrent_version_transition: %{
trigger: {:days, 2},
storage: ""
},
noncurrent_version_expiration: %{
trigger: {:days, 2}
},
abort_incomplete_multipart_upload: %{
trigger: {:days, 2}
}
}
}
}

assert rule |> Utils.build_lifecycle_rule() ==
"<Rule><AbortIncompleteMultipartUpload><DaysAfterInitiation>2</DaysAfterInitiation></AbortIncompleteMultipartUpload><NoncurrentVersionExpiration><NoncurrentDays>2</NoncurrentDays></NoncurrentVersionExpiration><NoncurrentVersionTransition><NoncurrentDays>2</NoncurrentDays><StorageClass></StorageClass></NoncurrentVersionTransition><Expiration><Days>2</Days><ExpiredObjectDeleteMarker>true</ExpiredObjectDeleteMarker></Expiration><Transition><Days>2</Days><StorageClass></StorageClass></Transition><Filter><Prefix>prefix/</Prefix></Filter><Status>Enabled</Status><ID>123</ID></Rule>"
assert rule |> Utils.build_lifecycle_rule() ==
"<Rule><AbortIncompleteMultipartUpload><DaysAfterInitiation>2</DaysAfterInitiation></AbortIncompleteMultipartUpload><NoncurrentVersionExpiration><NoncurrentDays>2</NoncurrentDays></NoncurrentVersionExpiration><NoncurrentVersionTransition><NoncurrentDays>2</NoncurrentDays><StorageClass></StorageClass></NoncurrentVersionTransition><Expiration><Days>2</Days><ExpiredObjectDeleteMarker>true</ExpiredObjectDeleteMarker></Expiration><Transition><Days>2</Days><StorageClass></StorageClass></Transition><Filter><Prefix>prefix/</Prefix></Filter><Status>Enabled</Status><ID>123</ID></Rule>"
end
end
end

0 comments on commit c6404f1

Please sign in to comment.