50 lines
953 B
Go
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)
|
|
}
|