1
18
19 package grpc
20
21 import (
22 "context"
23 "net"
24 "testing"
25
26 "google.golang.org/grpc/credentials"
27 "google.golang.org/grpc/credentials/insecure"
28 "google.golang.org/grpc/testdata"
29 )
30
31 func (s) TestClientConnAuthority(t *testing.T) {
32 serverNameOverride := "over.write.server.name"
33 creds, err := credentials.NewClientTLSFromFile(testdata.Path("x509/server_ca_cert.pem"), serverNameOverride)
34 if err != nil {
35 t.Fatalf("credentials.NewClientTLSFromFile(_, %q) failed: %v", err, serverNameOverride)
36 }
37
38 tests := []struct {
39 name string
40 target string
41 opts []DialOption
42 wantAuthority string
43 }{
44 {
45 name: "default",
46 target: "Non-Existent.Server:8080",
47 opts: []DialOption{WithTransportCredentials(insecure.NewCredentials())},
48 wantAuthority: "Non-Existent.Server:8080",
49 },
50 {
51 name: "override-via-creds",
52 target: "Non-Existent.Server:8080",
53 opts: []DialOption{WithTransportCredentials(creds)},
54 wantAuthority: serverNameOverride,
55 },
56 {
57 name: "override-via-WithAuthority",
58 target: "Non-Existent.Server:8080",
59 opts: []DialOption{WithTransportCredentials(insecure.NewCredentials()), WithAuthority("authority-override")},
60 wantAuthority: "authority-override",
61 },
62 {
63 name: "override-via-creds-and-WithAuthority",
64 target: "Non-Existent.Server:8080",
65 opts: []DialOption{WithTransportCredentials(creds), WithAuthority(serverNameOverride)},
66 wantAuthority: serverNameOverride,
67 },
68 {
69 name: "unix relative",
70 target: "unix:sock.sock",
71 opts: []DialOption{WithTransportCredentials(insecure.NewCredentials())},
72 wantAuthority: "localhost",
73 },
74 {
75 name: "unix relative with custom dialer",
76 target: "unix:sock.sock",
77 opts: []DialOption{WithTransportCredentials(insecure.NewCredentials()), WithContextDialer(func(ctx context.Context, addr string) (net.Conn, error) {
78 return (&net.Dialer{}).DialContext(ctx, "", addr)
79 })},
80 wantAuthority: "localhost",
81 },
82 {
83 name: "unix absolute",
84 target: "unix:/sock.sock",
85 opts: []DialOption{WithTransportCredentials(insecure.NewCredentials())},
86 wantAuthority: "localhost",
87 },
88 {
89 name: "unix absolute with custom dialer",
90 target: "unix:///sock.sock",
91 opts: []DialOption{WithTransportCredentials(insecure.NewCredentials()), WithContextDialer(func(ctx context.Context, addr string) (net.Conn, error) {
92 return (&net.Dialer{}).DialContext(ctx, "", addr)
93 })},
94 wantAuthority: "localhost",
95 },
96 {
97 name: "localhost colon port",
98 target: "localhost:50051",
99 opts: []DialOption{WithTransportCredentials(insecure.NewCredentials())},
100 wantAuthority: "localhost:50051",
101 },
102 {
103 name: "colon port",
104 target: ":50051",
105 opts: []DialOption{WithTransportCredentials(insecure.NewCredentials())},
106 wantAuthority: "localhost:50051",
107 },
108 }
109
110 for _, test := range tests {
111 t.Run(test.name, func(t *testing.T) {
112 cc, err := Dial(test.target, test.opts...)
113 if err != nil {
114 t.Fatalf("Dial(%q) failed: %v", test.target, err)
115 }
116 defer cc.Close()
117 if cc.authority != test.wantAuthority {
118 t.Fatalf("cc.authority = %q, want %q", cc.authority, test.wantAuthority)
119 }
120 })
121 }
122 }
123
124 func (s) TestClientConnAuthority_CredsAndDialOptionMismatch(t *testing.T) {
125 serverNameOverride := "over.write.server.name"
126 creds, err := credentials.NewClientTLSFromFile(testdata.Path("x509/server_ca_cert.pem"), serverNameOverride)
127 if err != nil {
128 t.Fatalf("credentials.NewClientTLSFromFile(_, %q) failed: %v", err, serverNameOverride)
129 }
130 opts := []DialOption{WithTransportCredentials(creds), WithAuthority("authority-override")}
131 if cc, err := NewClient("Non-Existent.Server:8000", opts...); err == nil {
132 cc.Close()
133 t.Fatal("grpc.NewClient() succeeded when expected to fail")
134 }
135 }
136
View as plain text