github.com/Cloud-Foundations/Dominator@v0.3.4/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{
    26  		Certificates: []tls.Certificate{tlsCertificate},
    27  		MinVersion:   tls.VersionTLS12,
    28  	}
    29  	listener, err := tls.Listen("tcp", "localhost:", config)
    30  	if err != nil {
    31  		panic(err)
    32  	}
    33  	serverAddress = listener.Addr().String()
    34  	go func() {
    35  		for {
    36  			accept(listener)
    37  		}
    38  	}()
    39  }
    40  
    41  func accept(listener net.Listener) {
    42  	conn, err := listener.Accept()
    43  	if err != nil {
    44  		panic(err)
    45  	}
    46  	defer conn.Close()
    47  	conn.(*tls.Conn).Handshake()
    48  }
    49  
    50  func TestDialSkipVerify(t *testing.T) {
    51  	dialer := NewDialer(nil, &tls.Config{InsecureSkipVerify: true})
    52  	if conn, err := dialer.Dial("tcp", serverAddress); err != nil {
    53  		t.Fatalf("error dialing: %s: %s", serverAddress, err)
    54  	} else {
    55  		conn.Close()
    56  	}
    57  }
    58  
    59  func TestDialNoConfig(t *testing.T) {
    60  	dialer := NewDialer(nil, nil)
    61  	if conn, err := dialer.Dial("tcp", serverAddress); err != nil {
    62  		if strings.Contains(err.Error(),
    63  			"certificate signed by unknown authority") {
    64  			return
    65  		}
    66  		t.Fatal(err)
    67  	} else {
    68  		conn.Close()
    69  		t.Fatal("Dial with nil config did not fail")
    70  	}
    71  }
    72  
    73  func TestDialConfig(t *testing.T) {
    74  	caCertPool := x509.NewCertPool()
    75  	caCertPool.AddCert(x509Certificate)
    76  	dialer := NewDialer(nil, &tls.Config{RootCAs: caCertPool})
    77  	if conn, err := dialer.Dial("tcp", serverAddress); err != nil {
    78  		t.Fatal(err)
    79  	} else {
    80  		conn.Close()
    81  	}
    82  }
    83  
    84  func TestDialSkipVerifyMeasuringDialer(t *testing.T) {
    85  	dialer := NewDialer(mynet.NewMeasuringDialer(&net.Dialer{}),
    86  		&tls.Config{InsecureSkipVerify: true})
    87  	if conn, err := dialer.Dial("tcp", serverAddress); err != nil {
    88  		t.Fatal(err)
    89  	} else {
    90  		conn.Close()
    91  	}
    92  }