Skip to content

Commit

Permalink
Merge pull request #2 from gerrowadat/testytest
Browse files Browse the repository at this point in the history
Completed tests for clouddns.go
  • Loading branch information
gerrowadat committed Nov 7, 2023
2 parents 4966b4a + 7952fab commit a8c00a9
Show file tree
Hide file tree
Showing 2 changed files with 157 additions and 4 deletions.
8 changes: 4 additions & 4 deletions clouddns.go
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ func buildNomadDnsChange(dnsSpec *CloudDNSSpec, tasks []TaskInfo, pruneMissing b
return nil, err
}

ret := buildDnsChange(cloud_rrs, nomad_rrs, &pruneMissing)
ret := buildDnsChange(cloud_rrs, nomad_rrs, pruneMissing)

return ret, nil
}
Expand Down Expand Up @@ -322,12 +322,12 @@ func uploadZonefile(dnsSpec *CloudDNSSpec, zoneFilename *string, dryRun *bool, p
log.Fatal("Getting RRs for zone:", dnsSpec.zone)
}

change := buildDnsChange(cloud_rrs, zone_rrs, pruneMissing)
change := buildDnsChange(cloud_rrs, zone_rrs, *pruneMissing)

return processCloudDnsChange(dnsSpec, change)
}

func buildDnsChange(cloud_rrs, zone_rrs []*dns.ResourceRecordSet, prune_missing *bool) *dns.Change {
func buildDnsChange(cloud_rrs, zone_rrs []*dns.ResourceRecordSet, prune_missing bool) *dns.Change {

ret := dns.Change{}

Expand All @@ -350,7 +350,7 @@ func buildDnsChange(cloud_rrs, zone_rrs []*dns.ResourceRecordSet, prune_missing
ret.Additions = append(ret.Additions, z)
}
}
if *prune_missing {
if prune_missing {
for _, c := range cloud_rrs {
found := false
if c.Type == "SOA" || c.Type == "NS" {
Expand Down
153 changes: 153 additions & 0 deletions clouddns_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -408,3 +408,156 @@ func Test_mergeZoneEntryIntoRrsets(t *testing.T) {
})
}
}

func Test_buildTaskInfoToRrsets(t *testing.T) {
test_default_ttl := 60
type args struct {
tasks []TaskInfo
default_ttl *int
}
tests := []struct {
name string
args args
want []*dns.ResourceRecordSet
wantErr bool
}{
{
name: "EmptyTaskInfo",
args: args{
tasks: []TaskInfo{},
},
want: []*dns.ResourceRecordSet{},
wantErr: false,
},
{
name: "SimpleTaskInfo",
args: args{
tasks: []TaskInfo{
{
jobid: "doot",
ip: "1.2.3.4",
},
},
default_ttl: &test_default_ttl,
},
want: []*dns.ResourceRecordSet{
{
Name: "doot",
Type: "A",
Ttl: int64(test_default_ttl),
Rrdatas: []string{"1.2.3.4"},
},
},
wantErr: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := buildTaskInfoToRrsets(tt.args.tasks, tt.args.default_ttl)
if (err != nil) != tt.wantErr {
t.Errorf("buildTaskInfoToRrsets() error = %v, wantErr %v", err, tt.wantErr)
return
}
if !rrsetListEquals(got, tt.want) {
for _, rr := range tt.want {
t.Logf("Want: %s", describeRrset(rr))
}
for _, rr := range got {
t.Logf("Got : %s", describeRrset(rr))
}
t.Errorf("buildTaskInfoToRrsets() = %v, want %v", got, tt.want)
}
})
}
}

func Test_buildDnsChange(t *testing.T) {
simpleARecord := &dns.ResourceRecordSet{
Name: "doot.doot.",
Type: "A",
Rrdatas: []string{"1.2.3.4"},
}
otherARecord := &dns.ResourceRecordSet{
Name: "doot.doot.",
Type: "A",
Rrdatas: []string{"5.6.7.8"},
}
simpleCnameRecord := &dns.ResourceRecordSet{
Name: "otherdoot.doot.",
Type: "CNAME",
Rrdatas: []string{"doot.doot."},
}

type args struct {
cloud_rrs []*dns.ResourceRecordSet
zone_rrs []*dns.ResourceRecordSet
prune_missing bool
}
tests := []struct {
name string
args args
want *dns.Change
}{
{
name: "BothEmpty",
args: args{
cloud_rrs: []*dns.ResourceRecordSet{},
zone_rrs: []*dns.ResourceRecordSet{},
prune_missing: false,
},
want: &dns.Change{},
},
{
name: "SingleRecordIntoEmptyCloud",
args: args{
cloud_rrs: []*dns.ResourceRecordSet{},
zone_rrs: []*dns.ResourceRecordSet{simpleARecord},
prune_missing: false,
},
want: &dns.Change{
Additions: []*dns.ResourceRecordSet{simpleARecord},
},
},
{
name: "AdditionalRecordIntoNonEmptyCloud",
args: args{
cloud_rrs: []*dns.ResourceRecordSet{simpleCnameRecord},
zone_rrs: []*dns.ResourceRecordSet{simpleCnameRecord, simpleARecord},
prune_missing: false,
},
want: &dns.Change{
Additions: []*dns.ResourceRecordSet{simpleARecord},
},
},
{
name: "PruneMissing",
args: args{
cloud_rrs: []*dns.ResourceRecordSet{simpleCnameRecord, simpleARecord},
zone_rrs: []*dns.ResourceRecordSet{simpleCnameRecord},
prune_missing: true,
},
want: &dns.Change{
Deletions: []*dns.ResourceRecordSet{simpleARecord},
},
},
{
name: "ReplaceExistingRecord",
args: args{
cloud_rrs: []*dns.ResourceRecordSet{simpleARecord},
zone_rrs: []*dns.ResourceRecordSet{otherARecord},
prune_missing: true,
},
want: &dns.Change{
Deletions: []*dns.ResourceRecordSet{simpleARecord},
Additions: []*dns.ResourceRecordSet{otherARecord},
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := buildDnsChange(tt.args.cloud_rrs, tt.args.zone_rrs, tt.args.prune_missing); !reflect.DeepEqual(got, tt.want) {
t.Errorf("buildDnsChange() = %v, want %v", got, tt.want)
}
})
}
}

0 comments on commit a8c00a9

Please sign in to comment.