2021-08-16 14:13:50 +00:00
|
|
|
import boto3
|
|
|
|
|
2021-10-05 17:11:07 +00:00
|
|
|
from moto import mock_ec2, settings
|
2022-08-13 09:49:43 +00:00
|
|
|
from moto.core import DEFAULT_ACCOUNT_ID as ACCOUNT_ID
|
2021-08-16 14:13:50 +00:00
|
|
|
|
|
|
|
|
|
|
|
@mock_ec2
|
|
|
|
def test_create():
|
|
|
|
ec2 = boto3.client("ec2", region_name="us-west-1")
|
|
|
|
prefix_list = ec2.create_managed_prefix_list(
|
|
|
|
PrefixListName="examplelist", MaxEntries=2, AddressFamily="?"
|
|
|
|
)["PrefixList"]
|
2023-07-17 09:31:05 +00:00
|
|
|
assert prefix_list["PrefixListId"].startswith("pl-")
|
|
|
|
assert prefix_list["AddressFamily"] == "?"
|
|
|
|
assert prefix_list["State"] == "create-complete"
|
|
|
|
assert (
|
|
|
|
prefix_list["PrefixListArn"]
|
|
|
|
== f"arn:aws:ec2:us-west-1:{ACCOUNT_ID}:prefix-list/{prefix_list['PrefixListId']}"
|
2021-08-16 14:13:50 +00:00
|
|
|
)
|
2023-07-17 09:31:05 +00:00
|
|
|
assert prefix_list["PrefixListName"] == "examplelist"
|
|
|
|
assert prefix_list["MaxEntries"] == 2
|
|
|
|
assert prefix_list["Version"] == 1
|
|
|
|
assert prefix_list["Tags"] == []
|
|
|
|
assert prefix_list["OwnerId"] == ACCOUNT_ID
|
2021-08-16 14:13:50 +00:00
|
|
|
|
|
|
|
|
|
|
|
@mock_ec2
|
|
|
|
def test_create_with_tags():
|
|
|
|
ec2 = boto3.client("ec2", region_name="us-west-1")
|
|
|
|
prefix_list = ec2.create_managed_prefix_list(
|
|
|
|
PrefixListName="examplelist",
|
|
|
|
MaxEntries=2,
|
|
|
|
AddressFamily="?",
|
|
|
|
TagSpecifications=[
|
2023-02-16 21:43:43 +00:00
|
|
|
{"ResourceType": "prefix-list", "Tags": [{"Key": "key1", "Value": "val1"}]}
|
2021-08-16 14:13:50 +00:00
|
|
|
],
|
|
|
|
)["PrefixList"]
|
2023-07-17 09:31:05 +00:00
|
|
|
assert prefix_list["PrefixListId"].startswith("pl-")
|
|
|
|
assert prefix_list["State"] == "create-complete"
|
|
|
|
assert prefix_list["Version"] == 1
|
|
|
|
assert prefix_list["Tags"] == [{"Key": "key1", "Value": "val1"}]
|
2021-08-16 14:13:50 +00:00
|
|
|
|
|
|
|
|
|
|
|
@mock_ec2
|
|
|
|
def test_describe_managed_prefix_lists():
|
|
|
|
ec2 = boto3.client("ec2", region_name="us-west-1")
|
|
|
|
|
2021-10-05 17:11:07 +00:00
|
|
|
prefix_list = ec2.create_managed_prefix_list(
|
2021-08-16 14:13:50 +00:00
|
|
|
PrefixListName="examplelist", MaxEntries=2, AddressFamily="?"
|
|
|
|
)
|
2021-10-05 17:11:07 +00:00
|
|
|
pl_id = prefix_list["PrefixList"]["PrefixListId"]
|
2021-08-16 14:13:50 +00:00
|
|
|
|
|
|
|
all_lists = ec2.describe_managed_prefix_lists()["PrefixLists"]
|
2023-07-17 09:31:05 +00:00
|
|
|
assert pl_id in [pl["PrefixListId"] for pl in all_lists]
|
|
|
|
assert set([pl["OwnerId"] for pl in all_lists]) == {"aws", ACCOUNT_ID}
|
2021-08-16 14:13:50 +00:00
|
|
|
|
|
|
|
|
|
|
|
@mock_ec2
|
|
|
|
def test_describe_managed_prefix_lists_with_prefix():
|
|
|
|
ec2 = boto3.client("ec2", region_name="us-west-1")
|
|
|
|
|
|
|
|
default_lists = ec2.describe_managed_prefix_lists()["PrefixLists"]
|
2021-10-05 17:11:07 +00:00
|
|
|
if not settings.TEST_SERVER_MODE:
|
|
|
|
# ServerMode is not guaranteed to only have AWS prefix lists
|
2023-07-17 09:31:05 +00:00
|
|
|
assert set([pl["OwnerId"] for pl in default_lists]) == {"aws"}
|
2021-08-16 14:13:50 +00:00
|
|
|
|
|
|
|
random_list_id = default_lists[0]["PrefixListId"]
|
|
|
|
|
|
|
|
lists_by_id = ec2.describe_managed_prefix_lists(PrefixListIds=[random_list_id])[
|
|
|
|
"PrefixLists"
|
|
|
|
]
|
2023-07-17 09:31:05 +00:00
|
|
|
assert len(lists_by_id) == 1
|
2021-10-05 17:11:07 +00:00
|
|
|
if not settings.TEST_SERVER_MODE:
|
2023-07-17 09:31:05 +00:00
|
|
|
assert lists_by_id[0]["OwnerId"] == "aws"
|
2021-08-16 14:13:50 +00:00
|
|
|
|
|
|
|
|
2022-01-13 12:41:01 +00:00
|
|
|
@mock_ec2
|
|
|
|
def test_describe_managed_prefix_lists_with_tags():
|
|
|
|
ec2 = boto3.client("ec2", region_name="us-west-1")
|
|
|
|
|
|
|
|
untagged_prefix_list = ec2.create_managed_prefix_list(
|
|
|
|
PrefixListName="examplelist", MaxEntries=2, AddressFamily="?"
|
|
|
|
)
|
|
|
|
untagged_pl_id = untagged_prefix_list["PrefixList"]["PrefixListId"]
|
|
|
|
tagged_prefix_list = ec2.create_managed_prefix_list(
|
|
|
|
PrefixListName="examplelist",
|
|
|
|
MaxEntries=2,
|
|
|
|
AddressFamily="?",
|
|
|
|
TagSpecifications=[
|
|
|
|
{"ResourceType": "prefix-list", "Tags": [{"Key": "key", "Value": "value"}]}
|
|
|
|
],
|
|
|
|
)
|
|
|
|
tagged_pl_id = tagged_prefix_list["PrefixList"]["PrefixListId"]
|
|
|
|
|
|
|
|
tagged_lists = ec2.describe_managed_prefix_lists(
|
|
|
|
Filters=[{"Name": "tag:key", "Values": ["value"]}]
|
|
|
|
)["PrefixLists"]
|
2023-07-17 09:31:05 +00:00
|
|
|
assert tagged_pl_id in [pl["PrefixListId"] for pl in tagged_lists]
|
2022-01-13 12:41:01 +00:00
|
|
|
[pl["PrefixListId"] for pl in tagged_lists].should_not.contain(untagged_pl_id)
|
|
|
|
|
|
|
|
|
2021-08-16 14:13:50 +00:00
|
|
|
@mock_ec2
|
|
|
|
def test_get_managed_prefix_list_entries():
|
|
|
|
ec2 = boto3.client("ec2", region_name="us-west-1")
|
|
|
|
resp = ec2.create_managed_prefix_list(
|
|
|
|
PrefixListName="examplelist",
|
|
|
|
MaxEntries=2,
|
|
|
|
AddressFamily="?",
|
|
|
|
Entries=[
|
|
|
|
{"Cidr": "10.0.0.1", "Description": "entry1"},
|
|
|
|
{"Cidr": "10.0.0.2", "Description": "entry2"},
|
|
|
|
],
|
|
|
|
)
|
|
|
|
ec2.create_managed_prefix_list(
|
|
|
|
PrefixListName="examplelist2",
|
|
|
|
MaxEntries=2,
|
|
|
|
AddressFamily="?",
|
|
|
|
Entries=[
|
|
|
|
{"Cidr": "10.0.0.3", "Description": "entry3"},
|
|
|
|
{"Cidr": "10.0.0.4", "Description": "entry4"},
|
|
|
|
],
|
|
|
|
)
|
|
|
|
prefix_list_id = resp["PrefixList"]["PrefixListId"]
|
|
|
|
|
|
|
|
entries = ec2.get_managed_prefix_list_entries(PrefixListId=prefix_list_id)[
|
|
|
|
"Entries"
|
|
|
|
]
|
2023-07-17 09:31:05 +00:00
|
|
|
assert len(entries) == 2
|
|
|
|
assert {"Cidr": "10.0.0.1", "Description": "entry1"} in entries
|
|
|
|
assert {"Cidr": "10.0.0.2", "Description": "entry2"} in entries
|
2021-08-16 14:13:50 +00:00
|
|
|
|
|
|
|
|
|
|
|
@mock_ec2
|
|
|
|
def test_get_managed_prefix_list_entries_0_entries():
|
|
|
|
ec2 = boto3.client("ec2", region_name="us-west-1")
|
|
|
|
resp = ec2.create_managed_prefix_list(
|
|
|
|
PrefixListName="examplelist", MaxEntries=2, AddressFamily="?"
|
|
|
|
)
|
|
|
|
prefix_list_id = resp["PrefixList"]["PrefixListId"]
|
|
|
|
|
|
|
|
entries = ec2.get_managed_prefix_list_entries(PrefixListId=prefix_list_id)[
|
|
|
|
"Entries"
|
|
|
|
]
|
2023-07-17 09:31:05 +00:00
|
|
|
assert entries == []
|
2021-08-16 14:13:50 +00:00
|
|
|
|
|
|
|
|
|
|
|
@mock_ec2
|
|
|
|
def test_delete_managed_prefix_list():
|
|
|
|
ec2 = boto3.client("ec2", region_name="us-west-1")
|
|
|
|
id1 = ec2.create_managed_prefix_list(
|
|
|
|
PrefixListName="examplelist1", MaxEntries=2, AddressFamily="?"
|
|
|
|
)["PrefixList"]["PrefixListId"]
|
|
|
|
id2 = ec2.create_managed_prefix_list(
|
|
|
|
PrefixListName="examplelist2", MaxEntries=2, AddressFamily="?"
|
|
|
|
)["PrefixList"]["PrefixListId"]
|
|
|
|
|
|
|
|
lists_by_id = ec2.describe_managed_prefix_lists(PrefixListIds=[id1, id2])[
|
|
|
|
"PrefixLists"
|
|
|
|
]
|
2023-07-17 09:31:05 +00:00
|
|
|
assert len(lists_by_id) == 2
|
2021-08-16 14:13:50 +00:00
|
|
|
|
|
|
|
ec2.delete_managed_prefix_list(PrefixListId=id1)
|
|
|
|
|
|
|
|
lists_by_id = ec2.describe_managed_prefix_lists(PrefixListIds=[id1, id2])[
|
|
|
|
"PrefixLists"
|
|
|
|
]
|
2023-07-17 09:31:05 +00:00
|
|
|
assert len(lists_by_id) == 2
|
2021-08-16 14:13:50 +00:00
|
|
|
|
2023-07-17 09:31:05 +00:00
|
|
|
assert set([pl["State"] for pl in lists_by_id]) == {
|
|
|
|
"create-complete",
|
|
|
|
"delete-complete",
|
|
|
|
}
|
2021-08-16 14:13:50 +00:00
|
|
|
|
|
|
|
|
|
|
|
@mock_ec2
|
|
|
|
def test_describe_prefix_lists():
|
|
|
|
ec2 = boto3.client("ec2", region_name="us-west-1")
|
|
|
|
|
|
|
|
default_lists = ec2.describe_prefix_lists()["PrefixLists"]
|
2023-07-17 09:31:05 +00:00
|
|
|
assert len(default_lists) == 2
|
2021-08-16 14:13:50 +00:00
|
|
|
|
|
|
|
ec2.create_managed_prefix_list(
|
|
|
|
PrefixListName="examplelist", MaxEntries=2, AddressFamily="?"
|
|
|
|
)
|
|
|
|
|
|
|
|
all_lists = ec2.describe_prefix_lists()["PrefixLists"]
|
2023-07-17 09:31:05 +00:00
|
|
|
assert len(all_lists) == 2
|
2022-04-27 11:58:59 +00:00
|
|
|
for pl in all_lists:
|
2023-07-17 09:31:05 +00:00
|
|
|
assert "com.amazonaws" in pl["PrefixListName"]
|
2021-08-16 14:13:50 +00:00
|
|
|
|
|
|
|
|
|
|
|
@mock_ec2
|
|
|
|
def test_modify_manage_prefix_list():
|
|
|
|
ec2 = boto3.client("ec2", region_name="us-west-1")
|
|
|
|
|
|
|
|
resp = ec2.create_managed_prefix_list(
|
|
|
|
PrefixListName="examplelist",
|
|
|
|
MaxEntries=2,
|
|
|
|
AddressFamily="?",
|
|
|
|
Entries=[
|
|
|
|
{"Cidr": "10.0.0.1", "Description": "entry1"},
|
|
|
|
{"Cidr": "10.0.0.2", "Description": "entry2"},
|
|
|
|
],
|
|
|
|
)
|
|
|
|
prefix_list_id = resp["PrefixList"]["PrefixListId"]
|
|
|
|
|
|
|
|
prefix_list = ec2.modify_managed_prefix_list(
|
|
|
|
PrefixListId=prefix_list_id,
|
|
|
|
AddEntries=[{"Cidr": "10.0.0.3", "Description": "entry3"}],
|
|
|
|
RemoveEntries=[{"Cidr": "10.0.0.2"}],
|
|
|
|
)["PrefixList"]
|
2023-07-17 09:31:05 +00:00
|
|
|
assert prefix_list["PrefixListId"] == prefix_list_id
|
|
|
|
assert prefix_list["State"] == "modify-complete"
|
|
|
|
assert prefix_list["Version"] == 2
|
2021-08-16 14:13:50 +00:00
|
|
|
|
|
|
|
described = ec2.describe_managed_prefix_lists(PrefixListIds=[prefix_list_id])[
|
|
|
|
"PrefixLists"
|
|
|
|
][0]
|
2023-07-17 09:31:05 +00:00
|
|
|
assert described == prefix_list
|
2021-08-16 14:13:50 +00:00
|
|
|
|
|
|
|
entries = ec2.get_managed_prefix_list_entries(PrefixListId=prefix_list_id)[
|
|
|
|
"Entries"
|
|
|
|
]
|
2023-07-17 09:31:05 +00:00
|
|
|
assert len(entries) == 2
|
|
|
|
assert {"Cidr": "10.0.0.1", "Description": "entry1"} in entries
|
|
|
|
assert {"Cidr": "10.0.0.3", "Description": "entry3"} in entries
|
2021-08-16 14:13:50 +00:00
|
|
|
|
2023-07-17 09:31:05 +00:00
|
|
|
assert {"Cidr": "10.0.0.2", "Description": "entry2"} not in entries
|
2021-08-16 14:13:50 +00:00
|
|
|
|
|
|
|
|
|
|
|
@mock_ec2
|
|
|
|
def test_modify_manage_prefix_list_add_to_empty_list():
|
|
|
|
ec2 = boto3.client("ec2", region_name="us-west-1")
|
|
|
|
|
|
|
|
resp = ec2.create_managed_prefix_list(
|
|
|
|
PrefixListName="examplelist", MaxEntries=2, AddressFamily="?"
|
|
|
|
)
|
|
|
|
prefix_list_id = resp["PrefixList"]["PrefixListId"]
|
|
|
|
|
|
|
|
prefix_list = ec2.modify_managed_prefix_list(
|
|
|
|
PrefixListId=prefix_list_id,
|
|
|
|
AddEntries=[{"Cidr": "10.0.0.3", "Description": "entry3"}],
|
|
|
|
RemoveEntries=[{"Cidr": "10.0.0.2"}],
|
|
|
|
)["PrefixList"]
|
2023-07-17 09:31:05 +00:00
|
|
|
assert prefix_list["PrefixListId"] == prefix_list_id
|
|
|
|
assert prefix_list["State"] == "modify-complete"
|
|
|
|
assert prefix_list["Version"] == 2
|
2021-08-16 14:13:50 +00:00
|
|
|
|
|
|
|
described = ec2.describe_managed_prefix_lists(PrefixListIds=[prefix_list_id])[
|
|
|
|
"PrefixLists"
|
|
|
|
][0]
|
2023-07-17 09:31:05 +00:00
|
|
|
assert described == prefix_list
|
2021-08-16 14:13:50 +00:00
|
|
|
|
|
|
|
entries = ec2.get_managed_prefix_list_entries(PrefixListId=prefix_list_id)[
|
|
|
|
"Entries"
|
|
|
|
]
|
2023-07-17 09:31:05 +00:00
|
|
|
assert len(entries) == 1
|
|
|
|
assert {"Cidr": "10.0.0.3", "Description": "entry3"} in entries
|
2021-08-16 14:13:50 +00:00
|
|
|
|
2023-07-17 09:31:05 +00:00
|
|
|
assert {"Cidr": "10.0.0.2", "Description": "entry2"} not in entries
|
2021-08-16 14:13:50 +00:00
|
|
|
|
|
|
|
|
|
|
|
@mock_ec2
|
|
|
|
def test_modify_manage_prefix_list_name_only():
|
|
|
|
ec2 = boto3.client("ec2", region_name="us-west-1")
|
|
|
|
|
|
|
|
resp = ec2.create_managed_prefix_list(
|
|
|
|
PrefixListName="examplelist", MaxEntries=2, AddressFamily="?"
|
|
|
|
)
|
|
|
|
prefix_list_id = resp["PrefixList"]["PrefixListId"]
|
|
|
|
|
|
|
|
prefix_list = ec2.modify_managed_prefix_list(
|
|
|
|
PrefixListId=prefix_list_id, PrefixListName="new name"
|
|
|
|
)["PrefixList"]
|
2023-07-17 09:31:05 +00:00
|
|
|
assert prefix_list["PrefixListId"] == prefix_list_id
|
|
|
|
assert prefix_list["PrefixListName"] == "new name"
|
|
|
|
assert prefix_list["State"] == "modify-complete"
|
|
|
|
assert prefix_list["Version"] == 1
|
2021-08-16 14:13:50 +00:00
|
|
|
|
|
|
|
described = ec2.describe_managed_prefix_lists(PrefixListIds=[prefix_list_id])[
|
|
|
|
"PrefixLists"
|
|
|
|
][0]
|
2023-07-17 09:31:05 +00:00
|
|
|
assert described == prefix_list
|
2021-08-16 14:13:50 +00:00
|
|
|
|
|
|
|
|
|
|
|
@mock_ec2
|
|
|
|
def test_modify_manage_prefix_list_specifying_version():
|
|
|
|
ec2 = boto3.client("ec2", region_name="us-west-1")
|
|
|
|
|
|
|
|
resp = ec2.create_managed_prefix_list(
|
|
|
|
PrefixListName="examplelist",
|
|
|
|
MaxEntries=2,
|
|
|
|
AddressFamily="?",
|
|
|
|
Entries=[
|
|
|
|
{"Cidr": "10.0.0.1", "Description": "entry1"},
|
|
|
|
{"Cidr": "10.0.0.2", "Description": "entry2"},
|
|
|
|
],
|
|
|
|
)
|
|
|
|
prefix_list_id = resp["PrefixList"]["PrefixListId"]
|
|
|
|
|
|
|
|
prefix_list = ec2.modify_managed_prefix_list(
|
|
|
|
PrefixListId=prefix_list_id,
|
|
|
|
AddEntries=[{"Cidr": "10.0.0.3", "Description": "entry3"}],
|
|
|
|
RemoveEntries=[{"Cidr": "10.0.0.2"}],
|
|
|
|
)["PrefixList"]
|
2023-07-17 09:31:05 +00:00
|
|
|
assert prefix_list["Version"] == 2
|
2021-08-16 14:13:50 +00:00
|
|
|
|
|
|
|
prefix_list = ec2.modify_managed_prefix_list(
|
|
|
|
PrefixListId=prefix_list_id,
|
|
|
|
CurrentVersion=2,
|
|
|
|
RemoveEntries=[{"Cidr": "10.0.0.1"}],
|
|
|
|
)["PrefixList"]
|
2023-07-17 09:31:05 +00:00
|
|
|
assert prefix_list["Version"] == 3
|
2021-08-16 14:13:50 +00:00
|
|
|
|
|
|
|
described = ec2.describe_managed_prefix_lists(PrefixListIds=[prefix_list_id])[
|
|
|
|
"PrefixLists"
|
|
|
|
][0]
|
2023-07-17 09:31:05 +00:00
|
|
|
assert described == prefix_list
|
2021-08-16 14:13:50 +00:00
|
|
|
|
|
|
|
entries = ec2.get_managed_prefix_list_entries(PrefixListId=prefix_list_id)[
|
|
|
|
"Entries"
|
|
|
|
]
|
2023-07-17 09:31:05 +00:00
|
|
|
assert len(entries) == 1
|
|
|
|
assert {"Cidr": "10.0.0.3", "Description": "entry3"} in entries
|