mirror of
https://github.com/1f349/lotus.git
synced 2024-11-14 16:01:33 +00:00
46 lines
1.0 KiB
Go
46 lines
1.0 KiB
Go
package postfix_lookup
|
|
|
|
import (
|
|
_ "embed"
|
|
"github.com/stretchr/testify/assert"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
var postfixLookupData = []struct {
|
|
Input string
|
|
Output string
|
|
}{
|
|
{"hi@example.com", "admin@example.com"},
|
|
{"test@example.com", "admin@example.com"},
|
|
{"user@example.org", "admin@example.org"},
|
|
{"user@example.net", ""},
|
|
}
|
|
|
|
func TestDecoder_Load(t *testing.T) {
|
|
p := &PostfixLookup{execCmd: func(key string) ([]byte, error) {
|
|
n := strings.IndexByte(key, '@')
|
|
if n == -1 {
|
|
return []byte{}, nil
|
|
}
|
|
addr := key[n+1:]
|
|
switch addr {
|
|
case "example.com", "example.org":
|
|
return []byte("result=admin@" + addr + "\nadmin@" + addr + "\n"), nil
|
|
}
|
|
return []byte{}, nil
|
|
}}
|
|
for _, i := range postfixLookupData {
|
|
t.Run(i.Input, func(t *testing.T) {
|
|
lookup, err := p.Lookup(i.Input)
|
|
if i.Output == "" && err == nil {
|
|
t.Fatal("expected error for empty output test case")
|
|
}
|
|
if i.Output != "" && err != nil {
|
|
t.Fatal("expected no error for non-empty output test case")
|
|
}
|
|
assert.Equal(t, i.Output, lookup)
|
|
})
|
|
}
|
|
}
|