mirror of
https://github.com/wneessen/go-mail.git
synced 2024-11-14 18:02:55 +01:00
Winni Neessen
0b9a215e7d
Store and restore the original TMPDIR value using a deferred function in `msg_nowin_test.go`. This ensures the TMPDIR environment variable is restored after the test runs, preventing potential side effects on other tests or processes.
85 lines
2.3 KiB
Go
85 lines
2.3 KiB
Go
// SPDX-FileCopyrightText: 2022-2023 The go-mail Authors
|
|
//
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
//go:build !windows
|
|
// +build !windows
|
|
|
|
package mail
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
// TestMsg_WriteToSendmailWithContext tests the WriteToSendmailWithContext() method of the Msg
|
|
func TestMsg_WriteToSendmailWithContext(t *testing.T) {
|
|
if os.Getenv("TEST_SKIP_SENDMAIL") != "" {
|
|
t.Skipf("TEST_SKIP_SENDMAIL variable is set. Skipping sendmail test")
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
sp string
|
|
sf bool
|
|
}{
|
|
{"Sendmail path: /dev/null", "/dev/null", true},
|
|
{"Sendmail path: /bin/cat", "/bin/cat", true},
|
|
{"Sendmail path: /is/invalid", "/is/invalid", true},
|
|
{"Sendmail path: /bin/echo", "/bin/echo", false},
|
|
}
|
|
m := NewMsg()
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
ctx, cfn := context.WithTimeout(context.Background(), time.Second*10)
|
|
defer cfn()
|
|
m.SetBodyString(TypeTextPlain, "Plain")
|
|
if err := m.WriteToSendmailWithContext(ctx, tt.sp); err != nil && !tt.sf {
|
|
t.Errorf("WriteToSendmailWithCommand() failed: %s", err)
|
|
}
|
|
m.Reset()
|
|
})
|
|
}
|
|
}
|
|
|
|
// TestMsg_WriteToSendmail will test the output to the local sendmail command
|
|
func TestMsg_WriteToSendmail(t *testing.T) {
|
|
if os.Getenv("TEST_SKIP_SENDMAIL") != "" {
|
|
t.Skipf("TEST_SKIP_SENDMAIL variable is set. Skipping sendmail test")
|
|
}
|
|
_, err := os.Stat(SendmailPath)
|
|
if err != nil {
|
|
t.Skipf("local sendmail command not found in expected path. Skipping")
|
|
}
|
|
|
|
m := NewMsg()
|
|
_ = m.From("Toni Tester <tester@example.com>")
|
|
_ = m.To(TestRcpt)
|
|
m.SetBodyString(TypeTextPlain, "This is a test")
|
|
if err := m.WriteToSendmail(); err != nil {
|
|
t.Errorf("WriteToSendmail failed: %s", err)
|
|
}
|
|
}
|
|
|
|
func TestMsg_WriteToTempFileFailed(t *testing.T) {
|
|
m := NewMsg()
|
|
_ = m.From("Toni Tester <tester@example.com>")
|
|
_ = m.To("Ellenor Tester <ellinor@example.com>")
|
|
m.SetBodyString(TypeTextPlain, "This is a test")
|
|
|
|
curTmpDir := os.Getenv("TMPDIR")
|
|
defer func() {
|
|
if err := os.Setenv("TMPDIR", curTmpDir); err != nil {
|
|
t.Errorf("failed to set TMPDIR environment variable: %s", err)
|
|
}
|
|
}()
|
|
|
|
if err := os.Setenv("TMPDIR", "/invalid/directory/that/does/not/exist"); err != nil {
|
|
t.Errorf("failed to set TMPDIR environment variable: %s", err)
|
|
}
|
|
_, err := m.WriteToTempFile()
|
|
if err == nil {
|
|
t.Errorf("WriteToTempFile() did not fail as expected")
|
|
}
|
|
}
|