mailsrv/mail/mail_test.go

60 lines
1.1 KiB
Go

package mail
import (
"os"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestFromJson(t *testing.T) {
t.Run("right format", func(t *testing.T) {
f, err := os.CreateTemp("", "temptest-")
require.NoError(t, err)
defer f.Close()
defer os.Remove(f.Name())
data := []byte(`{
"sender":"test@test.com",
"receivers": "test@test.com, test2@test.com",
"subject": "test",
"content": "test"
}`)
n, err := f.Write(data)
require.NoError(t, err)
require.NotEmpty(t, n)
mail, err := FromJSON(f.Name())
require.NoError(t, err)
assert.Equal(t, "test@test.com", mail.Sender)
})
t.Run("bad sender", func(t *testing.T) {
f, err := os.CreateTemp("", "temptest-")
require.NoError(t, err)
defer f.Close()
defer os.Remove(f.Name())
data := []byte(`{
"sender":"test",
"receivers": "test@test.com, test2@test.com",
"subject": "test",
"content": "test"
}`)
n, err := f.Write(data)
require.NoError(t, err)
require.NotEmpty(t, n)
_, err = FromJSON(f.Name())
require.Error(t, err)
assert.Contains(t, err.Error(), "validation for 'Sender'")
})
}