import pytest from aws_lambda_powertools.utilities.parser import parse from update_waf_ipsets.models.payload import LambdaPayload @pytest.fixture() def invalid_payload(): return { "account_id": "123456789012", "role_name": "test-role", "external_id": "some-id", "s3_bucket": "test-s3-bucket", "s3_key": "path/to/file.txt", "ip_sets": [ { "name": "invalid-waf-ipset", "region": "us-west-2", "scope": "INVALID_SCOPE", } ], } @pytest.fixture() def valid_payload(): return { "account_id": "123456789012", "role_name": "test-role", "external_id": "some-id", "s3_bucket": "test-s3-bucket", "s3_key": "path/to/file.txt", "ip_sets": [ { "name": "valid-waf-ipset", "region": "us-east-2", "scope": "REGIONAL", } ], } def test_invalid_payload(invalid_payload): with pytest.raises(ValueError) as exc_info: _ = parse(model=LambdaPayload, event=invalid_payload) assert "validation error" in str(exc_info.value) def test_valid_payload(valid_payload): parsed_event: LambdaPayload = parse(model=LambdaPayload, event=valid_payload) assert parsed_event.ip_sets[0].name == "valid-waf-ipset"