Skip to content

Commit

Permalink
Allow underscore in redirects but not certificates (HTTP only) (#339)
Browse files Browse the repository at this point in the history
  • Loading branch information
fformica authored Feb 6, 2025
1 parent fde10b7 commit b7986ca
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 2 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 2.5.1 (February 5, 2025)
ENHANCEMENTS
* Allow underscore for non-HTTPS redirects

## 2.5.0 (December 13, 2024)
ENHANCEMENTS
* Adds support for alert endpoints
Expand Down
2 changes: 1 addition & 1 deletion ns1/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import (
)

var (
clientVersion = "2.5.0"
clientVersion = "2.5.1"
providerUserAgent = "tf-ns1" + "/" + clientVersion
defaultRetryMax = 3
)
Expand Down
2 changes: 1 addition & 1 deletion ns1/resource_redirect.go
Original file line number Diff line number Diff line change
Expand Up @@ -338,7 +338,7 @@ func RedirectCertUpdate(d *schema.ResourceData, meta interface{}) error {
func validateDomain(val interface{}, key string) (warns []string, errs []error) {
v := val.(string)

match, err := regexp.MatchString("^(\\*\\.)?([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z0-9-]{0,62}[a-zA-Z0-9]$", v)
match, err := regexp.MatchString("^(\\*\\.)?([a-zA-Z0-9-_]{1,63}\\.)+[a-zA-Z0-9-]{0,62}[a-zA-Z0-9]$", v)
if err != nil {
errs = append(errs, fmt.Errorf("%s is invalid, got: %s, error: %e", key, v, err))
}
Expand Down
43 changes: 43 additions & 0 deletions ns1/resource_redirect_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,31 @@ func TestAccRedirectConfig_https_to_http(t *testing.T) {
})
}

func TestAccRedirectConfig_with_underscore(t *testing.T) {
var redirect redirect.Configuration
rString := acctest.RandStringFromCharSet(15, acctest.CharSetAlphaNum)
domainName := fmt.Sprintf("terraform-test-%s.io", rString)

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t); testAccRedirectPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckRedirectDestroy,
Steps: []resource.TestStep{
{
Config: testAccRedirectHTTPWithUnderscore(rString),
Check: resource.ComposeTestCheckFunc(
testAccCheckRedirectConfigExists("ns1_redirect.it", &redirect),
testAccCheckRedirectConfigDomain(&redirect, "test_with_underscore."+domainName),
testAccCheckRedirectConfigFwType(&redirect, "permanent"),
testAccCheckRedirectConfigTags(&redirect, []string{}),
testAccCheckRedirectConfigHTTPS(&redirect, false),
testAccCheckRedirectConfigCertIdPresent(&redirect, false),
),
},
},
})
}

func TestAccRedirectConfig_remoteChanges(t *testing.T) {
var redirect redirect.Configuration
rString := acctest.RandStringFromCharSet(15, acctest.CharSetAlphaNum)
Expand Down Expand Up @@ -273,6 +298,24 @@ resource "ns1_zone" "test" {
`, rString)
}

func testAccRedirectHTTPWithUnderscore(rString string) string {
return fmt.Sprintf(`
resource "ns1_redirect" "it" {
domain = "test_with_underscore.${ns1_zone.test.zone}"
path = "/from/path/*"
target = "https://url.com/target/path"
forwarding_mode = "all"
forwarding_type = "permanent"
https_forced = false
tags = [ ]
}
resource "ns1_zone" "test" {
zone = "terraform-test-%s.io"
}
`, rString)
}

func testAccCheckRedirectDestroy(s *terraform.State) error {
client := testAccProvider.Meta().(*ns1.Client)

Expand Down

0 comments on commit b7986ca

Please sign in to comment.