targetparser_test.go 1.4 KB

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