targetparser_test.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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. expect: Service{
  42. Namespace: "ns1",
  43. Name: "my-svc",
  44. },
  45. },
  46. {
  47. name: "bad port",
  48. input: "k8s://ns1/my-svc:800a",
  49. hasErr: true,
  50. },
  51. }
  52. for _, test := range tests {
  53. t.Run(test.name, func(t *testing.T) {
  54. uri, err := url.Parse(test.input)
  55. assert.Nil(t, err)
  56. svc, err := ParseTarget(resolver.Target{URL: *uri})
  57. if test.hasErr {
  58. assert.NotNil(t, err)
  59. } else {
  60. assert.Nil(t, err)
  61. assert.Equal(t, test.expect, svc)
  62. }
  63. })
  64. }
  65. }