mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-11-13 03:34:32 +08:00
654736be29
* MSDNS: Improve reliability of zone dump * Update tests * MSDNS: Add initial NAPTR support * Update * fix tests * fix tests * Fixing integration tests for NAPTR * Handle bad JSON. Handle NAPTR TTLs
168 lines
5.4 KiB
Go
168 lines
5.4 KiB
Go
package msdns
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/StackExchange/dnscontrol/v3/models"
|
|
)
|
|
|
|
func Test_generatePSZoneAll(t *testing.T) {
|
|
type args struct {
|
|
dnsserver string
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
want string
|
|
}{
|
|
{
|
|
name: "local",
|
|
args: args{},
|
|
want: `Get-DnsServerZone | ConvertTo-Json`,
|
|
},
|
|
{
|
|
name: "remote",
|
|
args: args{dnsserver: "mydnsserver"},
|
|
want: `Get-DnsServerZone -ComputerName "mydnsserver" | ConvertTo-Json`,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := generatePSZoneAll(tt.args.dnsserver); got != tt.want {
|
|
t.Errorf("generatePSZoneAll() = got=(\n%s\n) want=(\n%s\n)", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func Test_generatePSZoneDump(t *testing.T) {
|
|
type args struct {
|
|
domainname string
|
|
dnsserver string
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
want string
|
|
}{
|
|
{
|
|
name: "local",
|
|
args: args{domainname: "example.com"},
|
|
want: `$OutputEncoding = [Text.UTF8Encoding]::UTF8 ; Get-DnsServerResourceRecord -ZoneName "example.com" | Select-Object -Property * -ExcludeProperty Cim* | ConvertTo-Json -depth 4 | Out-File "foo" -Encoding utf8`,
|
|
},
|
|
{
|
|
name: "remote",
|
|
args: args{domainname: "example.com", dnsserver: "mydnsserver"},
|
|
want: `$OutputEncoding = [Text.UTF8Encoding]::UTF8 ; Get-DnsServerResourceRecord -ComputerName "mydnsserver" -ZoneName "example.com" | Select-Object -Property * -ExcludeProperty Cim* | ConvertTo-Json -depth 4 | Out-File "foo" -Encoding utf8`,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := generatePSZoneDump(tt.args.dnsserver, tt.args.domainname, "foo"); got != tt.want {
|
|
t.Errorf("generatePSZoneDump() = got=(\n%s\n) want=(\n%s\n)", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
//func Test_generatePSDelete(t *testing.T) {
|
|
// type args struct {
|
|
// domain string
|
|
// rec *models.RecordConfig
|
|
// }
|
|
// tests := []struct {
|
|
// name string
|
|
// args args
|
|
// want string
|
|
// }{
|
|
// // TODO: Add test cases.
|
|
// }
|
|
// for _, tt := range tests {
|
|
// t.Run(tt.name, func(t *testing.T) {
|
|
// if got := generatePSDelete(tt.args.domain, tt.args.rec); got != tt.want {
|
|
// t.Errorf("generatePSDelete() = %v, want %v", got, tt.want)
|
|
// }
|
|
// })
|
|
// }
|
|
//}
|
|
|
|
// func Test_generatePSCreate(t *testing.T) {
|
|
// type args struct {
|
|
// domain string
|
|
// rec *models.RecordConfig
|
|
// }
|
|
// tests := []struct {
|
|
// name string
|
|
// args args
|
|
// want string
|
|
// }{
|
|
// // TODO: Add test cases.
|
|
// }
|
|
// for _, tt := range tests {
|
|
// t.Run(tt.name, func(t *testing.T) {
|
|
// if got := generatePSCreate(tt.args.domain, tt.args.rec); got != tt.want {
|
|
// t.Errorf("generatePSCreate() = %v, want %v", got, tt.want)
|
|
// }
|
|
// })
|
|
// }
|
|
// }
|
|
|
|
func Test_generatePSModify(t *testing.T) {
|
|
|
|
recA1 := &models.RecordConfig{
|
|
Type: "A",
|
|
Name: "@",
|
|
}
|
|
recA1.SetTarget("1.2.3.4")
|
|
recA2 := &models.RecordConfig{
|
|
Type: "A",
|
|
Name: "@",
|
|
}
|
|
recA2.SetTarget("10.20.30.40")
|
|
|
|
recMX1 := &models.RecordConfig{
|
|
Type: "MX",
|
|
Name: "@",
|
|
MxPreference: 5,
|
|
}
|
|
recMX1.SetTarget("foo.com.")
|
|
recMX2 := &models.RecordConfig{
|
|
Type: "MX",
|
|
Name: "@",
|
|
MxPreference: 50,
|
|
}
|
|
recMX2.SetTarget("foo2.com.")
|
|
|
|
type args struct {
|
|
domain string
|
|
dnsserver string
|
|
old *models.RecordConfig
|
|
rec *models.RecordConfig
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
want string
|
|
}{
|
|
{name: "A", args: args{domain: "example.com", dnsserver: "", old: recA1, rec: recA2},
|
|
want: `echo DELETE "A" "@" "..." ; Remove-DnsServerResourceRecord -Force -ZoneName "example.com" -Name "@" -RRType "A" -RecordData "1.2.3.4" ; echo CREATE "A" "@" "..." ; Add-DnsServerResourceRecord -ZoneName "example.com" -Name "@" -TimeToLive $(New-TimeSpan -Seconds 0) -A -IPv4Address "10.20.30.40"`,
|
|
},
|
|
{name: "MX1", args: args{domain: "example.com", dnsserver: "", old: recMX1, rec: recMX2},
|
|
want: `echo DELETE "MX" "@" "..." ; Remove-DnsServerResourceRecord -Force -ZoneName "example.com" -Name "@" -RRType "MX" -RecordData 5,"foo.com." ; echo CREATE "MX" "@" "..." ; Add-DnsServerResourceRecord -ZoneName "example.com" -Name "@" -TimeToLive $(New-TimeSpan -Seconds 0) -MX -MailExchange "foo2.com." -Preference 50`,
|
|
},
|
|
{name: "A-remote", args: args{domain: "example.com", dnsserver: "myremote", old: recA1, rec: recA2},
|
|
want: `echo DELETE "A" "@" "..." ; Remove-DnsServerResourceRecord -ComputerName "myremote" -Force -ZoneName "example.com" -Name "@" -RRType "A" -RecordData "1.2.3.4" ; echo CREATE "A" "@" "..." ; Add-DnsServerResourceRecord -ComputerName "myremote" -ZoneName "example.com" -Name "@" -TimeToLive $(New-TimeSpan -Seconds 0) -A -IPv4Address "10.20.30.40"`,
|
|
},
|
|
{name: "MX1-remote", args: args{domain: "example.com", dnsserver: "yourremote", old: recMX1, rec: recMX2},
|
|
want: `echo DELETE "MX" "@" "..." ; Remove-DnsServerResourceRecord -ComputerName "yourremote" -Force -ZoneName "example.com" -Name "@" -RRType "MX" -RecordData 5,"foo.com." ; echo CREATE "MX" "@" "..." ; Add-DnsServerResourceRecord -ComputerName "yourremote" -ZoneName "example.com" -Name "@" -TimeToLive $(New-TimeSpan -Seconds 0) -MX -MailExchange "foo2.com." -Preference 50`,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := generatePSModify(tt.args.dnsserver, tt.args.domain, tt.args.old, tt.args.rec); strings.TrimSpace(got) != strings.TrimSpace(tt.want) {
|
|
t.Errorf("generatePSModify() = got=(\n%s\n) want=(\n%s\n)", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|