mirror of
https://github.com/opentofu/opentofu.git
synced 2025-01-24 23:46:26 -06:00
provider/aws - CloudFront custom_error_response fixes for missing (#6382)
* provider/aws - CloudFront custom_error_response fixes for missing - Omit custom_error_response response_* fields when not explicitly set via config for SDK call - Adding a test case to ensure that the response_error gets converted to an empty string properly, versus "0". (Thanks @vancluever) Fixes #6342 * - Fixing ACC test case resource names
This commit is contained in:
parent
63514d28e7
commit
495c4b3dbc
@ -719,12 +719,15 @@ func expandCustomErrorResponse(m map[string]interface{}) *cloudfront.CustomError
|
||||
if v, ok := m["error_caching_min_ttl"]; ok {
|
||||
er.ErrorCachingMinTTL = aws.Int64(int64(v.(int)))
|
||||
}
|
||||
if v, ok := m["response_code"]; ok {
|
||||
if v, ok := m["response_code"]; ok && v.(int) != 0 {
|
||||
er.ResponseCode = aws.String(strconv.Itoa(v.(int)))
|
||||
} else {
|
||||
er.ResponseCode = aws.String("")
|
||||
}
|
||||
if v, ok := m["response_page_path"]; ok {
|
||||
er.ResponsePagePath = aws.String(v.(string))
|
||||
}
|
||||
|
||||
return &er
|
||||
}
|
||||
|
||||
|
@ -191,6 +191,13 @@ func customErrorResponsesConfFirst() map[string]interface{} {
|
||||
return customErrorResponsesConf()[0].(map[string]interface{})
|
||||
}
|
||||
|
||||
func customErrorResponseConfNoResponseCode() map[string]interface{} {
|
||||
er := customErrorResponsesConf()[0].(map[string]interface{})
|
||||
er["response_code"] = 0
|
||||
er["response_page_path"] = ""
|
||||
return er
|
||||
}
|
||||
|
||||
func viewerCertificateConfSetCloudFrontDefault() map[string]interface{} {
|
||||
return map[string]interface{}{
|
||||
"acm_certificate_arn": "",
|
||||
@ -759,6 +766,17 @@ func TestCloudFrontStructure_expandCustomErrorResponse(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestCloudFrontStructure_expandCustomErrorResponse_emptyResponseCode(t *testing.T) {
|
||||
data := customErrorResponseConfNoResponseCode()
|
||||
er := expandCustomErrorResponse(data)
|
||||
if *er.ResponseCode != "" {
|
||||
t.Fatalf("Expected ResponseCode to be empty string, got %v", *er.ResponseCode)
|
||||
}
|
||||
if *er.ResponsePagePath != "" {
|
||||
t.Fatalf("Expected ResponsePagePath to be empty string, got %v", *er.ResponsePagePath)
|
||||
}
|
||||
}
|
||||
|
||||
func TestCloudFrontStructure_flattenCustomErrorResponse(t *testing.T) {
|
||||
in := customErrorResponsesConfFirst()
|
||||
er := expandCustomErrorResponse(in)
|
||||
|
@ -105,6 +105,24 @@ func TestAccAWSCloudFrontDistribution_noOptionalItemsConfig(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
func TestAccAWSCloudFrontDistribution_noCustomErrorResponseConfig(t *testing.T) {
|
||||
resource.Test(t, resource.TestCase{
|
||||
PreCheck: func() { testAccPreCheck(t) },
|
||||
Providers: testAccProviders,
|
||||
CheckDestroy: testAccCheckCloudFrontDistributionDestroy,
|
||||
Steps: []resource.TestStep{
|
||||
resource.TestStep{
|
||||
Config: testAccAWSCloudFrontDistributionNoCustomErroResponseInfo,
|
||||
Check: resource.ComposeTestCheckFunc(
|
||||
testAccCheckCloudFrontDistributionExistence(
|
||||
"aws_cloudfront_distribution.no_custom_error_responses",
|
||||
),
|
||||
),
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func testAccCheckCloudFrontDistributionDestroy(s *terraform.State) error {
|
||||
for k, rs := range s.RootModule().Resources {
|
||||
if rs.Type != "aws_cloudfront_distribution" {
|
||||
@ -373,6 +391,57 @@ resource "aws_cloudfront_distribution" "multi_origin_distribution" {
|
||||
}
|
||||
`, rand.New(rand.NewSource(time.Now().UnixNano())).Int(), testAccAWSCloudFrontDistributionRetainConfig())
|
||||
|
||||
var testAccAWSCloudFrontDistributionNoCustomErroResponseInfo = fmt.Sprintf(`
|
||||
variable rand_id {
|
||||
default = %d
|
||||
}
|
||||
|
||||
resource "aws_cloudfront_distribution" "no_custom_error_responses" {
|
||||
origin {
|
||||
domain_name = "www.example.com"
|
||||
origin_id = "myCustomOrigin"
|
||||
custom_origin_config {
|
||||
http_port = 80
|
||||
https_port = 443
|
||||
origin_protocol_policy = "http-only"
|
||||
origin_ssl_protocols = [ "SSLv3", "TLSv1" ]
|
||||
}
|
||||
}
|
||||
enabled = true
|
||||
comment = "Some comment"
|
||||
default_cache_behavior {
|
||||
allowed_methods = [ "DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT" ]
|
||||
cached_methods = [ "GET", "HEAD" ]
|
||||
target_origin_id = "myCustomOrigin"
|
||||
smooth_streaming = false
|
||||
forwarded_values {
|
||||
query_string = false
|
||||
cookies {
|
||||
forward = "all"
|
||||
}
|
||||
}
|
||||
viewer_protocol_policy = "allow-all"
|
||||
min_ttl = 0
|
||||
default_ttl = 3600
|
||||
max_ttl = 86400
|
||||
}
|
||||
custom_error_response {
|
||||
error_code = 404
|
||||
error_caching_min_ttl = 30
|
||||
}
|
||||
restrictions {
|
||||
geo_restriction {
|
||||
restriction_type = "whitelist"
|
||||
locations = [ "US", "CA", "GB", "DE" ]
|
||||
}
|
||||
}
|
||||
viewer_certificate {
|
||||
cloudfront_default_certificate = true
|
||||
}
|
||||
%s
|
||||
}
|
||||
`, rand.New(rand.NewSource(time.Now().UnixNano())).Int(), testAccAWSCloudFrontDistributionRetainConfig())
|
||||
|
||||
var testAccAWSCloudFrontDistributionNoOptionalItemsConfig = fmt.Sprintf(`
|
||||
variable rand_id {
|
||||
default = %d
|
||||
|
Loading…
Reference in New Issue
Block a user