package main
|
|
|
|
import (
|
|
"os"
|
|
"reflect"
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func Test_findRecipient(t *testing.T) {
|
|
prepare := func() {
|
|
os.Clearenv()
|
|
_ = os.Setenv("ALLOWED_TO", "mail@example.com,test@example.com")
|
|
_ = os.Setenv("DEFAULT_TO", "mail@example.com")
|
|
appConfig, _ = parseConfig()
|
|
}
|
|
t.Run("No recipient specified", func(t *testing.T) {
|
|
prepare()
|
|
values := FormValues{}
|
|
result := findRecipient(values)
|
|
if result != "mail@example.com" {
|
|
t.Error()
|
|
}
|
|
})
|
|
t.Run("Multiple recipients specified", func(t *testing.T) {
|
|
prepare()
|
|
values := FormValues{
|
|
"_to": {"abc@example.com", "def@example.com"},
|
|
}
|
|
result := findRecipient(values)
|
|
if result != "mail@example.com" {
|
|
t.Error()
|
|
}
|
|
})
|
|
t.Run("Allowed recipient specified", func(t *testing.T) {
|
|
prepare()
|
|
values := FormValues{
|
|
"_to": {"test@example.com"},
|
|
}
|
|
result := findRecipient(values)
|
|
if result != "test@example.com" {
|
|
t.Error()
|
|
}
|
|
})
|
|
t.Run("Forbidden recipient specified", func(t *testing.T) {
|
|
prepare()
|
|
values := FormValues{
|
|
"_to": {"forbidden@example.com"},
|
|
}
|
|
result := findRecipient(values)
|
|
if result != "mail@example.com" {
|
|
t.Error()
|
|
}
|
|
})
|
|
}
|
|
|
|
func Test_findFormName(t *testing.T) {
|
|
t.Run("No form name", func(t *testing.T) {
|
|
if "a form" != findFormName(FormValues{}) {
|
|
t.Error()
|
|
}
|
|
})
|
|
t.Run("Multiple form names", func(t *testing.T) {
|
|
if "a form" != findFormName(FormValues{"_formName": {"Test", "ABC"}}) {
|
|
t.Error()
|
|
}
|
|
})
|
|
t.Run("Form name", func(t *testing.T) {
|
|
if "Test" != findFormName(FormValues{"_formName": {"Test"}}) {
|
|
t.Error()
|
|
}
|
|
})
|
|
}
|
|
|
|
func Test_findReplyTo(t *testing.T) {
|
|
t.Run("No replyTo", func(t *testing.T) {
|
|
if "" != findReplyTo(FormValues{}) {
|
|
t.Error()
|
|
}
|
|
})
|
|
t.Run("Multiple replyTo", func(t *testing.T) {
|
|
if "" != findReplyTo(FormValues{"_replyTo": {"test@example.com", "test2@example.com"}}) {
|
|
t.Error()
|
|
}
|
|
})
|
|
t.Run("replyTo", func(t *testing.T) {
|
|
if "test@example.com" != findReplyTo(FormValues{"_replyTo": {"test@example.com"}}) {
|
|
t.Error()
|
|
}
|
|
})
|
|
}
|
|
|
|
func Test_removeMetaValues(t *testing.T) {
|
|
t.Run("Remove meta values", func(t *testing.T) {
|
|
result := removeMetaValues(FormValues{
|
|
"_test": {"abc"},
|
|
"test": {"def"},
|
|
})
|
|
want := FormValues{
|
|
"test": {"def"},
|
|
}
|
|
if !reflect.DeepEqual(result, want) {
|
|
t.Error()
|
|
}
|
|
})
|
|
}
|
|
|
|
func Test_buildMessage(t *testing.T) {
|
|
t.Run("Test message", func(t *testing.T) {
|
|
os.Clearenv()
|
|
_ = os.Setenv("EMAIL_TO", "mail@example.com")
|
|
_ = os.Setenv("ALLOWED_TO", "mail@example.com,test@example.com")
|
|
_ = os.Setenv("EMAIL_FROM", "forms@example.com")
|
|
appConfig, _ = parseConfig()
|
|
values := FormValues{
|
|
"_formName": {"Testform"},
|
|
"_replyTo": {"reply@example.com"},
|
|
"Testkey": {"Testvalue"},
|
|
"Another Key": {"Test", "ABC"},
|
|
}
|
|
date := time.Now()
|
|
result := buildMessage("test@example.com", date, values)
|
|
if !strings.Contains(result, "Reply-To: reply@example.com") {
|
|
t.Error()
|
|
}
|
|
if !strings.Contains(result, "Subject: New submission on Testform") {
|
|
t.Error()
|
|
}
|
|
if !strings.Contains(result, "Testkey: Testvalue") {
|
|
t.Error()
|
|
}
|
|
if !strings.Contains(result, "Another Key: Test, ABC") {
|
|
t.Error()
|
|
}
|
|
})
|
|
}
|