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) } }) } }