| /* |
| * |
| * Copyright 2021 gRPC authors. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| */ |
| |
| package grpc |
| |
| import ( |
| "context" |
| "net" |
| "testing" |
| |
| "google.golang.org/grpc/credentials" |
| "google.golang.org/grpc/credentials/insecure" |
| "google.golang.org/grpc/testdata" |
| ) |
| |
| func (s) TestClientConnAuthority(t *testing.T) { |
| serverNameOverride := "over.write.server.name" |
| creds, err := credentials.NewClientTLSFromFile(testdata.Path("x509/server_ca_cert.pem"), serverNameOverride) |
| if err != nil { |
| t.Fatalf("credentials.NewClientTLSFromFile(_, %q) failed: %v", err, serverNameOverride) |
| } |
| |
| tests := []struct { |
| name string |
| target string |
| opts []DialOption |
| wantAuthority string |
| }{ |
| { |
| name: "default", |
| target: "Non-Existent.Server:8080", |
| opts: []DialOption{WithTransportCredentials(insecure.NewCredentials())}, |
| wantAuthority: "Non-Existent.Server:8080", |
| }, |
| { |
| name: "override-via-creds", |
| target: "Non-Existent.Server:8080", |
| opts: []DialOption{WithTransportCredentials(creds)}, |
| wantAuthority: serverNameOverride, |
| }, |
| { |
| name: "override-via-WithAuthority", |
| target: "Non-Existent.Server:8080", |
| opts: []DialOption{WithTransportCredentials(insecure.NewCredentials()), WithAuthority("authority-override")}, |
| wantAuthority: "authority-override", |
| }, |
| { |
| name: "override-via-creds-and-WithAuthority", |
| target: "Non-Existent.Server:8080", |
| opts: []DialOption{WithTransportCredentials(creds), WithAuthority(serverNameOverride)}, |
| wantAuthority: serverNameOverride, |
| }, |
| { |
| name: "unix relative", |
| target: "unix:sock.sock", |
| opts: []DialOption{WithTransportCredentials(insecure.NewCredentials())}, |
| wantAuthority: "localhost", |
| }, |
| { |
| name: "unix relative with custom dialer", |
| target: "unix:sock.sock", |
| opts: []DialOption{WithTransportCredentials(insecure.NewCredentials()), WithContextDialer(func(ctx context.Context, addr string) (net.Conn, error) { |
| return (&net.Dialer{}).DialContext(ctx, "", addr) |
| })}, |
| wantAuthority: "localhost", |
| }, |
| { |
| name: "unix absolute", |
| target: "unix:/sock.sock", |
| opts: []DialOption{WithTransportCredentials(insecure.NewCredentials())}, |
| wantAuthority: "localhost", |
| }, |
| { |
| name: "unix absolute with custom dialer", |
| target: "unix:///sock.sock", |
| opts: []DialOption{WithTransportCredentials(insecure.NewCredentials()), WithContextDialer(func(ctx context.Context, addr string) (net.Conn, error) { |
| return (&net.Dialer{}).DialContext(ctx, "", addr) |
| })}, |
| wantAuthority: "localhost", |
| }, |
| { |
| name: "localhost colon port", |
| target: "localhost:50051", |
| opts: []DialOption{WithTransportCredentials(insecure.NewCredentials())}, |
| wantAuthority: "localhost:50051", |
| }, |
| { |
| name: "colon port", |
| target: ":50051", |
| opts: []DialOption{WithTransportCredentials(insecure.NewCredentials())}, |
| wantAuthority: "localhost:50051", |
| }, |
| } |
| |
| for _, test := range tests { |
| t.Run(test.name, func(t *testing.T) { |
| cc, err := Dial(test.target, test.opts...) |
| if err != nil { |
| t.Fatalf("Dial(%q) failed: %v", test.target, err) |
| } |
| defer cc.Close() |
| if cc.authority != test.wantAuthority { |
| t.Fatalf("cc.authority = %q, want %q", cc.authority, test.wantAuthority) |
| } |
| }) |
| } |
| } |
| |
| func (s) TestClientConnAuthority_CredsAndDialOptionMismatch(t *testing.T) { |
| serverNameOverride := "over.write.server.name" |
| creds, err := credentials.NewClientTLSFromFile(testdata.Path("x509/server_ca_cert.pem"), serverNameOverride) |
| if err != nil { |
| t.Fatalf("credentials.NewClientTLSFromFile(_, %q) failed: %v", err, serverNameOverride) |
| } |
| opts := []DialOption{WithTransportCredentials(creds), WithAuthority("authority-override")} |
| if cc, err := Dial("Non-Existent.Server:8000", opts...); err == nil { |
| cc.Close() |
| t.Fatal("grpc.Dial() succeeded when expected to fail") |
| } |
| } |