host_test.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. // +build go1.7
  2. package protocol
  3. import (
  4. "strconv"
  5. "testing"
  6. )
  7. func TestValidHostLabel(t *testing.T) {
  8. cases := []struct {
  9. Input string
  10. Valid bool
  11. }{
  12. {Input: "abc123", Valid: true},
  13. {Input: "123", Valid: true},
  14. {Input: "abc", Valid: true},
  15. {Input: "123-abc", Valid: true},
  16. {Input: "{thing}-abc", Valid: false},
  17. {Input: "abc.123", Valid: false},
  18. {Input: "abc/123", Valid: false},
  19. {Input: "012345678901234567890123456789012345678901234567890123456789123", Valid: true},
  20. {Input: "0123456789012345678901234567890123456789012345678901234567891234", Valid: false},
  21. {Input: "", Valid: false},
  22. }
  23. for i, c := range cases {
  24. t.Run(strconv.Itoa(i), func(t *testing.T) {
  25. valid := ValidHostLabel(c.Input)
  26. if e, a := c.Valid, valid; e != a {
  27. t.Errorf("expect valid %v, got %v", e, a)
  28. }
  29. })
  30. }
  31. }
  32. func TestValidateEndpointHostHandler(t *testing.T) {
  33. cases := map[string]struct {
  34. Input string
  35. Valid bool
  36. }{
  37. "valid host": {Input: "abc.123", Valid: true},
  38. "fqdn host": {Input: "abc.123.", Valid: true},
  39. "empty label": {Input: "abc..", Valid: false},
  40. "max host len": {
  41. 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",
  42. Valid: true,
  43. },
  44. "too long host": {
  45. 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",
  46. Valid: false,
  47. },
  48. }
  49. for name, c := range cases {
  50. t.Run(name, func(t *testing.T) {
  51. err := ValidateEndpointHost("OpName", c.Input)
  52. if e, a := c.Valid, err == nil; e != a {
  53. t.Errorf("expect valid %v, got %v, %v", e, a, err)
  54. }
  55. })
  56. }
  57. }