1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
import unittest
import pytest
import moto.server as server
from moto import mock_aws, settings
from moto.core import DEFAULT_ACCOUNT_ID as ACCOUNT_ID
from .test_helper_functions import CREATE_WEB_ACL_BODY
CREATE_WEB_ACL_HEADERS = {
"X-Amz-Target": "AWSWAF_20190729.CreateWebACL",
"Content-Type": "application/json",
}
LIST_WEB_ACL_HEADERS = {
"X-Amz-Target": "AWSWAF_20190729.ListWebACLs",
"Content-Type": "application/json",
}
@pytest.fixture(scope="function", autouse=True)
def skip_in_server_mode():
if settings.TEST_SERVER_MODE:
raise unittest.SkipTest("No point testing this in ServerMode")
@mock_aws
def test_create_web_acl():
backend = server.create_backend_app("wafv2")
test_client = backend.test_client()
res = test_client.post(
"/",
headers=CREATE_WEB_ACL_HEADERS,
json=CREATE_WEB_ACL_BODY("John", "REGIONAL"),
)
assert res.status_code == 200
web_acl = res.json["Summary"]
assert web_acl.get("Name") == "John"
assert web_acl.get("ARN").startswith(
f"arn:aws:wafv2:us-east-1:{ACCOUNT_ID}:regional/webacl/John/"
)
# Duplicate name - should raise error
res = test_client.post(
"/",
headers=CREATE_WEB_ACL_HEADERS,
json=CREATE_WEB_ACL_BODY("John", "REGIONAL"),
)
assert res.status_code == 400
assert (
b"AWS WAF could not perform the operation because some resource "
b"in your request is a duplicate of an existing one."
) in res.data
assert b"WafV2DuplicateItem" in res.data
res = test_client.post(
"/",
headers=CREATE_WEB_ACL_HEADERS,
json=CREATE_WEB_ACL_BODY("Carl", "CLOUDFRONT"),
)
web_acl = res.json["Summary"]
assert web_acl.get("ARN").startswith(
f"arn:aws:wafv2:us-east-1:{ACCOUNT_ID}:global/webacl/Carl/"
)
@mock_aws
def test_list_web_ac_ls():
backend = server.create_backend_app("wafv2")
test_client = backend.test_client()
test_client.post(
"/",
headers=CREATE_WEB_ACL_HEADERS,
json=CREATE_WEB_ACL_BODY("John", "REGIONAL"),
)
test_client.post(
"/",
headers=CREATE_WEB_ACL_HEADERS,
json=CREATE_WEB_ACL_BODY("JohnSon", "REGIONAL"),
)
test_client.post(
"/",
headers=CREATE_WEB_ACL_HEADERS,
json=CREATE_WEB_ACL_BODY("Sarah", "CLOUDFRONT"),
)
res = test_client.post(
"/", headers=LIST_WEB_ACL_HEADERS, json={"Scope": "REGIONAL"}
)
assert res.status_code == 200
web_acls = res.json["WebACLs"]
assert len(web_acls) == 2
assert web_acls[0]["Name"] == "John"
assert web_acls[1]["Name"] == "JohnSon"
res = test_client.post(
"/", headers=LIST_WEB_ACL_HEADERS, json={"Scope": "CLOUDFRONT"}
)
assert res.status_code == 200
web_acls = res.json["WebACLs"]
assert len(web_acls) == 1
assert web_acls[0]["Name"] == "Sarah"
|