From 35ac1f959e755c64fae89eeb4d8408ef6cded007 Mon Sep 17 00:00:00 2001 From: Vilen Topchii <32271530+vtopc@users.noreply.github.com> Date: Mon, 18 Nov 2024 21:42:18 +0200 Subject: [PATCH] DE-1351 Add linters to tests (#347) --- .golangci.yml | 11 +++++++++-- common_test.go | 6 +++++- mailgun_test.go | 5 +++-- messages_test.go | 31 ++++++++++++++++++++----------- storage_test.go | 1 + webhooks_test.go | 6 +++--- 6 files changed, 41 insertions(+), 19 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index bc041fa1..bbabafe7 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -38,6 +38,14 @@ linters-settings: - (io.Closer).Close - (io.ReadCloser).Close + gosec: + # To specify a set of rules to explicitly exclude. + # Available rules: https://github.com/securego/gosec#available-rules + # Default: [] + excludes: + # Not critical for the http client + - G114 # Use of net/http serve function that has no support for setting timeouts + govet: enable-all: true disable: @@ -76,8 +84,7 @@ issues: run: # include test files or not, default is true - # TODO(DE-1139): Enable - tests: false + tests: true # Timeout for analysis, e.g. 30s, 5m. # Default: 1m diff --git a/common_test.go b/common_test.go index 5c4481e8..0867f854 100644 --- a/common_test.go +++ b/common_test.go @@ -13,7 +13,11 @@ import ( func randomString(n int, prefix string) string { const alphanum = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" var bytes = make([]byte, n) - rand.Read(bytes) + _, err := rand.Read(bytes) + if err != nil { + panic(fmt.Sprintf("rand.Read: %v", err)) + } + for i, b := range bytes { bytes[i] = alphanum[b%byte(len(alphanum))] } diff --git a/mailgun_test.go b/mailgun_test.go index 2d7a6d03..f4e11c74 100644 --- a/mailgun_test.go +++ b/mailgun_test.go @@ -14,7 +14,7 @@ import ( ) const domain = "valid-mailgun-domain" -const apiKey = "valid-mailgun-api-key" +const apiKey = "valid-mailgun-api-key" //nolint:gosec // This is a test func TestMailgun(t *testing.T) { m := mailgun.NewMailgun(domain, apiKey) @@ -43,7 +43,8 @@ func TestValidBaseAPI(t *testing.T) { b, err := json.Marshal(resp) require.NoError(t, err) - w.Write(b) + _, err = w.Write(b) + require.NoError(t, err) })) apiBases := []string{ diff --git a/messages_test.go b/messages_test.go index 0ba329b3..dc0fe650 100644 --- a/messages_test.go +++ b/messages_test.go @@ -116,7 +116,8 @@ func TestSendMGSTO(t *testing.T) { ctx := context.Background() m := mailgun.NewMessage(fromUser, exampleSubject, exampleText, toUser) - m.SetSTOPeriod("24h") + err = m.SetSTOPeriod("24h") + require.NoError(t, err) msg, id, err := mg.Send(ctx, m) require.NoError(t, err) t.Log("TestSendMGSTO:MSG(" + msg + "),ID(" + id + ")") @@ -218,9 +219,12 @@ func TestSendMGTag(t *testing.T) { ctx := context.Background() m := mailgun.NewMessage(fromUser, exampleSubject, exampleText+"Tags Galore!\n", toUser) - m.AddTag("FooTag") - m.AddTag("BarTag") - m.AddTag("BlortTag") + err = m.AddTag("FooTag") + require.NoError(t, err) + err = m.AddTag("BarTag") + require.NoError(t, err) + err = m.AddTag("BlortTag") + require.NoError(t, err) msg, id, err := mg.Send(ctx, m) require.NoError(t, err) t.Log("TestSendTag:MSG(" + msg + "),ID(" + id + ")") @@ -255,7 +259,8 @@ func TestSendMGBatchFailRecipients(t *testing.T) { m := mailgun.NewMessage(fromUser, exampleSubject, exampleText+"Batch\n") for i := 0; i < mailgun.MaxNumberOfRecipients; i++ { - m.AddRecipient("") // We expect this to indicate a failure at the API + err := m.AddRecipient("") // We expect this to indicate a failure at the API + require.NoError(t, err) } err := m.AddRecipientAndVariables(toUser, nil) // In case of error the SDK didn't send the message, @@ -397,10 +402,14 @@ func TestSendMGMessageVariables(t *testing.T) { mg.SetAPIBase(srv.URL + "/v3") m := mailgun.NewMessage(fromUser, exampleSubject, exampleText, toUser) - m.AddVariable(exampleStrVarKey, exampleStrVarVal) - m.AddVariable(exampleBoolVarKey, false) - m.AddVariable(exampleMapVarKey, exampleMapVarVal) - m.AddTemplateVariable("templateVariable", exampleTemplateVariable) + err := m.AddVariable(exampleStrVarKey, exampleStrVarVal) + require.NoError(t, err) + err = m.AddVariable(exampleBoolVarKey, false) + require.NoError(t, err) + err = m.AddVariable(exampleMapVarKey, exampleMapVarVal) + require.NoError(t, err) + err = m.AddTemplateVariable("templateVariable", exampleTemplateVariable) + require.NoError(t, err) msg, id, err := mg.Send(context.Background(), m) require.NoError(t, err) @@ -553,11 +562,11 @@ func TestResendStored(t *testing.T) { mg := mailgun.NewMailgun(exampleDomain, exampleAPIKey) mg.SetAPIBase(srv.URL + "/v3") - msg, id, err := mg.ReSend(context.Background(), srv.URL+"/v3/some-url") + _, _, err := mg.ReSend(context.Background(), srv.URL+"/v3/some-url") require.NotNil(t, err) require.EqualError(t, err, "must provide at least one recipient") - msg, id, err = mg.ReSend(context.Background(), srv.URL+"/v3/some-url", toUser) + msg, id, err := mg.ReSend(context.Background(), srv.URL+"/v3/some-url", toUser) require.NoError(t, err) assert.Equal(t, exampleMessage, msg) assert.Equal(t, exampleID, id) diff --git a/storage_test.go b/storage_test.go index 45a9e616..159982d7 100644 --- a/storage_test.go +++ b/storage_test.go @@ -25,6 +25,7 @@ func TestStorage(t *testing.T) { t.Logf("New Email: %s Id: %s\n", msg, id) url, err := findStoredMessageURL(mg, strings.Trim(id, "<>")) + require.NoError(t, err) resp, err := mg.GetStoredMessage(ctx, url) require.NoError(t, err) diff --git a/webhooks_test.go b/webhooks_test.go index 90a8ae8a..0dcfcaf2 100644 --- a/webhooks_test.go +++ b/webhooks_test.go @@ -149,7 +149,7 @@ func buildMultipartFormRequest(fields map[string]string) *http.Request { writer := multipart.NewWriter(buf) for k, v := range fields { - writer.WriteField(k, v) + _ = writer.WriteField(k, v) } writer.Close() @@ -171,8 +171,8 @@ func getSignatureFields(key string, signed bool) map[string]string { if signed { h := hmac.New(sha256.New, []byte(key)) - io.WriteString(h, fields["timestamp"]) - io.WriteString(h, fields["token"]) + _, _ = io.WriteString(h, fields["timestamp"]) + _, _ = io.WriteString(h, fields["token"]) hash := h.Sum(nil) fields["signature"] = hex.EncodeToString(hash)