Files
ZacharyZcR 8d30ee334c
测试构建 / 代码检查 (push) Has been cancelled
测试构建 / 单元测试和构建 (push) Has been cancelled
测试构建 / 构建验证 (push) Has been cancelled
Add native protocol service plugins
2026-05-23 15:51:50 +08:00

34 lines
929 B
Go

//go:build plugin_dns || !plugin_selective
package services
import (
"encoding/binary"
"strings"
"testing"
)
func TestDNSQueryAndResponse(t *testing.T) {
const id uint16 = 0x1234
query := buildDNSRootNSQuery(id)
if len(query) != 17 {
t.Fatalf("unexpected dns query length: %d", len(query))
}
if binary.BigEndian.Uint16(query[0:2]) != id || binary.BigEndian.Uint16(query[13:15]) != 2 {
t.Fatalf("unexpected dns query: %#v", query)
}
resp := make([]byte, 12)
binary.BigEndian.PutUint16(resp[0:2], id)
binary.BigEndian.PutUint16(resp[2:4], 0x8180)
binary.BigEndian.PutUint16(resp[4:6], 1)
binary.BigEndian.PutUint16(resp[6:8], 2)
binary.BigEndian.PutUint16(resp[8:10], 3)
binary.BigEndian.PutUint16(resp[10:12], 4)
banner, ok := parseDNSResponse(resp, id)
if !ok || !strings.Contains(banner, "rcode=0") || !strings.Contains(banner, "an=2") {
t.Fatalf("unexpected dns banner: %q ok=%v", banner, ok)
}
}