2023-01-15 16:14:19 +01:00
|
|
|
// SPDX-FileCopyrightText: 2022-2023 The go-mail Authors
|
2022-06-17 15:05:54 +02:00
|
|
|
//
|
|
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
|
2022-03-18 11:12:36 +01:00
|
|
|
package mail
|
|
|
|
|
|
|
|
import "testing"
|
|
|
|
|
|
|
|
// TestFile_SetGetHeader tests the set-/getHeader method of the File object
|
|
|
|
func TestFile_SetGetHeader(t *testing.T) {
|
|
|
|
f := File{
|
|
|
|
Name: "testfile.txt",
|
|
|
|
Header: make(map[string][]string),
|
|
|
|
}
|
|
|
|
f.setHeader(HeaderContentType, "text/plain")
|
|
|
|
fi, ok := f.getHeader(HeaderContentType)
|
|
|
|
if !ok {
|
|
|
|
t.Errorf("getHeader method of File did not return a value")
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if fi != "text/plain" {
|
|
|
|
t.Errorf("getHeader returned wrong value. Expected: %s, got: %s", "text/plain", fi)
|
|
|
|
}
|
|
|
|
fi, ok = f.getHeader(HeaderContentTransferEnc)
|
|
|
|
if ok {
|
|
|
|
t.Errorf("getHeader method of File did return a value, but wasn't supposed to")
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if fi != "" {
|
|
|
|
t.Errorf("getHeader returned wrong value. Expected: %s, got: %s", "", fi)
|
|
|
|
}
|
|
|
|
}
|
2023-02-13 11:27:25 +01:00
|
|
|
|
|
|
|
// TestFile_WithFileDescription tests the WithFileDescription option
|
|
|
|
func TestFile_WithFileDescription(t *testing.T) {
|
|
|
|
tests := []struct {
|
|
|
|
name string
|
|
|
|
desc string
|
|
|
|
}{
|
|
|
|
{"File description: test", "test"},
|
|
|
|
{"File description: empty", ""},
|
|
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
|
|
m := NewMsg()
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
|
m.AttachFile("file.go", WithFileDescription(tt.desc))
|
|
|
|
al := m.GetAttachments()
|
|
|
|
if len(al) <= 0 {
|
|
|
|
t.Errorf("AttachFile() failed. Attachment list is empty")
|
|
|
|
}
|
|
|
|
a := al[0]
|
|
|
|
if a.Desc != tt.desc {
|
|
|
|
t.Errorf("WithFileDescription() failed. Expected: %s, got: %s", tt.desc, a.Desc)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-06-28 13:49:34 +02:00
|
|
|
// TestFile_WithContentID tests the WithFileContentID option
|
|
|
|
func TestFile_WithContentID(t *testing.T) {
|
|
|
|
tests := []struct {
|
|
|
|
name string
|
|
|
|
contentid string
|
|
|
|
}{
|
|
|
|
{"File Content-ID: test", "test"},
|
|
|
|
{"File Content-ID: empty", ""},
|
|
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
|
|
m := NewMsg()
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
|
m.AttachFile("file.go", WithFileContentID(tt.contentid))
|
|
|
|
al := m.GetAttachments()
|
|
|
|
if len(al) <= 0 {
|
|
|
|
t.Errorf("AttachFile() failed. Attachment list is empty")
|
|
|
|
}
|
|
|
|
a := al[0]
|
|
|
|
if a.Header.Get(HeaderContentID.String()) != tt.contentid {
|
|
|
|
t.Errorf("WithFileContentID() failed. Expected: %s, got: %s", tt.contentid,
|
|
|
|
a.Header.Get(HeaderContentID.String()))
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-02-13 11:27:25 +01:00
|
|
|
// TestFile_WithFileEncoding tests the WithFileEncoding option
|
|
|
|
func TestFile_WithFileEncoding(t *testing.T) {
|
|
|
|
tests := []struct {
|
|
|
|
name string
|
|
|
|
enc Encoding
|
|
|
|
want Encoding
|
|
|
|
}{
|
|
|
|
{"File encoding: 8bit raw", NoEncoding, NoEncoding},
|
|
|
|
{"File encoding: Base64", EncodingB64, EncodingB64},
|
|
|
|
{"File encoding: quoted-printable (not allowed)", EncodingQP, ""},
|
|
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
|
|
m := NewMsg()
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
|
m.AttachFile("file.go", WithFileEncoding(tt.enc))
|
|
|
|
al := m.GetAttachments()
|
|
|
|
if len(al) <= 0 {
|
|
|
|
t.Errorf("AttachFile() failed. Attachment list is empty")
|
|
|
|
}
|
|
|
|
a := al[0]
|
|
|
|
if a.Enc != tt.want {
|
|
|
|
t.Errorf("WithFileEncoding() failed. Expected: %s, got: %s", tt.enc, a.Enc)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// TestFile_WithFileContentType tests the WithFileContentType option
|
|
|
|
func TestFile_WithFileContentType(t *testing.T) {
|
|
|
|
tests := []struct {
|
|
|
|
name string
|
|
|
|
ct ContentType
|
|
|
|
want string
|
|
|
|
}{
|
|
|
|
{"File content-type: text/plain", TypeTextPlain, "text/plain"},
|
|
|
|
{"File content-type: html/html", TypeTextHTML, "text/html"},
|
|
|
|
{"File content-type: application/octet-stream", TypeAppOctetStream, "application/octet-stream"},
|
|
|
|
{"File content-type: application/pgp-encrypted", TypePGPEncrypted, "application/pgp-encrypted"},
|
|
|
|
{"File content-type: application/pgp-signature", TypePGPSignature, "application/pgp-signature"},
|
|
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
|
|
m := NewMsg()
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
|
m.AttachFile("file.go", WithFileContentType(tt.ct))
|
|
|
|
al := m.GetAttachments()
|
|
|
|
if len(al) <= 0 {
|
|
|
|
t.Errorf("AttachFile() failed. Attachment list is empty")
|
|
|
|
}
|
|
|
|
a := al[0]
|
|
|
|
if a.ContentType != ContentType(tt.want) {
|
|
|
|
t.Errorf("WithFileContentType() failed. Expected: %s, got: %s", tt.want, a.ContentType)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|