6
6
7
7
"encoding/json"
8
8
9
+ "fmt"
10
+
9
11
"github.com/aerogear/mobile-cli/pkg/apis/servicecatalog/v1beta1"
10
12
"github.com/aerogear/mobile-cli/pkg/client/servicecatalog/clientset/versioned"
11
13
scFake "github.com/aerogear/mobile-cli/pkg/client/servicecatalog/clientset/versioned/fake"
@@ -18,6 +20,166 @@ import (
18
20
ktesting "k8s.io/client-go/testing"
19
21
)
20
22
23
+ func TestServicesCmd_DeleteServiceInstanceCmd (t * testing.T ) {
24
+ cases := []struct {
25
+ Name string
26
+ SvcCatalogClient func () versioned.Interface
27
+ K8Client func () kubernetes.Interface
28
+ ExpectError bool
29
+ ValidateErr func (t * testing.T , err error )
30
+ Flags []string
31
+ Args []string
32
+ }{
33
+
34
+ {
35
+ Name : "test if no service instance id passed that error returned" ,
36
+ SvcCatalogClient : func () versioned.Interface {
37
+ fake := & scFake.Clientset {}
38
+ return fake
39
+ },
40
+ K8Client : func () kubernetes.Interface {
41
+ return & kFake.Clientset {}
42
+ },
43
+ ExpectError : true ,
44
+ ValidateErr : func (t * testing.T , err error ) {
45
+ if err == nil {
46
+ t .Fatalf ("expected an error but did not get one" )
47
+ }
48
+ if err .Error () != "expected a serviceInstanceID" {
49
+ t .Fatalf ("expected error to be %s but got %v" , "expected a serviceInstanceID" , err )
50
+ }
51
+ },
52
+ Flags : []string {"--namespace=test" , "-o=json" },
53
+ Args : []string {},
54
+ },
55
+
56
+ {
57
+ Name : "test if error occurs getting service instance that an error is returned" ,
58
+ SvcCatalogClient : func () versioned.Interface {
59
+ fake := & scFake.Clientset {}
60
+ fake .AddReactor ("get" , "serviceinstances" , func (action ktesting.Action ) (handled bool , ret runtime.Object , err error ) {
61
+ return true , nil , fmt .Errorf ("error in get" )
62
+ })
63
+ return fake
64
+ },
65
+ K8Client : func () kubernetes.Interface {
66
+ return & kFake.Clientset {}
67
+ },
68
+ ExpectError : true ,
69
+ ValidateErr : func (t * testing.T , err error ) {
70
+ if err == nil {
71
+ t .Fatalf ("expected an error but did not get one" )
72
+ }
73
+ if err .Error () != "error in get" {
74
+ t .Fatalf ("expected error to be %s but got %v" , "error in get" , err )
75
+ }
76
+ },
77
+ Flags : []string {"--namespace=test" , "-o=json" },
78
+ Args : []string {"someid" },
79
+ },
80
+ {
81
+ Name : "test if error occurs deleting service instance that an error is returned" ,
82
+ SvcCatalogClient : func () versioned.Interface {
83
+ fake := & scFake.Clientset {}
84
+ fake .AddReactor ("get" , "serviceinstances" , func (action ktesting.Action ) (handled bool , ret runtime.Object , err error ) {
85
+ return true , nil , nil
86
+ })
87
+ fake .AddReactor ("delete" , "serviceinstances" , func (action ktesting.Action ) (handled bool , ret runtime.Object , err error ) {
88
+ return true , nil , fmt .Errorf ("error in delete" )
89
+ })
90
+ return fake
91
+ },
92
+ K8Client : func () kubernetes.Interface {
93
+ return & kFake.Clientset {}
94
+ },
95
+ ExpectError : true ,
96
+ ValidateErr : func (t * testing.T , err error ) {
97
+ if err == nil {
98
+ t .Fatalf ("expected an error but did not get one" )
99
+ }
100
+ if err .Error () != "error in delete" {
101
+ t .Fatalf ("expected error to be %s but got %v" , "error in delete" , err )
102
+ }
103
+ },
104
+ Flags : []string {"--namespace=test" , "-o=json" },
105
+ Args : []string {"someid" },
106
+ },
107
+ {
108
+ Name : "test successful delete" ,
109
+ SvcCatalogClient : func () versioned.Interface {
110
+ fake := & scFake.Clientset {}
111
+ fake .AddReactor ("get" , "serviceinstances" , func (action ktesting.Action ) (handled bool , ret runtime.Object , err error ) {
112
+ return true , nil , nil
113
+ })
114
+ fake .AddReactor ("delete" , "serviceinstances" , func (action ktesting.Action ) (handled bool , ret runtime.Object , err error ) {
115
+ return true , & v1beta1.ServiceInstance {
116
+ ObjectMeta : metav1.ObjectMeta {GenerateName : "test" }}, nil
117
+ })
118
+ return fake
119
+ },
120
+ K8Client : func () kubernetes.Interface {
121
+ return & kFake.Clientset {}
122
+ },
123
+ ExpectError : false ,
124
+ ValidateErr : func (t * testing.T , err error ) {
125
+ if err != nil {
126
+ t .Fatalf ("expected no error but got %v" , err )
127
+ }
128
+ },
129
+
130
+ Flags : []string {"--namespace=test" , "-o=json" },
131
+ Args : []string {"someid" },
132
+ },
133
+
134
+ {
135
+ Name : "test error on missing namespace" ,
136
+ SvcCatalogClient : func () versioned.Interface {
137
+ fake := & scFake.Clientset {}
138
+ return fake
139
+ },
140
+ K8Client : func () kubernetes.Interface {
141
+ return & kFake.Clientset {}
142
+ },
143
+ ExpectError : true ,
144
+ ValidateErr : func (t * testing.T , err error ) {
145
+ if err == nil {
146
+ t .Fatalf ("expected an error but didn't got one" )
147
+ }
148
+ if err .Error () != "failed to get namespace: no namespace present. Cannot continue. Please set the --namespace flag or the KUBECTL_PLUGINS_CURRENT_NAMESPACE env var" {
149
+ t .Fatalf ("Expected error 'failed to get namespace: no namespace present. Cannot continue. Please set the --namespace flag or the KUBECTL_PLUGINS_CURRENT_NAMESPACE env var' but got %v" , err )
150
+ }
151
+ },
152
+ Flags : []string {"-o=json" },
153
+ Args : []string {"someid" },
154
+ },
155
+ }
156
+
157
+ for _ , tc := range cases {
158
+ t .Run (tc .Name , func (t * testing.T ) {
159
+ var out bytes.Buffer
160
+ root := cmd .NewRootCmd ()
161
+ deleteClient := cmd .NewDeleteComand ()
162
+ serviceCmd := cmd .NewServicesCmd (tc .SvcCatalogClient (), tc .K8Client (), & out )
163
+ deleteServiceInstCmd := serviceCmd .DeleteServiceInstanceCmd ()
164
+ deleteClient .AddCommand (deleteServiceInstCmd )
165
+ root .AddCommand (deleteClient )
166
+ if err := deleteServiceInstCmd .ParseFlags (tc .Flags ); err != nil {
167
+ t .Fatal ("failed to parse flags " , err )
168
+ }
169
+ err := deleteServiceInstCmd .RunE (deleteServiceInstCmd , tc .Args )
170
+ if err != nil && ! tc .ExpectError {
171
+ t .Fatal ("did not expect an error but gone one " , err )
172
+ }
173
+ if err == nil && tc .ExpectError {
174
+ t .Fatal ("expected an error but got none" )
175
+ }
176
+ if tc .ValidateErr != nil {
177
+ tc .ValidateErr (t , err )
178
+ }
179
+ })
180
+ }
181
+ }
182
+
21
183
func TestServicesCmd_ListServicesCmd (t * testing.T ) {
22
184
cases := []struct {
23
185
Name string
0 commit comments