Remove obsolete tests and add error handling test

Removed commented-out tests to clean up the codebase. Added a new test to verify behavior when the file is closed early during attachment, ensuring robustness.
This commit is contained in:
Winni Neessen 2024-10-27 16:08:50 +01:00
parent 946ad294ce
commit f7cfe5289a
Signed by: wneessen
GPG key ID: 385AC9889632126E
2 changed files with 50 additions and 18 deletions

View file

@ -85,6 +85,55 @@ func TestMsg_AttachFile_unixOnly(t *testing.T) {
}) })
} }
func TestMsg_AttachReader_unixOnly(t *testing.T) {
t.Run("AttachReader with fileFromReader fails on copy", func(t *testing.T) {
tempfile, err := os.CreateTemp("", "attachfile-close-early.*.txt")
if err != nil {
t.Fatalf("failed to create temp file: %s", err)
}
t.Cleanup(func() {
if err := os.Remove(tempfile.Name()); err != nil {
t.Errorf("failed to remove temp file: %s", err)
}
})
message := NewMsg()
if message == nil {
t.Fatal("message is nil")
}
file, err := os.Open("testdata/attachment.txt")
if err != nil {
t.Fatalf("failed to open file: %s", err)
}
t.Cleanup(func() {
if err := file.Close(); err != nil {
t.Errorf("failed to close file: %s", err)
}
})
if err = message.AttachReader("attachment.txt", file); err != nil {
t.Fatalf("failed to attach reader: %s", err)
}
attachments := message.GetAttachments()
if len(attachments) != 1 {
t.Fatalf("failed to get attachments, expected 1, got: %d", len(attachments))
}
messageBuf, err := os.Open(tempfile.Name())
if err != nil {
t.Fatalf("failed to open temp file: %s", err)
}
// We close early to cause an error during io.Copy
if err = messageBuf.Close(); err != nil {
t.Fatalf("failed to close temp file: %s", err)
}
_, err = attachments[0].Writer(messageBuf)
if err == nil {
t.Error("writer func expected to fail, but didn't")
}
if !errors.Is(err, os.ErrClosed) {
t.Errorf("expected error to be %s, got: %s", os.ErrClosed, err)
}
})
}
// TestMsg_WriteToSendmailWithContext tests the WriteToSendmailWithContext() method of the Msg // TestMsg_WriteToSendmailWithContext tests the WriteToSendmailWithContext() method of the Msg
func TestMsg_WriteToSendmailWithContext(t *testing.T) { func TestMsg_WriteToSendmailWithContext(t *testing.T) {
if os.Getenv("TEST_SENDMAIL") != "true" { if os.Getenv("TEST_SENDMAIL") != "true" {

View file

@ -4533,7 +4533,7 @@ func TestMsg_AttachReader(t *testing.T) {
t.Errorf("failed to close file: %s", err) t.Errorf("failed to close file: %s", err)
} }
}) })
if err := message.AttachReader("attachment.txt", file); err != nil { if err = message.AttachReader("attachment.txt", file); err != nil {
t.Fatalf("failed to attach reader: %s", err) t.Fatalf("failed to attach reader: %s", err)
} }
attachments := message.GetAttachments() attachments := message.GetAttachments()
@ -4556,23 +4556,6 @@ func TestMsg_AttachReader(t *testing.T) {
t.Errorf("expected message body to be %s, got: %s", "This is a test attachment", got) t.Errorf("expected message body to be %s, got: %s", "This is a test attachment", got)
} }
}) })
/*
t.Run("AttachReader with non-existant file", func(t *testing.T) {
message := NewMsg()
if message == nil {
t.Fatal("message is nil")
}
message.AttachReader("testdata/non-existant-file.txt")
attachments := message.GetAttachments()
if len(attachments) != 0 {
t.Fatalf("failed to retrieve attachments list")
}
})
t.Run("AttachReader with options", func(t *testing.T) {
t.Log("all options have already been tested in file_test.go")
})
*/
} }
/* /*