Merge pull request #3296 from stack72/new_validateFunc_spike
provider/aws: New Validation Function Tests for ELB Name
This commit is contained in:
commit
7cb395c8b6
|
@ -24,31 +24,11 @@ func resourceAwsElb() *schema.Resource {
|
|||
|
||||
Schema: map[string]*schema.Schema{
|
||||
"name": &schema.Schema{
|
||||
Type: schema.TypeString,
|
||||
Optional: true,
|
||||
Computed: true,
|
||||
ForceNew: true,
|
||||
ValidateFunc: func(v interface{}, k string) (ws []string, errors []error) {
|
||||
value := v.(string)
|
||||
if !regexp.MustCompile(`^[0-9A-Za-z-]+$`).MatchString(value) {
|
||||
errors = append(errors, fmt.Errorf(
|
||||
"only alphanumeric characters and hyphens allowed in %q: %q",
|
||||
k, value))
|
||||
}
|
||||
if len(value) > 32 {
|
||||
errors = append(errors, fmt.Errorf(
|
||||
"%q cannot be longer than 32 characters: %q", k, value))
|
||||
}
|
||||
if regexp.MustCompile(`^-`).MatchString(value) {
|
||||
errors = append(errors, fmt.Errorf(
|
||||
"%q cannot begin with a hyphen: %q", k, value))
|
||||
}
|
||||
if regexp.MustCompile(`-$`).MatchString(value) {
|
||||
errors = append(errors, fmt.Errorf(
|
||||
"%q cannot end with a hyphen: %q", k, value))
|
||||
}
|
||||
return
|
||||
},
|
||||
Type: schema.TypeString,
|
||||
Optional: true,
|
||||
Computed: true,
|
||||
ForceNew: true,
|
||||
ValidateFunc: validateElbName,
|
||||
},
|
||||
|
||||
"internal": &schema.Schema{
|
||||
|
@ -591,3 +571,26 @@ func isLoadBalancerNotFound(err error) bool {
|
|||
elberr, ok := err.(awserr.Error)
|
||||
return ok && elberr.Code() == "LoadBalancerNotFound"
|
||||
}
|
||||
|
||||
func validateElbName(v interface{}, k string) (ws []string, errors []error) {
|
||||
value := v.(string)
|
||||
if !regexp.MustCompile(`^[0-9A-Za-z-]+$`).MatchString(value) {
|
||||
errors = append(errors, fmt.Errorf(
|
||||
"only alphanumeric characters and hyphens allowed in %q: %q",
|
||||
k, value))
|
||||
}
|
||||
if len(value) > 32 {
|
||||
errors = append(errors, fmt.Errorf(
|
||||
"%q cannot be longer than 32 characters: %q", k, value))
|
||||
}
|
||||
if regexp.MustCompile(`^-`).MatchString(value) {
|
||||
errors = append(errors, fmt.Errorf(
|
||||
"%q cannot begin with a hyphen: %q", k, value))
|
||||
}
|
||||
if regexp.MustCompile(`-$`).MatchString(value) {
|
||||
errors = append(errors, fmt.Errorf(
|
||||
"%q cannot end with a hyphen: %q", k, value))
|
||||
}
|
||||
return
|
||||
|
||||
}
|
||||
|
|
|
@ -437,6 +437,42 @@ func TestResourceAwsElbListenerHash(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestResourceAWSELB_validateElbNameCannotBeginWithHyphen(t *testing.T) {
|
||||
var elbName = "-Testing123"
|
||||
_, errors := validateElbName(elbName, "SampleKey")
|
||||
|
||||
if len(errors) != 1 {
|
||||
t.Fatalf("Expected the ELB Name to trigger a validation error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestResourceAWSELB_validateElbNameCannotBeLongerThen32Characters(t *testing.T) {
|
||||
var elbName = "Testing123dddddddddddddddddddvvvv"
|
||||
_, errors := validateElbName(elbName, "SampleKey")
|
||||
|
||||
if len(errors) != 1 {
|
||||
t.Fatalf("Expected the ELB Name to trigger a validation error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestResourceAWSELB_validateElbNameCannotHaveSpecialCharacters(t *testing.T) {
|
||||
var elbName = "Testing123%%"
|
||||
_, errors := validateElbName(elbName, "SampleKey")
|
||||
|
||||
if len(errors) != 1 {
|
||||
t.Fatalf("Expected the ELB Name to trigger a validation error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestResourceAWSELB_validateElbNameCannotEndWithHyphen(t *testing.T) {
|
||||
var elbName = "Testing123-"
|
||||
_, errors := validateElbName(elbName, "SampleKey")
|
||||
|
||||
if len(errors) != 1 {
|
||||
t.Fatalf("Expected the ELB Name to trigger a validation error")
|
||||
}
|
||||
}
|
||||
|
||||
func testAccCheckAWSELBDestroy(s *terraform.State) error {
|
||||
conn := testAccProvider.Meta().(*AWSClient).elbconn
|
||||
|
||||
|
|
Loading…
Reference in New Issue