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