| Tim Windelschmidt | 6d33a43 | 2025-02-04 14:34:25 +0100 | [diff] [blame^] | 1 | // Copyright The Monogon Project Authors. |
| 2 | // SPDX-License-Identifier: Apache-2.0 |
| 3 | |
| Jan Schär | 39f4f5c | 2024-10-29 09:41:50 +0100 | [diff] [blame] | 4 | package node |
| 5 | |
| 6 | import ( |
| 7 | "errors" |
| 8 | "testing" |
| 9 | |
| 10 | "k8s.io/apimachinery/pkg/util/validation" |
| 11 | ) |
| 12 | |
| 13 | func TestValidateDomainName(t *testing.T) { |
| 14 | for _, te := range []struct { |
| 15 | in string |
| 16 | want error |
| 17 | }{ |
| 18 | {"example.com", nil}, |
| 19 | {"localhost", nil}, |
| 20 | {"123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.1.example.com", nil}, |
| 21 | {"123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.12.example.com", errDomainNameTooLong}, |
| 22 | {"ex_ample.com", errDomainNameInvalid}, |
| 23 | {"-.com", errDomainNameInvalid}, |
| 24 | {"example-.com", errDomainNameInvalid}, |
| 25 | {"-example.com", errDomainNameInvalid}, |
| 26 | {"1-1.com", nil}, |
| 27 | {"xn--h-0fa.com", nil}, |
| 28 | {".", errDomainNameInvalid}, |
| 29 | {"example..com", errDomainNameInvalid}, |
| 30 | {"example.com.", errDomainNameInvalid}, |
| 31 | {".example.com", errDomainNameInvalid}, |
| 32 | {"0.example.com", nil}, |
| 33 | {"01.example.com", nil}, |
| 34 | {"012345678901234567890123456789012345678901234567890123456789012.example.com", nil}, |
| 35 | {"0123456789012345678901234567890123456789012345678901234567890123.example.com", errDomainNameInvalid}, |
| 36 | {"1.1.1.1", errDomainNameEndsInNumber}, |
| 37 | {"example.123", errDomainNameEndsInNumber}, |
| 38 | {"0123456789", errDomainNameEndsInNumber}, |
| 39 | {"example.0x", errDomainNameEndsInNumber}, |
| 40 | {"0x0123456789abcdef", errDomainNameEndsInNumber}, |
| 41 | {"1.2.3.1a1", nil}, |
| 42 | } { |
| 43 | if got := validateDomainName(te.in); !errors.Is(got, te.want) { |
| 44 | t.Errorf("%q: wanted %v, got %v", te.in, te.want, got) |
| 45 | } |
| 46 | if validateDomainName(te.in) == nil { |
| 47 | if errs := validation.IsDNS1123Subdomain(te.in); len(errs) > 0 { |
| 48 | t.Errorf("%q: is not a valid Kubernetes domain: %v", te.in, errs) |
| 49 | } |
| 50 | } |
| 51 | } |
| 52 | } |