60 lines
1.1 KiB
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'")
|
|
})
|
|
}
|