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'") }) }