github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/lib/net/tls/dial_test.go (about)

     1  package tls
     2  
     3  import (
     4  	"crypto/tls"
     5  	"crypto/x509"
     6  	"net"
     7  	"strings"
     8  	"testing"
     9  
    10  	mynet "github.com/Cloud-Foundations/Dominator/lib/net"
    11  )
    12  
    13  var (
    14  	serverAddress   string
    15  	tlsCertificate  tls.Certificate
    16  	x509Certificate *x509.Certificate
    17  )
    18  
    19  func init() {
    20  	var err error
    21  	tlsCertificate, x509Certificate, err = NewTestCertificate()
    22  	if err != nil {
    23  		panic(err)
    24  	}
    25  	config := &tls.Config{Certificates: []tls.Certificate{tlsCertificate}}
    26  	listener, err := tls.Listen("tcp", "localhost:", config)
    27  	if err != nil {
    28  		panic(err)
    29  	}
    30  	serverAddress = listener.Addr().String()
    31  	go func() {
    32  		for {
    33  			accept(listener)
    34  		}
    35  	}()
    36  }
    37  
    38  func accept(listener net.Listener) {
    39  	conn, err := listener.Accept()
    40  	if err != nil {
    41  		return
    42  	}
    43  	defer conn.Close()
    44  	conn.(*tls.Conn).Handshake()
    45  }
    46  
    47  func TestDialSkipVerify(t *testing.T) {
    48  	dialer := NewDialer(nil, &tls.Config{InsecureSkipVerify: true})
    49  	if conn, err := dialer.Dial("tcp", serverAddress); err != nil {
    50  		t.Fatal(err)
    51  	} else {
    52  		conn.Close()
    53  	}
    54  }
    55  
    56  func TestDialNoConfig(t *testing.T) {
    57  	dialer := NewDialer(nil, nil)
    58  	if conn, err := dialer.Dial("tcp", serverAddress); err != nil {
    59  		if strings.Contains(err.Error(),
    60  			"certificate signed by unknown authority") {
    61  			return
    62  		}
    63  		t.Fatal(err)
    64  	} else {
    65  		conn.Close()
    66  		t.Fatal("Dial with nil config did not fail")
    67  	}
    68  }
    69  
    70  func TestDialConfig(t *testing.T) {
    71  	caCertPool := x509.NewCertPool()
    72  	caCertPool.AddCert(x509Certificate)
    73  	dialer := NewDialer(nil, &tls.Config{RootCAs: caCertPool})
    74  	if conn, err := dialer.Dial("tcp", serverAddress); err != nil {
    75  		t.Fatal(err)
    76  	} else {
    77  		conn.Close()
    78  	}
    79  }
    80  
    81  func TestDialSkipVerifyMeasuringDialer(t *testing.T) {
    82  	dialer := NewDialer(mynet.NewMeasuringDialer(&net.Dialer{}),
    83  		&tls.Config{InsecureSkipVerify: true})
    84  	if conn, err := dialer.Dial("tcp", serverAddress); err != nil {
    85  		t.Fatal(err)
    86  	} else {
    87  		conn.Close()
    88  	}
    89  }