Skip to content

Commit 8480aea

Browse files
author
Genevieve LEsperance
committed
Use filter for azure delete calls.
1 parent f615598 commit 8480aea

File tree

4 files changed

+47
-28
lines changed

4 files changed

+47
-28
lines changed

azure/deleter.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ type logger interface {
1616
}
1717

1818
type resource interface {
19-
Delete() error
19+
Delete(filter string) error
2020
}
2121

2222
type Deleter struct {
@@ -25,7 +25,7 @@ type Deleter struct {
2525

2626
func (d Deleter) Delete(filter string) error {
2727
for _, r := range d.resources {
28-
if err := r.Delete(); err != nil {
28+
if err := r.Delete(filter); err != nil {
2929
return err
3030
}
3131
}

azure/fakes/logger.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ type Logger struct {
1212
}
1313

1414
PromptCall struct {
15-
Receives struct {
15+
CallCount int
16+
Receives struct {
1617
Message string
1718
}
1819
Returns struct {
@@ -29,6 +30,7 @@ func (l *Logger) Printf(message string, a ...interface{}) {
2930
}
3031

3132
func (l *Logger) Prompt(message string) bool {
33+
l.PromptCall.CallCount++
3234
l.PromptCall.Receives.Message = message
3335

3436
return l.PromptCall.Returns.Proceed

azure/groups.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@ package azure
22

33
import (
44
"fmt"
5+
"strings"
56

67
"github.com/Azure/azure-sdk-for-go/arm/resources/resources"
78
"github.com/Azure/go-autorest/autorest"
89
)
910

1011
type groupsClient interface {
11-
List(filter string, top *int32) (resources.GroupListResult, error)
12+
List(query string, top *int32) (resources.GroupListResult, error)
1213
Delete(name string, channel <-chan struct{}) (<-chan autorest.Response, <-chan error)
1314
}
1415

@@ -24,7 +25,7 @@ func NewGroups(client groupsClient, logger logger) Groups {
2425
}
2526
}
2627

27-
func (r Groups) Delete() error {
28+
func (r Groups) Delete(filter string) error {
2829
groups, err := r.client.List("", nil)
2930
if err != nil {
3031
return fmt.Errorf("Listing resource groups: %s", err)
@@ -33,6 +34,10 @@ func (r Groups) Delete() error {
3334
for _, g := range *groups.Value {
3435
n := *g.Name
3536

37+
if !strings.Contains(n, filter) {
38+
continue
39+
}
40+
3641
proceed := r.logger.Prompt(fmt.Sprintf("Are you sure you want to delete resource group %s?", n))
3742
if !proceed {
3843
continue

azure/groups_test.go

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,15 @@ var _ = Describe("Groups", func() {
1515
var (
1616
client *fakes.GroupsClient
1717
logger *fakes.Logger
18+
filter string
1819

1920
groups azure.Groups
2021
)
2122

2223
BeforeEach(func() {
2324
client = &fakes.GroupsClient{}
2425
logger = &fakes.Logger{}
26+
filter = "banana"
2527

2628
groups = azure.NewGroups(client, logger)
2729
})
@@ -31,7 +33,7 @@ var _ = Describe("Groups", func() {
3133
logger.PromptCall.Returns.Proceed = true
3234
client.ListCall.Returns.Output = resources.GroupListResult{
3335
Value: &[]resources.Group{{
34-
Name: aws.String("banana"),
36+
Name: aws.String("banana-group"),
3537
}},
3638
}
3739
errChan := make(chan error, 1)
@@ -40,13 +42,13 @@ var _ = Describe("Groups", func() {
4042
})
4143

4244
It("deletes resource groups", func() {
43-
err := groups.Delete()
45+
err := groups.Delete(filter)
4446
Expect(err).NotTo(HaveOccurred())
4547

4648
Expect(client.ListCall.CallCount).To(Equal(1))
4749
Expect(client.DeleteCall.CallCount).To(Equal(1))
48-
Expect(client.DeleteCall.Receives.Name).To(Equal("banana"))
49-
Expect(logger.PrintfCall.Messages).To(Equal([]string{"SUCCESS deleting resource group banana\n"}))
50+
Expect(client.DeleteCall.Receives.Name).To(Equal("banana-group"))
51+
Expect(logger.PrintfCall.Messages).To(Equal([]string{"SUCCESS deleting resource group banana-group\n"}))
5052
})
5153

5254
Context("when client fails to list resource groups", func() {
@@ -55,19 +57,43 @@ var _ = Describe("Groups", func() {
5557
})
5658

5759
It("returns the error", func() {
58-
err := groups.Delete()
60+
err := groups.Delete(filter)
5961
Expect(err).To(MatchError("Listing resource groups: some error"))
6062

6163
Expect(client.ListCall.CallCount).To(Equal(1))
6264
Expect(client.DeleteCall.CallCount).To(Equal(0))
6365
})
6466
})
6567

68+
Context("when the user responds no to the prompt", func() {
69+
BeforeEach(func() {
70+
logger.PromptCall.Returns.Proceed = false
71+
})
72+
73+
It("does not delete the resource group", func() {
74+
err := groups.Delete(filter)
75+
Expect(err).NotTo(HaveOccurred())
76+
77+
Expect(logger.PromptCall.Receives.Message).To(Equal("Are you sure you want to delete resource group banana-group?"))
78+
Expect(client.DeleteCall.CallCount).To(Equal(0))
79+
})
80+
})
81+
82+
Context("when the resource group name does not contain the filter", func() {
83+
It("does not delete it", func() {
84+
err := groups.Delete("grape")
85+
Expect(err).NotTo(HaveOccurred())
86+
87+
Expect(logger.PromptCall.CallCount).To(Equal(0))
88+
Expect(client.DeleteCall.CallCount).To(Equal(0))
89+
})
90+
})
91+
6692
Context("when client fails to delete the resource group", func() {
6793
BeforeEach(func() {
6894
client.ListCall.Returns.Output = resources.GroupListResult{
6995
Value: &[]resources.Group{{
70-
Name: aws.String("banana"),
96+
Name: aws.String("banana-group"),
7197
}},
7298
}
7399
errChan := make(chan error, 1)
@@ -76,27 +102,13 @@ var _ = Describe("Groups", func() {
76102
})
77103

78104
It("logs the error", func() {
79-
err := groups.Delete()
105+
err := groups.Delete(filter)
80106
Expect(err).NotTo(HaveOccurred())
81107

82108
Expect(client.ListCall.CallCount).To(Equal(1))
83109
Expect(client.DeleteCall.CallCount).To(Equal(1))
84-
Expect(client.DeleteCall.Receives.Name).To(Equal("banana"))
85-
Expect(logger.PrintfCall.Messages).To(Equal([]string{"ERROR deleting resource group banana: some error\n"}))
86-
})
87-
})
88-
89-
Context("when the user responds no to the prompt", func() {
90-
BeforeEach(func() {
91-
logger.PromptCall.Returns.Proceed = false
92-
})
93-
94-
It("does not delete the resource group", func() {
95-
err := groups.Delete()
96-
Expect(err).NotTo(HaveOccurred())
97-
98-
Expect(logger.PromptCall.Receives.Message).To(Equal("Are you sure you want to delete resource group banana?"))
99-
Expect(client.DeleteCall.CallCount).To(Equal(0))
110+
Expect(client.DeleteCall.Receives.Name).To(Equal("banana-group"))
111+
Expect(logger.PrintfCall.Messages).To(Equal([]string{"ERROR deleting resource group banana-group: some error\n"}))
100112
})
101113
})
102114
})

0 commit comments

Comments
 (0)