mirror of
https://github.com/wneessen/go-mail.git
synced 2024-11-22 22:00:49 +01:00
Merge pull request #63 from dhia-gharsallaoui/main
Expose Msg attachments fields
This commit is contained in:
commit
42649231e6
2 changed files with 104 additions and 0 deletions
10
msg.go
10
msg.go
|
@ -488,6 +488,16 @@ func (m *Msg) GetParts() []*Part {
|
||||||
return m.parts
|
return m.parts
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetAttachments returns the attachments of the Msg
|
||||||
|
func (m *Msg) GetAttachments() []*File {
|
||||||
|
return m.attachments
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAttachements sets the attachements of the message.
|
||||||
|
func (m *Msg) SetAttachements(ff []*File) {
|
||||||
|
m.attachments = ff
|
||||||
|
}
|
||||||
|
|
||||||
// SetBodyString sets the body of the message.
|
// SetBodyString sets the body of the message.
|
||||||
func (m *Msg) SetBodyString(ct ContentType, b string, o ...PartOption) {
|
func (m *Msg) SetBodyString(ct ContentType, b string, o ...PartOption) {
|
||||||
buf := bytes.NewBufferString(b)
|
buf := bytes.NewBufferString(b)
|
||||||
|
|
94
msg_test.go
94
msg_test.go
|
@ -13,6 +13,7 @@ import (
|
||||||
"io"
|
"io"
|
||||||
"net/mail"
|
"net/mail"
|
||||||
"os"
|
"os"
|
||||||
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
ttpl "text/template"
|
ttpl "text/template"
|
||||||
|
@ -1207,6 +1208,99 @@ func TestMsg_AttachFile(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestMsg_GetAttachments tests the Msg.GetAttachments method
|
||||||
|
func TestMsg_GetAttachments(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
files []string
|
||||||
|
}{
|
||||||
|
{"File: README.md", []string{"README.md"}},
|
||||||
|
{"File: doc.go", []string{"doc.go"}},
|
||||||
|
{"File: README.md and doc.go", []string{"README.md", "doc.go"}},
|
||||||
|
{"File: nonexisting", nil},
|
||||||
|
}
|
||||||
|
m := NewMsg()
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
for _, f := range tt.files {
|
||||||
|
m.AttachFile(f, WithFileName(f), nil)
|
||||||
|
}
|
||||||
|
if len(m.attachments) != len(tt.files) {
|
||||||
|
t.Errorf("AttachFile() failed. Number of attachments expected: %d, got: %d", len(tt.files),
|
||||||
|
len(m.attachments))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ff := m.GetAttachments()
|
||||||
|
if len(m.attachments) != len(ff) {
|
||||||
|
t.Errorf("GetAttachments() failed. Number of attachments expected: %d, got: %d", len(m.attachments),
|
||||||
|
len(ff))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var fn []string
|
||||||
|
for _, f := range ff {
|
||||||
|
fn = append(fn, f.Name)
|
||||||
|
}
|
||||||
|
sort.Strings(fn)
|
||||||
|
sort.Strings(tt.files)
|
||||||
|
for i, f := range tt.files {
|
||||||
|
if f != fn[i] {
|
||||||
|
t.Errorf("GetAttachments() failed. Attachment name expected: %s, got: %s", f,
|
||||||
|
fn[i])
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
m.Reset()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TestMsg_SetAttachments tests the Msg.GetAttachments method
|
||||||
|
func TestMsg_SetAttachments(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
attachments []string
|
||||||
|
files []string
|
||||||
|
}{
|
||||||
|
{"File: replace README.md with doc.go", []string{"README.md"}, []string{"doc.go"}},
|
||||||
|
{"File: add README.md with doc.go ", []string{"doc.go"}, []string{"README.md", "doc.go"}},
|
||||||
|
{"File: remove README.md and doc.go", []string{"README.md", "doc.go"}, nil},
|
||||||
|
{"File: add README.md and doc.go", nil, []string{"README.md", "doc.go"}},
|
||||||
|
}
|
||||||
|
m := NewMsg()
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
sort.Strings(tt.attachments)
|
||||||
|
sort.Strings(tt.files)
|
||||||
|
for _, a := range tt.attachments {
|
||||||
|
m.AttachFile(a, WithFileName(a), nil)
|
||||||
|
}
|
||||||
|
if len(m.attachments) != len(tt.attachments) {
|
||||||
|
t.Errorf("AttachFile() failed. Number of attachments expected: %d, got: %d", len(tt.files),
|
||||||
|
len(m.attachments))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var files []*File
|
||||||
|
for _, f := range tt.files {
|
||||||
|
files = append(files, &File{Name: f})
|
||||||
|
}
|
||||||
|
m.SetAttachements(files)
|
||||||
|
if len(m.attachments) != len(files) {
|
||||||
|
t.Errorf("SetAttachements() failed. Number of attachments expected: %d, got: %d", len(files),
|
||||||
|
len(m.attachments))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for i, f := range tt.files {
|
||||||
|
if f != m.attachments[i].Name {
|
||||||
|
t.Errorf("SetAttachments() failed. Attachment name expected: %s, got: %s", f,
|
||||||
|
m.attachments[i].Name)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
m.Reset()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// TestMsg_AttachFromEmbedFS tests the Msg.AttachFromEmbedFS and the WithFilename FileOption method
|
// TestMsg_AttachFromEmbedFS tests the Msg.AttachFromEmbedFS and the WithFilename FileOption method
|
||||||
func TestMsg_AttachFromEmbedFS(t *testing.T) {
|
func TestMsg_AttachFromEmbedFS(t *testing.T) {
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
|
|
Loading…
Reference in a new issue