74 lines
1.9 KiB
Go
74 lines
1.9 KiB
Go
package checker
|
|
|
|
import (
|
|
"net"
|
|
"reflect"
|
|
"slices"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestDecodeSpamhausDBL(t *testing.T) {
|
|
cases := []struct {
|
|
ip string
|
|
contains string
|
|
}{
|
|
{"127.0.1.2", "Spam"},
|
|
{"127.0.1.4", "Phishing"},
|
|
{"127.0.1.5", "Malware"},
|
|
{"127.0.1.6", "Botnet"},
|
|
{"127.0.1.255", "refused"},
|
|
{"127.255.255.254", "refused"},
|
|
{"127.0.1.99", "code"},
|
|
}
|
|
for _, c := range cases {
|
|
got := decodeSpamhausDBL(net.ParseIP(c.ip))
|
|
if len(got) != 1 || !strings.Contains(got[0], c.contains) {
|
|
t.Errorf("decodeSpamhausDBL(%s) = %v, want substring %q", c.ip, got, c.contains)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestDecodeSURBLMulti(t *testing.T) {
|
|
got := decodeSURBLMulti(net.ParseIP("127.0.0.12")) // 4 + 8
|
|
if len(got) != 2 || !strings.Contains(got[0], "Phishing") || !strings.Contains(got[1], "Malware") {
|
|
t.Errorf("decodeSURBLMulti = %v", got)
|
|
}
|
|
}
|
|
|
|
func TestDecodeURIBLMulti(t *testing.T) {
|
|
got := decodeURIBLMulti(net.ParseIP("127.0.0.2"))
|
|
if len(got) != 1 || !strings.Contains(got[0], "black") {
|
|
t.Errorf("decodeURIBLMulti(black) = %v", got)
|
|
}
|
|
got = decodeURIBLMulti(net.ParseIP("127.0.0.1"))
|
|
if len(got) != 1 || !strings.Contains(got[0], "blocked") {
|
|
t.Errorf("decodeURIBLMulti(refused) = %v", got)
|
|
}
|
|
}
|
|
|
|
func TestSplitList(t *testing.T) {
|
|
got := splitList("a, b\nc;d e")
|
|
want := []string{"a", "b", "c", "d", "e"}
|
|
if !reflect.DeepEqual(got, want) {
|
|
t.Errorf("splitList = %v, want %v", got, want)
|
|
}
|
|
if !slices.Contains(got, "c") {
|
|
t.Errorf("expected 'c' in %v", got)
|
|
}
|
|
}
|
|
|
|
func TestNormalizeDomain(t *testing.T) {
|
|
if got := normalizeDomain(" Example.COM. "); got != "example.com" {
|
|
t.Errorf("normalizeDomain = %q", got)
|
|
}
|
|
}
|
|
|
|
func TestFormatURL(t *testing.T) {
|
|
if got := formatURL("https://x/?q=%s", "abc"); got != "https://x/?q=abc" {
|
|
t.Errorf("formatURL = %q", got)
|
|
}
|
|
if got := formatURL("https://x/", "abc"); got != "https://x/" {
|
|
t.Errorf("formatURL noplaceholder = %q", got)
|
|
}
|
|
}
|