From f5bcddfe02698d6e96210fd5eb44c259a4739b70 Mon Sep 17 00:00:00 2001 From: Philip O'Toole Date: Mon, 16 Aug 2021 10:45:05 -0400 Subject: [PATCH] Simple test of Dialing TLS --- tcp/dialer_test.go | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/tcp/dialer_test.go b/tcp/dialer_test.go index 47c73518..2ec43109 100644 --- a/tcp/dialer_test.go +++ b/tcp/dialer_test.go @@ -1,9 +1,13 @@ package tcp import ( + "crypto/tls" "net" + "os" "testing" "time" + + "github.com/rqlite/rqlite/testdata/x509" ) func Test_NewDialer(t *testing.T) { @@ -24,7 +28,6 @@ func Test_DialerNoConnect(t *testing.T) { func Test_DialerHeader(t *testing.T) { s := mustNewEchoServer() defer s.Close() - go s.MustStart() d := NewDialer(64, false, false) @@ -43,6 +46,29 @@ func Test_DialerHeader(t *testing.T) { } } +func Test_DialerHeaderTLS(t *testing.T) { + s, cert, key := mustNewEchoServerTLS() + defer s.Close() + defer os.Remove(cert) + defer os.Remove(key) + go s.MustStart() + + d := NewDialer(23, true, true) + conn, err := d.Dial(s.Addr(), 10*time.Second) + if err != nil { + t.Fatalf("failed to dial TLS echo server: %s", err.Error()) + } + + buf := make([]byte, 1) + _, err = conn.Read(buf) + if err != nil { + t.Fatalf("failed to read from TLS echo server: %s", err.Error()) + } + if exp, got := buf[0], byte(23); exp != got { + t.Fatalf("got wrong response from TLS echo server, exp %d, got %d", exp, got) + } +} + type echoServer struct { ln net.Listener } @@ -84,3 +110,18 @@ func mustNewEchoServer() *echoServer { ln: mustTCPListener("127.0.0.1:0"), } } + +func mustNewEchoServerTLS() (*echoServer, string, string) { + ln := mustTCPListener("127.0.0.1:0") + cert := x509.CertFile("") + key := x509.KeyFile("") + + tlsConfig, err := createTLSConfig(cert, key, "") + if err != nil { + panic("failed to create TLS config") + } + + return &echoServer{ + ln: tls.NewListener(ln, tlsConfig), + }, cert, key +}