Skip to content

Commit

Permalink
refactor client TLS test
Browse files Browse the repository at this point in the history
  • Loading branch information
ninedraft committed Jan 10, 2022
1 parent 0f20aab commit d207f94
Showing 1 changed file with 31 additions and 24 deletions.
55 changes: 31 additions & 24 deletions gemax/client_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package gemax_test

import (
"bytes"
"context"
"crypto/tls"
"embed"
Expand Down Expand Up @@ -40,12 +41,8 @@ func TestClient(test *testing.T) {
}

func TestClientTLS(test *testing.T) {
var addr = testaddr.Addr()
var tcpListener, errListenTCP = net.Listen("tcp", addr)
if errListenTCP != nil {
test.Fatalf("starting a TCP listener: %v", errListenTCP)
}
defer func() { _ = tcpListener.Close() }()
var ctx, cancel = context.WithCancel(context.Background())
defer cancel()

var cert, errCert = tls.LoadX509KeyPair("testdata/cert.pem", "testdata/key.pem")
if errCert != nil {
Expand All @@ -56,37 +53,47 @@ func TestClientTLS(test *testing.T) {
Certificates: []tls.Certificate{cert},
}

var ctx, cancel = context.WithCancel(context.Background())
defer cancel()
var addr = dumbServer(ctx, test, tlsCfg)

var client = &gemax.Client{}
var resp, errFetch = client.Fetch(ctx, "gemini://"+addr)
if errFetch != nil {
test.Fatal("fetching test data:", errFetch)
}
defer func() { _ = resp.Close() }()

var responseText, _ = io.ReadAll(resp)
if !bytes.Equal(responseText, []byte("\n# Hello world\n")) {
test.Fatalf("unexpected response: %q", responseText)
}
}

func dumbServer(ctx context.Context, test *testing.T, tlsCfg *tls.Config) (addr string) {
addr = testaddr.Addr()
var tcpListener, errListenTCP = net.Listen("tcp", addr)
if errListenTCP != nil {
test.Fatalf("starting a TCP listener: %v", errListenTCP)
}
test.Cleanup(func() { _ = tcpListener.Close() })

var listener = tls.NewListener(tcpListener, tlsCfg)
go func() {
<-ctx.Done()
_ = listener.Close()
}()

var testdata, errTestData = testClientPages.ReadFile("testdata/client/pages/success.com")
if errTestData != nil {
test.Fatal("reading test data:", errTestData)
}
go func() {
var conn, errAccept = listener.Accept()
if errAccept != nil {
test.Log("accepting test connection:", errAccept)
return
}
defer func() { _ = conn.Close() }()

var testdata, errTestData = testClientPages.ReadFile("testdata/client/pages/success.com")
if errTestData != nil {
test.Log("reading test data:", errTestData)
return
}
_, _ = conn.Write(testdata)
}()

var client = &gemax.Client{}
var resp, errFetch = client.Fetch(ctx, "gemini://"+addr)
if errFetch != nil {
test.Fatal("fetching test data:", errFetch)
}
defer func() { _ = resp.Close() }()

var responseText, _ = io.ReadAll(resp)
test.Logf("response: %q", responseText)
return addr
}

0 comments on commit d207f94

Please sign in to comment.