mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-01-12 02:17:43 +08:00
147 lines
2.5 KiB
Go
147 lines
2.5 KiB
Go
package diff2
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/StackExchange/dnscontrol/v3/models"
|
|
"github.com/gobwas/glob"
|
|
)
|
|
|
|
var rmapNil map[string]bool
|
|
var rmapAMX = map[string]bool{
|
|
"A": true,
|
|
"MX": true,
|
|
}
|
|
var rmapCNAME = map[string]bool{
|
|
"CNAME": true,
|
|
}
|
|
|
|
func Test_match(t *testing.T) {
|
|
|
|
testRecLammaA1234 := makeRec("lamma", "A", "1.2.3.4")
|
|
|
|
type args struct {
|
|
rc *models.RecordConfig
|
|
glabel glob.Glob
|
|
gtarget glob.Glob
|
|
hasRType map[string]bool
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
want bool
|
|
}{
|
|
|
|
{
|
|
name: "match3",
|
|
args: args{
|
|
rc: testRecLammaA1234,
|
|
glabel: glob.MustCompile("lam*"),
|
|
hasRType: rmapAMX,
|
|
gtarget: glob.MustCompile("1.2.3.*"),
|
|
},
|
|
want: true,
|
|
},
|
|
|
|
{
|
|
name: "match2",
|
|
args: args{
|
|
rc: testRecLammaA1234,
|
|
glabel: glob.MustCompile("lam*"),
|
|
hasRType: rmapAMX,
|
|
gtarget: nil,
|
|
},
|
|
want: true,
|
|
},
|
|
|
|
{
|
|
name: "match1",
|
|
args: args{
|
|
rc: testRecLammaA1234,
|
|
glabel: glob.MustCompile("lam*"),
|
|
hasRType: rmapNil,
|
|
gtarget: nil,
|
|
},
|
|
want: true,
|
|
},
|
|
|
|
{
|
|
name: "reject1",
|
|
args: args{
|
|
rc: testRecLammaA1234,
|
|
glabel: glob.MustCompile("yyyy"),
|
|
hasRType: rmapAMX,
|
|
gtarget: glob.MustCompile("1.2.3.*"),
|
|
},
|
|
want: false,
|
|
},
|
|
|
|
{
|
|
name: "reject2",
|
|
args: args{
|
|
rc: testRecLammaA1234,
|
|
glabel: glob.MustCompile("lam*"),
|
|
hasRType: rmapCNAME,
|
|
gtarget: glob.MustCompile("1.2.3.*"),
|
|
},
|
|
want: false,
|
|
},
|
|
|
|
{
|
|
name: "reject3",
|
|
args: args{
|
|
rc: testRecLammaA1234,
|
|
glabel: glob.MustCompile("lam*"),
|
|
hasRType: rmapAMX,
|
|
gtarget: glob.MustCompile("zzzzz"),
|
|
},
|
|
want: false,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := match(tt.args.rc, tt.args.glabel, tt.args.gtarget, tt.args.hasRType); got != tt.want {
|
|
t.Errorf("match() = %v, want %v", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func Test_matchType(t *testing.T) {
|
|
type args struct {
|
|
s string
|
|
hasRType map[string]bool
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
want bool
|
|
}{
|
|
|
|
{
|
|
name: "matchCNAME",
|
|
args: args{"CNAME", rmapCNAME},
|
|
want: true,
|
|
},
|
|
|
|
{
|
|
name: "rejectCNAME",
|
|
args: args{"MX", rmapCNAME},
|
|
want: false,
|
|
},
|
|
|
|
{
|
|
name: "matchNIL",
|
|
args: args{"CNAME", rmapNil},
|
|
want: true,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := matchType(tt.args.s, tt.args.hasRType); got != tt.want {
|
|
t.Errorf("matchType() = %v, want %v", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|