Files
selfcert/selfcert_test.go
Ian Gulliver 2e660a233d Initial commit
2023-04-20 16:25:33 +00:00

50 lines
953 B
Go

package selfcert_test
import (
"context"
"crypto/tls"
"fmt"
"net"
"net/http"
"testing"
"time"
"github.com/go-resty/resty/v2"
"github.com/gopatchy/selfcert"
"github.com/stretchr/testify/require"
)
func TestCert(t *testing.T) {
t.Parallel()
conf, err := selfcert.NewTLSConfigFromHostPort("localhost:0")
require.NoError(t, err)
listener, err := tls.Listen("tcp", "localhost:0", conf)
require.NoError(t, err)
baseURL := fmt.Sprintf("https://localhost:%d/", listener.Addr().(*net.TCPAddr).Port)
srv := &http.Server{
ReadHeaderTimeout: 1 * time.Second,
}
go func() {
_ = srv.Serve(listener)
}()
cli := resty.New()
cli.SetBaseURL(baseURL)
cli.SetTLSClientConfig(&tls.Config{
InsecureSkipVerify: true, //nolint:gosec
})
resp, err := cli.R().Get("/")
require.NoError(t, err)
require.True(t, resp.IsError())
require.Equal(t, resp.StatusCode(), 404)
err = srv.Shutdown(context.Background())
require.NoError(t, err)
}