github.com/terramate-io/tf@v0.0.0-20230830114523-fce866b4dfcd/legacy/helper/acctest/random_test.go (about)

     1  // Copyright (c) HashiCorp, Inc.
     2  // SPDX-License-Identifier: MPL-2.0
     3  
     4  package acctest
     5  
     6  import (
     7  	"regexp"
     8  	"testing"
     9  )
    10  
    11  func TestRandIpAddress(t *testing.T) {
    12  	testCases := []struct {
    13  		s           string
    14  		expected    *regexp.Regexp
    15  		expectedErr string
    16  	}{
    17  		{
    18  			s:        "1.1.1.1/32",
    19  			expected: regexp.MustCompile(`^1\.1\.1\.1$`),
    20  		},
    21  		{
    22  			s:        "10.0.0.0/8",
    23  			expected: regexp.MustCompile(`^10\.\d{1,3}\.\d{1,3}\.\d{1,3}$`),
    24  		},
    25  		{
    26  			s:           "0.0.0.0/0",
    27  			expectedErr: "CIDR range is too large: 32",
    28  		},
    29  		{
    30  			s:        "449d:e5f1:14b1:ddf3:8525:7e9e:4a0d:4a82/128",
    31  			expected: regexp.MustCompile(`^449d:e5f1:14b1:ddf3:8525:7e9e:4a0d:4a82$`),
    32  		},
    33  		{
    34  			s:        "2001:db8::/112",
    35  			expected: regexp.MustCompile(`^2001:db8::[[:xdigit:]]{1,4}$`),
    36  		},
    37  		{
    38  			s:           "2001:db8::/64",
    39  			expectedErr: "CIDR range is too large: 64",
    40  		},
    41  		{
    42  			s:           "abcdefg",
    43  			expectedErr: "invalid CIDR address: abcdefg",
    44  		},
    45  	}
    46  
    47  	for i, tc := range testCases {
    48  		v, err := RandIpAddress(tc.s)
    49  		if err != nil {
    50  			msg := err.Error()
    51  			if tc.expectedErr == "" {
    52  				t.Fatalf("expected test case %d to succeed but got error %q, ", i, msg)
    53  			}
    54  			if msg != tc.expectedErr {
    55  				t.Fatalf("expected test case %d to fail with %q but got %q", i, tc.expectedErr, msg)
    56  			}
    57  		} else if !tc.expected.MatchString(v) {
    58  			t.Fatalf("expected test case %d to return %q but got %q", i, tc.expected, v)
    59  		}
    60  	}
    61  }