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