targetparser_test.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package kube
  2. import (
  3. "net/url"
  4. "testing"
  5. "github.com/stretchr/testify/assert"
  6. "google.golang.org/grpc/resolver"
  7. )
  8. func TestParseTarget(t *testing.T) {
  9. tests := []struct {
  10. name string
  11. input string
  12. expect Service
  13. hasErr bool
  14. }{
  15. {
  16. name: "normal case",
  17. input: "k8s://ns1/my-svc:8080",
  18. expect: Service{
  19. Namespace: "ns1",
  20. Name: "my-svc",
  21. Port: 8080,
  22. },
  23. },
  24. {
  25. name: "normal case",
  26. input: "k8s:///my-svc:8080",
  27. expect: Service{
  28. Namespace: defaultNamespace,
  29. Name: "my-svc",
  30. Port: 8080,
  31. },
  32. },
  33. {
  34. name: "no port",
  35. input: "k8s://ns1/my-svc:",
  36. hasErr: true,
  37. },
  38. {
  39. name: "no port, no colon",
  40. input: "k8s://ns1/my-svc",
  41. hasErr: true,
  42. },
  43. {
  44. name: "bad port",
  45. input: "k8s://ns1/my-svc:800a",
  46. hasErr: true,
  47. },
  48. }
  49. for _, test := range tests {
  50. t.Run(test.name, func(t *testing.T) {
  51. uri, err := url.Parse(test.input)
  52. assert.Nil(t, err)
  53. svc, err := ParseTarget(resolver.Target{URL: *uri})
  54. if test.hasErr {
  55. assert.NotNil(t, err)
  56. } else {
  57. assert.Nil(t, err)
  58. assert.Equal(t, test.expect, svc)
  59. }
  60. })
  61. }
  62. }