Files
styx/dataset/parser/dns_test.go
2025-10-06 22:25:23 +02:00

107 lines
2.5 KiB
Go

package parser
import (
"reflect"
"sort"
"strings"
"testing"
)
func TestDNSMasqParser(t *testing.T) {
tests := []struct {
Name string
Test string
Want []string
WantIgnored int
}{
{
"data",
`
local-data: "junk1.doubleclick.net A 127.0.0.1"
local-data: "junk2.doubleclick.net A 127.0.0.1"
local-data: "junk2.doubleclick.net CNAME doubleclick.net."
local-data: "junk6.doubleclick.net AAAA ::1"
local-data: "doubleclick.net A 127.0.0.1"
local-data: "ad.junk1.doubleclick.net A 127.0.0.1"
local-data: "adjunk.google.com A 127.0.0.1"`,
[]string{"ad.junk1.doubleclick.net", "adjunk.google.com", "doubleclick.net", "junk1.doubleclick.net", "junk2.doubleclick.net", "junk6.doubleclick.net"},
0,
},
{
"zone",
`
local-zone: "doubleclick.net" reject
local-zone: "adjunk.google.com" reject`,
[]string{"adjunk.google.com", "doubleclick.net"},
0,
},
{
"address",
`
address=/ziyu.net/0.0.0.0
address=/zlp6s.pw/0.0.0.0
address=/zm232.com/0.0.0.0
`,
[]string{"ziyu.net", "zlp6s.pw", "zm232.com"},
0,
},
}
for _, test := range tests {
t.Run(test.Name, func(it *testing.T) {
parsed, ignored, err := ParseDomains(strings.NewReader(test.Test))
if err != nil {
t.Fatal(err)
return
}
sort.Strings(parsed)
if !reflect.DeepEqual(parsed, test.Want) {
t.Errorf("expected ParseDomains(dnsmasq) to return\n\t%v, got\n\t%v", test.Want, parsed)
}
if ignored != test.WantIgnored {
t.Errorf("expected %d ignored, got %d", test.WantIgnored, ignored)
}
})
}
}
func TestMOSDNSParser(t *testing.T) {
test := `domain:0019x.com
domain:002777.xyz
domain:003store.com
domain:00404850.xyz`
want := []string{"0019x.com", "002777.xyz", "003store.com", "00404850.xyz"}
parsed, _, err := ParseDomains(strings.NewReader(test))
if err != nil {
t.Fatal(err)
return
}
sort.Strings(parsed)
if !reflect.DeepEqual(parsed, want) {
t.Errorf("expected ParseDomains(domains) to return %v, got %v", want, parsed)
}
}
func TestSmartDNSParser(t *testing.T) {
test := `# Title:AdRules SmartDNS List
# Update: 2025-10-07 02:05:08(GMT+8)
address /0.myikas.com/#
address /0.net.easyjet.com/#
address /0.nextyourcontent.com/#
address /0019x.com/#`
want := []string{"0.myikas.com", "0.net.easyjet.com", "0.nextyourcontent.com", "0019x.com"}
parsed, _, err := ParseDomains(strings.NewReader(test))
if err != nil {
t.Fatal(err)
return
}
sort.Strings(parsed)
if !reflect.DeepEqual(parsed, want) {
t.Errorf("expected ParseDomains(domains) to return %v, got %v", want, parsed)
}
}