mirror of https://github.com/grpc/grpc-go.git
				
				
				
			
		
			
				
	
	
		
			136 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			136 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Go
		
	
	
	
/*
 | 
						|
 *
 | 
						|
 * 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 := NewClient("Non-Existent.Server:8000", opts...); err == nil {
 | 
						|
		cc.Close()
 | 
						|
		t.Fatal("grpc.NewClient() succeeded when expected to fail")
 | 
						|
	}
 | 
						|
}
 |