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 }