| """Tests for CloudFront CSP / response headers helpers.""" |
|
|
| import sys |
| from pathlib import Path |
|
|
| CDK_DIR = Path(__file__).resolve().parents[1] |
| sys.path.insert(0, str(CDK_DIR)) |
|
|
| from cdk_cloudfront_headers import ( |
| build_content_security_policy, |
| cognito_hosted_ui_base_url, |
| normalize_https_origin, |
| resolve_cloudfront_csp_urls, |
| ) |
|
|
|
|
| def test_normalize_https_origin(): |
| assert ( |
| normalize_https_origin("d111.cloudfront.net") == "https://d111.cloudfront.net" |
| ) |
| assert normalize_https_origin("https://redaction.example.com/") == ( |
| "https://redaction.example.com" |
| ) |
|
|
|
|
| def test_build_content_security_policy_substitutes_hosts(): |
| csp = build_content_security_policy( |
| app_origin="https://d111.cloudfront.net", |
| cognito_login_url="https://my-prefix.auth.eu-west-2.amazoncognito.com", |
| ) |
| assert "wss://d111.cloudfront.net" in csp |
| assert "https://my-prefix.auth.eu-west-2.amazoncognito.com" in csp |
| assert "cdnjs.cloudflare.com" in csp |
|
|
|
|
| def test_resolve_cloudfront_csp_urls_prefers_cognito_redirection(): |
| app_origin, login = resolve_cloudfront_csp_urls( |
| cognito_redirection_url="https://redaction.example.com", |
| cloudfront_domain="d111.cloudfront.net", |
| cognito_user_pool_domain_prefix="my-prefix", |
| aws_region="eu-west-2", |
| ) |
| assert app_origin == "https://redaction.example.com" |
| assert login == "https://my-prefix.auth.eu-west-2.amazoncognito.com" |
|
|
|
|
| def test_resolve_cloudfront_csp_urls_login_override(): |
| _, login = resolve_cloudfront_csp_urls( |
| cognito_redirection_url="https://app.example.com", |
| cloudfront_domain="d111.cloudfront.net", |
| cognito_user_pool_domain_prefix="my-prefix", |
| aws_region="eu-west-2", |
| cognito_user_pool_login_url="https://custom-login.example.com", |
| ) |
| assert login == "https://custom-login.example.com" |
|
|
|
|
| def test_cognito_hosted_ui_base_url(): |
| assert cognito_hosted_ui_base_url("redaction-123", "eu-west-1") == ( |
| "https://redaction-123.auth.eu-west-1.amazoncognito.com" |
| ) |
|
|