Rewrite deprecated S3 tests (#3889)

This commit is contained in:
Bert Blommers 2021-09-21 20:06:42 +00:00 committed by GitHub
parent c65d4ddc3b
commit 6dfb539a97
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 1306 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@ -439,6 +439,7 @@ def test_lifecycle_with_aimu():
# TODO: Add test for failures due to missing children
# Has boto3 equivalent
@mock_s3_deprecated
def test_lifecycle_with_glacier_transition():
conn = boto.s3.connect_to_region("us-west-1")
@ -458,6 +459,38 @@ def test_lifecycle_with_glacier_transition():
transition.date.should.equal(None)
@mock_s3
def test_lifecycle_with_glacier_transition_boto3():
s3 = boto3.resource("s3", region_name="us-east-1")
client = boto3.client("s3", region_name="us-east-1")
s3.create_bucket(Bucket="foobar")
client.put_bucket_lifecycle_configuration(
Bucket="foobar",
LifecycleConfiguration={
"Rules": [
{
"ID": "myid",
"Prefix": "",
"Status": "Enabled",
"Transitions": [{"Days": 30, "StorageClass": "GLACIER"}],
}
]
},
)
response = client.get_bucket_lifecycle_configuration(Bucket="foobar")
response.should.have.key("Rules")
rules = response["Rules"]
rules.should.have.length_of(1)
rules[0].should.have.key("ID").equal("myid")
transition = rules[0]["Transitions"][0]
transition["Days"].should.equal(30)
transition["StorageClass"].should.equal("GLACIER")
transition.shouldnt.have.key("Date")
# Has boto3 equivalent
@mock_s3_deprecated
def test_lifecycle_multi():
conn = boto.s3.connect_to_region("us-west-1")
@ -500,6 +533,80 @@ def test_lifecycle_multi():
assert False, "Invalid rule id"
@mock_s3
def test_lifecycle_multi_boto3():
s3 = boto3.resource("s3", region_name="us-east-1")
client = boto3.client("s3", region_name="us-east-1")
s3.create_bucket(Bucket="foobar")
date = "2022-10-12T00:00:00.000Z"
sc = "GLACIER"
client.put_bucket_lifecycle_configuration(
Bucket="foobar",
LifecycleConfiguration={
"Rules": [
{"ID": "1", "Prefix": "1/", "Status": "Enabled"},
{
"ID": "2",
"Prefix": "2/",
"Status": "Enabled",
"Expiration": {"Days": 2},
},
{
"ID": "3",
"Prefix": "3/",
"Status": "Enabled",
"Expiration": {"Date": date},
},
{
"ID": "4",
"Prefix": "4/",
"Status": "Enabled",
"Transitions": [{"Days": 4, "StorageClass": "GLACIER"}],
},
{
"ID": "5",
"Prefix": "5/",
"Status": "Enabled",
"Transitions": [{"Date": date, "StorageClass": "GLACIER"}],
},
]
},
)
# read the lifecycle back
rules = client.get_bucket_lifecycle_configuration(Bucket="foobar")["Rules"]
for rule in rules:
if rule["ID"] == "1":
rule["Prefix"].should.equal("1/")
rule.shouldnt.have.key("Expiration")
elif rule["ID"] == "2":
rule["Prefix"].should.equal("2/")
rule["Expiration"]["Days"].should.equal(2)
elif rule["ID"] == "3":
rule["Prefix"].should.equal("3/")
rule["Expiration"]["Date"].should.be.a(datetime)
rule["Expiration"]["Date"].strftime("%Y-%m-%dT%H:%M:%S.000Z").should.equal(
date
)
elif rule["ID"] == "4":
rule["Prefix"].should.equal("4/")
rule["Transitions"][0]["Days"].should.equal(4)
rule["Transitions"][0]["StorageClass"].should.equal(sc)
elif rule["ID"] == "5":
rule["Prefix"].should.equal("5/")
rule["Transitions"][0]["Date"].should.be.a(datetime)
rule["Transitions"][0]["Date"].strftime(
"%Y-%m-%dT%H:%M:%S.000Z"
).should.equal(date)
rule["Transitions"][0]["StorageClass"].should.equal(sc)
else:
assert False, "Invalid rule id"
# Has boto3 equivalent
@mock_s3_deprecated
def test_lifecycle_delete():
conn = boto.s3.connect_to_region("us-west-1")
@ -513,3 +620,26 @@ def test_lifecycle_delete():
bucket.delete_lifecycle_configuration()
bucket.get_lifecycle_config.when.called_with().should.throw(S3ResponseError)
@mock_s3
def test_lifecycle_delete_boto3():
s3 = boto3.resource("s3", region_name="us-east-1")
client = boto3.client("s3", region_name="us-east-1")
s3.create_bucket(Bucket="foobar")
client.put_bucket_lifecycle_configuration(
Bucket="foobar",
LifecycleConfiguration={
"Rules": [{"ID": "myid", "Prefix": "", "Status": "Enabled"}]
},
)
client.delete_bucket_lifecycle(Bucket="foobar")
with pytest.raises(ClientError) as ex:
client.get_bucket_lifecycle_configuration(Bucket="foobar")
ex.value.response["Error"]["Code"].should.equal("NoSuchLifecycleConfiguration")
ex.value.response["Error"]["Message"].should.equal(
"The lifecycle configuration does not exist"
)