111 lines
2.4 KiB
Go
111 lines
2.4 KiB
Go
package records
|
|
|
|
import (
|
|
"bytes"
|
|
"slices"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestLoop(t *testing.T) {
|
|
r := New()
|
|
r.AddCNameRecord("1", "2", 60)
|
|
r.AddCNameRecord("2", "1", 60)
|
|
if r.GetARecords("1") != nil {
|
|
t.Fatal("loop detected")
|
|
}
|
|
if r.GetARecords("2") != nil {
|
|
t.Fatal("loop detected")
|
|
}
|
|
}
|
|
|
|
func TestCName(t *testing.T) {
|
|
r := New()
|
|
r.AddARecord("example.com", []byte{1, 2, 3, 4}, 60)
|
|
r.AddCNameRecord("gateway.example.com", "example.com", 60)
|
|
records := r.GetARecords("gateway.example.com")
|
|
if records == nil {
|
|
t.Fatal("no records")
|
|
}
|
|
if bytes.Compare(records[0].Address, []byte{1, 2, 3, 4}) != 0 {
|
|
t.Fatal("cname mismatch")
|
|
}
|
|
}
|
|
|
|
func TestA(t *testing.T) {
|
|
r := New()
|
|
r.AddARecord("example.com", []byte{1, 2, 3, 4}, 60)
|
|
records := r.GetARecords("example.com")
|
|
if records == nil {
|
|
t.Fatal("no records")
|
|
}
|
|
if bytes.Compare(records[0].Address, []byte{1, 2, 3, 4}) != 0 {
|
|
t.Fatal("cname mismatch")
|
|
}
|
|
}
|
|
|
|
func TestDeprecated(t *testing.T) {
|
|
r := New()
|
|
r.AddARecord("example.com", []byte{1, 2, 3, 4}, 0)
|
|
time.Sleep(time.Second)
|
|
records := r.GetARecords("example.com")
|
|
if records != nil {
|
|
t.Fatal("deprecated records")
|
|
}
|
|
}
|
|
|
|
func TestNotExistedA(t *testing.T) {
|
|
r := New()
|
|
records := r.GetARecords("example.com")
|
|
if records != nil {
|
|
t.Fatal("not existed records")
|
|
}
|
|
}
|
|
|
|
func TestNotExistedCNameAlias(t *testing.T) {
|
|
r := New()
|
|
r.AddCNameRecord("gateway.example.com", "example.com", 60)
|
|
records := r.GetARecords("gateway.example.com")
|
|
if records != nil {
|
|
t.Fatal("not existed records")
|
|
}
|
|
}
|
|
|
|
func TestReplacing(t *testing.T) {
|
|
r := New()
|
|
r.AddCNameRecord("gateway.example.com", "example.com", 60)
|
|
r.AddARecord("gateway.example.com", []byte{1, 2, 3, 4}, 60)
|
|
records := r.GetARecords("gateway.example.com")
|
|
if bytes.Compare(records[0].Address, []byte{1, 2, 3, 4}) != 0 {
|
|
t.Fatal("mismatch")
|
|
}
|
|
}
|
|
|
|
func TestAliases(t *testing.T) {
|
|
r := New()
|
|
r.AddARecord("1", []byte{1, 2, 3, 4}, 60)
|
|
r.AddCNameRecord("2", "1", 60)
|
|
r.AddCNameRecord("3", "2", 60)
|
|
r.AddCNameRecord("4", "2", 60)
|
|
r.AddCNameRecord("5", "1", 60)
|
|
aliases := r.GetAliases("1")
|
|
if aliases == nil {
|
|
t.Fatal("no aliases")
|
|
}
|
|
if !slices.Contains(aliases, "1") {
|
|
t.Fatal("no 1")
|
|
}
|
|
if !slices.Contains(aliases, "2") {
|
|
t.Fatal("no 2")
|
|
}
|
|
if !slices.Contains(aliases, "3") {
|
|
t.Fatal("no 3")
|
|
}
|
|
if !slices.Contains(aliases, "4") {
|
|
t.Fatal("no 4")
|
|
}
|
|
if !slices.Contains(aliases, "5") {
|
|
t.Fatal("no 5")
|
|
}
|
|
}
|