2022-06-29 20:12:56 +00:00
|
|
|
import boto3
|
2023-11-30 15:55:51 +00:00
|
|
|
|
2022-06-29 20:12:56 +00:00
|
|
|
from moto import mock_cloudfront
|
2023-11-30 15:55:51 +00:00
|
|
|
|
2022-06-29 20:12:56 +00:00
|
|
|
from . import cloudfront_test_scaffolding as scaffold
|
|
|
|
|
|
|
|
|
|
|
|
@mock_cloudfront
|
2023-06-10 18:31:38 +00:00
|
|
|
def test_create_invalidation_with_single_path():
|
|
|
|
client = boto3.client("cloudfront", region_name="us-west-1")
|
|
|
|
config = scaffold.example_distribution_config("ref")
|
|
|
|
resp = client.create_distribution(DistributionConfig=config)
|
|
|
|
dist_id = resp["Distribution"]["Id"]
|
|
|
|
|
|
|
|
resp = client.create_invalidation(
|
|
|
|
DistributionId=dist_id,
|
|
|
|
InvalidationBatch={
|
|
|
|
"Paths": {"Quantity": 1, "Items": ["/path1"]},
|
|
|
|
"CallerReference": "ref2",
|
|
|
|
},
|
|
|
|
)
|
|
|
|
|
2023-07-05 22:49:24 +00:00
|
|
|
assert "Location" in resp
|
|
|
|
assert "Invalidation" in resp
|
2023-06-10 18:31:38 +00:00
|
|
|
|
2023-07-05 22:49:24 +00:00
|
|
|
assert "Id" in resp["Invalidation"]
|
|
|
|
assert resp["Invalidation"]["Status"] == "COMPLETED"
|
|
|
|
assert "CreateTime" in resp["Invalidation"]
|
|
|
|
assert resp["Invalidation"]["InvalidationBatch"] == {
|
|
|
|
"Paths": {"Quantity": 1, "Items": ["/path1"]},
|
|
|
|
"CallerReference": "ref2",
|
|
|
|
}
|
2023-06-10 18:31:38 +00:00
|
|
|
|
|
|
|
|
|
|
|
@mock_cloudfront
|
|
|
|
def test_create_invalidation_with_multiple_paths():
|
2022-06-29 20:12:56 +00:00
|
|
|
client = boto3.client("cloudfront", region_name="us-west-1")
|
|
|
|
config = scaffold.example_distribution_config("ref")
|
|
|
|
resp = client.create_distribution(DistributionConfig=config)
|
|
|
|
dist_id = resp["Distribution"]["Id"]
|
|
|
|
|
|
|
|
resp = client.create_invalidation(
|
|
|
|
DistributionId=dist_id,
|
|
|
|
InvalidationBatch={
|
|
|
|
"Paths": {"Quantity": 2, "Items": ["/path1", "/path2"]},
|
|
|
|
"CallerReference": "ref2",
|
|
|
|
},
|
|
|
|
)
|
|
|
|
|
2023-07-05 22:49:24 +00:00
|
|
|
assert "Location" in resp
|
|
|
|
assert "Invalidation" in resp
|
2022-06-29 20:12:56 +00:00
|
|
|
|
2023-07-05 22:49:24 +00:00
|
|
|
assert "Id" in resp["Invalidation"]
|
|
|
|
assert resp["Invalidation"]["Status"] == "COMPLETED"
|
|
|
|
assert "CreateTime" in resp["Invalidation"]
|
|
|
|
assert resp["Invalidation"]["InvalidationBatch"] == {
|
|
|
|
"Paths": {"Quantity": 2, "Items": ["/path1", "/path2"]},
|
|
|
|
"CallerReference": "ref2",
|
|
|
|
}
|
2022-10-18 11:07:10 +00:00
|
|
|
|
|
|
|
|
|
|
|
@mock_cloudfront
|
|
|
|
def test_list_invalidations():
|
|
|
|
client = boto3.client("cloudfront", region_name="us-west-1")
|
|
|
|
config = scaffold.example_distribution_config("ref")
|
|
|
|
resp = client.create_distribution(DistributionConfig=config)
|
|
|
|
dist_id = resp["Distribution"]["Id"]
|
|
|
|
resp = client.create_invalidation(
|
|
|
|
DistributionId=dist_id,
|
|
|
|
InvalidationBatch={
|
|
|
|
"Paths": {"Quantity": 2, "Items": ["/path1", "/path2"]},
|
|
|
|
"CallerReference": "ref2",
|
|
|
|
},
|
|
|
|
)
|
|
|
|
invalidation_id = resp["Invalidation"]["Id"]
|
|
|
|
|
2023-07-05 22:49:24 +00:00
|
|
|
resp = client.list_invalidations(DistributionId=dist_id)
|
2022-10-18 11:07:10 +00:00
|
|
|
|
2023-07-05 22:49:24 +00:00
|
|
|
assert "NextMarker" not in resp["InvalidationList"]
|
|
|
|
assert resp["InvalidationList"]["MaxItems"] == 100
|
|
|
|
assert resp["InvalidationList"]["IsTruncated"] is False
|
|
|
|
assert resp["InvalidationList"]["Quantity"] == 1
|
|
|
|
assert len(resp["InvalidationList"]["Items"]) == 1
|
|
|
|
assert resp["InvalidationList"]["Items"][0]["Id"] == invalidation_id
|
|
|
|
assert "CreateTime" in resp["InvalidationList"]["Items"][0]
|
|
|
|
assert resp["InvalidationList"]["Items"][0]["Status"] == "COMPLETED"
|
2022-10-18 11:07:10 +00:00
|
|
|
|
|
|
|
|
|
|
|
@mock_cloudfront
|
|
|
|
def test_list_invalidations__no_entries():
|
|
|
|
client = boto3.client("cloudfront", region_name="us-west-1")
|
|
|
|
|
2023-07-05 22:49:24 +00:00
|
|
|
resp = client.list_invalidations(DistributionId="SPAM")
|
2022-10-18 11:07:10 +00:00
|
|
|
|
2023-07-05 22:49:24 +00:00
|
|
|
assert "NextMarker" not in resp["InvalidationList"]
|
|
|
|
assert resp["InvalidationList"]["MaxItems"] == 100
|
|
|
|
assert resp["InvalidationList"]["IsTruncated"] is False
|
|
|
|
assert resp["InvalidationList"]["Quantity"] == 0
|
|
|
|
assert "Items" not in resp["InvalidationList"]
|