From 104adc54a3062e28925dbd5cbc10e33ebcf159ee Mon Sep 17 00:00:00 2001 From: vasayxtx Date: Fri, 9 Aug 2024 17:42:39 +0300 Subject: [PATCH] Polish tests and repair goimports linter --- .golangci.yml | 2 +- httpserver/http_server_test.go | 30 +++++++++++++-------------- httpserver/middleware/logging_test.go | 4 +--- testutil/net.go | 19 +++++++++++------ 4 files changed, 29 insertions(+), 26 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 0f39df1..0cd115f 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -11,7 +11,7 @@ linters-settings: lll: line-length: 140 goimports: - local-prefixes: git.acronis.com/abc/go-libs/ + local-prefixes: github.com/acronis/go-libs/ gocritic: enabled-tags: - diagnostic diff --git a/httpserver/http_server_test.go b/httpserver/http_server_test.go index f75dbc6..c17aa6b 100644 --- a/httpserver/http_server_test.go +++ b/httpserver/http_server_test.go @@ -93,20 +93,16 @@ func generateCertificate(certFilePath, privKeyPath string) error { } func TestHTTPServer_Start_SecureServer(t *testing.T) { - var ( - dirName = "testdata/tls" - certFilePath = filepath.Join(dirName, "cert.pem") - privKeyFile = filepath.Join(dirName, "key.pem") - ) + tmpDirPath := t.TempDir() + certFilePath := filepath.Join(tmpDirPath, "cert.pem") + privKeyFilePath := filepath.Join(tmpDirPath, "key.pem") + addr := testutil.GetLocalAddrWithFreeTCPPort() fatalErr := make(chan error, 1) - err := os.MkdirAll(dirName, 0755) - require.NoError(t, err) - err = generateCertificate(certFilePath, privKeyFile) - require.NoError(t, err) + require.NoError(t, generateCertificate(certFilePath, privKeyFilePath)) - cfg := TLSConfig{Enabled: true, Certificate: certFilePath, Key: privKeyFile} + cfg := TLSConfig{Enabled: true, Certificate: certFilePath, Key: privKeyFilePath} httpServer, err := New(&Config{Address: addr, TLS: cfg}, logtest.NewLogger(), Opts{}) require.NoError(t, err) @@ -122,7 +118,9 @@ func TestHTTPServer_Start_SecureServer(t *testing.T) { testutil.RequireNoErrorInChannel(t, fatalErr) }() - client := buildClient(cfg.Certificate) + client, err := buildClient(cfg.Certificate) + require.NoError(t, err) + resp, err := client.Get(httpServer.URL + "/healthz") defer func() { require.NoError(t, resp.Body.Close()) }() @@ -130,7 +128,7 @@ func TestHTTPServer_Start_SecureServer(t *testing.T) { require.Equal(t, http.StatusOK, resp.StatusCode) } -func buildClient(certPath string) *http.Client { +func buildClient(certPath string) (*http.Client, error) { // Set up our own certificate pool tlsConfig := &tls.Config{RootCAs: x509.NewCertPool()} transport := &http.Transport{TLSClientConfig: tlsConfig} @@ -139,18 +137,18 @@ func buildClient(certPath string) *http.Client { // Load our trusted certificate path pemData, err := os.ReadFile(certPath) if err != nil { - panic(err) + return nil, err } ok := tlsConfig.RootCAs.AppendCertsFromPEM(pemData) if !ok { - panic("Couldn't load PEM data") + return nil, err } - return client + return client, nil } func TestHTTPServer_StartWithStaticPort(t *testing.T) { - testHTTPServerStart(t, "127.0.0.1", testutil.GetLocalFreeTCPPort(), "") + testHTTPServerStart(t, "127.0.0.1", testutil.MustGetLocalFreeTCPPort(), "") } func TestHTTPServer_StartWithDynamicPort(t *testing.T) { diff --git a/httpserver/middleware/logging_test.go b/httpserver/middleware/logging_test.go index 5e2816b..e936a70 100644 --- a/httpserver/middleware/logging_test.go +++ b/httpserver/middleware/logging_test.go @@ -33,9 +33,7 @@ func (h *mockLoggingNextHandler) ServeHTTP(rw http.ResponseWriter, r *http.Reque h.lastContextLogger = GetLoggerFromContext(r.Context()) h.lastContextLoggingParams = GetLoggingParamsFromContext(r.Context()) rw.WriteHeader(h.respStatusCode) - if _, err := rw.Write([]byte(http.StatusText(h.respStatusCode))); err != nil { - panic(err) - } + _, _ = rw.Write([]byte(http.StatusText(h.respStatusCode))) } func TestLoggingHandler_ServeHTTP(t *testing.T) { diff --git a/testutil/net.go b/testutil/net.go index dd9ae8e..cba4859 100644 --- a/testutil/net.go +++ b/testutil/net.go @@ -14,13 +14,20 @@ import ( ) // GetLocalFreeTCPPort returns free (not listening by somebody) TCP port on the 127.0.0.1 network interface. -func GetLocalFreeTCPPort() int { - listener, err := net.Listen("tcp", "127.0.0.1:0") +func GetLocalFreeTCPPort() (int, error) { + ln, err := net.Listen("tcp", "127.0.0.1:0") if err != nil { - panic(err) + return 0, err } - port := listener.Addr().(*net.TCPAddr).Port - if err := listener.Close(); err != nil { + port := ln.Addr().(*net.TCPAddr).Port + return port, ln.Close() +} + +// MustGetLocalFreeTCPPort returns free (not listening by somebody) TCP port on the 127.0.0.1 network interface. +// It panics if an error occurs. +func MustGetLocalFreeTCPPort() int { + port, err := GetLocalFreeTCPPort() + if err != nil { panic(err) } return port @@ -28,7 +35,7 @@ func GetLocalFreeTCPPort() int { // GetLocalAddrWithFreeTCPPort returns 127.0.0.1: address. func GetLocalAddrWithFreeTCPPort() string { - return fmt.Sprintf("127.0.0.1:%d", GetLocalFreeTCPPort()) + return fmt.Sprintf("127.0.0.1:%d", MustGetLocalFreeTCPPort()) } // WaitListeningServer waits until the server is ready to accept TCP connection on the passing address.