1 package http
2
3 import (
4 "strconv"
5 "testing"
6 )
7
8 func TestValidPortNumber(t *testing.T) {
9 cases := []struct {
10 Input string
11 Valid bool
12 }{
13 {Input: "123", Valid: true},
14 {Input: "123.0", Valid: false},
15 {Input: "-123", Valid: false},
16 {Input: "65536", Valid: false},
17 {Input: "0", Valid: true},
18 }
19 for i, c := range cases {
20 t.Run(strconv.Itoa(i), func(t *testing.T) {
21 valid := ValidPortNumber(c.Input)
22 if e, a := c.Valid, valid; e != a {
23 t.Errorf("expect valid %v, got %v", e, a)
24 }
25 })
26 }
27
28 }
29
30 func TestValidHostLabel(t *testing.T) {
31 cases := []struct {
32 Input string
33 Valid bool
34 }{
35 {Input: "abc123", Valid: true},
36 {Input: "123", Valid: true},
37 {Input: "abc", Valid: true},
38 {Input: "123-abc", Valid: true},
39 {Input: "{thing}-abc", Valid: false},
40 {Input: "abc.123", Valid: false},
41 {Input: "abc/123", Valid: false},
42 {Input: "012345678901234567890123456789012345678901234567890123456789123", Valid: true},
43 {Input: "0123456789012345678901234567890123456789012345678901234567891234", Valid: false},
44 {Input: "", Valid: false},
45 }
46
47 for i, c := range cases {
48 t.Run(strconv.Itoa(i), func(t *testing.T) {
49 valid := ValidHostLabel(c.Input)
50 if e, a := c.Valid, valid; e != a {
51 t.Errorf("expect valid %v, got %v", e, a)
52 }
53 })
54 }
55 }
56
57 func TestValidateEndpointHostHandler(t *testing.T) {
58 cases := map[string]struct {
59 Input string
60 Valid bool
61 }{
62 "valid host": {Input: "abc.123", Valid: true},
63 "fqdn host": {Input: "abc.123.", Valid: true},
64 "empty label": {Input: "abc..", Valid: false},
65 "max host len": {
66 Input: "123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.12345",
67 Valid: true,
68 },
69 "too long host": {
70 Input: "123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456",
71 Valid: false,
72 },
73 "valid host with port number": {Input: "abd.123:1234", Valid: true},
74 "valid host with invalid port number": {Input: "abc.123:99999", Valid: false},
75 "empty host with port number": {Input: ":1234", Valid: false},
76 "valid host with empty port number": {Input: "abc.123:", Valid: false},
77 }
78
79 for name, c := range cases {
80 t.Run(name, func(t *testing.T) {
81 err := ValidateEndpointHost(c.Input)
82 if e, a := c.Valid, err == nil; e != a {
83 t.Errorf("expect valid %v, got %v, %v", e, a, err)
84 }
85 })
86 }
87 }
88
View as plain text