Skip to content

Commit

Permalink
Delete NS and A records within an aws hosted zone.
Browse files Browse the repository at this point in the history
  • Loading branch information
Genevieve L'Esperance committed Jan 9, 2020
1 parent 5dad352 commit 4322b1e
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 1 deletion.
2 changes: 1 addition & 1 deletion aws/route53/record_sets.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ func (r RecordSets) DeleteAll(hostedZoneId *string, hostedZoneName string, recor
func (r RecordSets) DeleteWithFilter(hostedZoneId *string, hostedZoneName string, records []*awsroute53.ResourceRecordSet, filter string) error {
var changes []*awsroute53.Change
for _, record := range records {
if strings.Contains(*record.Name, filter) && *record.Type == "A" {
if strings.Contains(*record.Name, filter) && (*record.Type == "A" || *record.Type == "NS") {
changes = append(changes, &awsroute53.Change{
Action: aws.String("DELETE"),
ResourceRecordSet: record,
Expand Down
20 changes: 20 additions & 0 deletions aws/route53/record_sets_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,26 @@ var _ = Describe("RecordSets", func() {
Expect(client.ChangeResourceRecordSetsCall.Receives.ChangeResourceRecordSetsInput.ChangeBatch.Changes[0].ResourceRecordSet.Type).To(Equal(aws.String("A")))
})

Context("if the record set is NS type", func() {
BeforeEach(func() {
records = []*awsroute53.ResourceRecordSet{
{Name: aws.String(fmt.Sprintf("kiwi-%s", hostedZoneName)), Type: aws.String("A")},
{Name: aws.String(fmt.Sprintf("banana-%s", hostedZoneName)), Type: aws.String("NS")},
}
filter = "banana"
})

It("deletes the record sets that contain the filter", func() {
err := recordSets.DeleteWithFilter(hostedZoneId, hostedZoneName, records, filter)
Expect(err).NotTo(HaveOccurred())

Expect(client.ChangeResourceRecordSetsCall.CallCount).To(Equal(1))
Expect(client.ChangeResourceRecordSetsCall.Receives.ChangeResourceRecordSetsInput.HostedZoneId).To(Equal(hostedZoneId))
Expect(client.ChangeResourceRecordSetsCall.Receives.ChangeResourceRecordSetsInput.ChangeBatch.Changes[0].Action).To(Equal(aws.String("DELETE")))
Expect(client.ChangeResourceRecordSetsCall.Receives.ChangeResourceRecordSetsInput.ChangeBatch.Changes[0].ResourceRecordSet.Type).To(Equal(aws.String("NS")))
})
})

Context("when the client fails to delete resource record sets", func() {
BeforeEach(func() {
client.ChangeResourceRecordSetsCall.Returns.Error = errors.New("ruhroh")
Expand Down

0 comments on commit 4322b1e

Please sign in to comment.