mirror of
https://github.com/opentofu/opentofu.git
synced 2025-02-25 18:45:20 -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 {
|
if v, ok := m["error_caching_min_ttl"]; ok {
|
||||||
er.ErrorCachingMinTTL = aws.Int64(int64(v.(int)))
|
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)))
|
er.ResponseCode = aws.String(strconv.Itoa(v.(int)))
|
||||||
|
} else {
|
||||||
|
er.ResponseCode = aws.String("")
|
||||||
}
|
}
|
||||||
if v, ok := m["response_page_path"]; ok {
|
if v, ok := m["response_page_path"]; ok {
|
||||||
er.ResponsePagePath = aws.String(v.(string))
|
er.ResponsePagePath = aws.String(v.(string))
|
||||||
}
|
}
|
||||||
|
|
||||||
return &er
|
return &er
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -191,6 +191,13 @@ func customErrorResponsesConfFirst() map[string]interface{} {
|
|||||||
return customErrorResponsesConf()[0].(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{} {
|
func viewerCertificateConfSetCloudFrontDefault() map[string]interface{} {
|
||||||
return map[string]interface{}{
|
return map[string]interface{}{
|
||||||
"acm_certificate_arn": "",
|
"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) {
|
func TestCloudFrontStructure_flattenCustomErrorResponse(t *testing.T) {
|
||||||
in := customErrorResponsesConfFirst()
|
in := customErrorResponsesConfFirst()
|
||||||
er := expandCustomErrorResponse(in)
|
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 {
|
func testAccCheckCloudFrontDistributionDestroy(s *terraform.State) error {
|
||||||
for k, rs := range s.RootModule().Resources {
|
for k, rs := range s.RootModule().Resources {
|
||||||
if rs.Type != "aws_cloudfront_distribution" {
|
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())
|
`, 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(`
|
var testAccAWSCloudFrontDistributionNoOptionalItemsConfig = fmt.Sprintf(`
|
||||||
variable rand_id {
|
variable rand_id {
|
||||||
default = %d
|
default = %d
|
||||||
|
Loading…
Reference in New Issue
Block a user