Skip to content

Commit eb6e96e

Browse files
committed
add unit tests for v2
Signed-off-by: Erhan Cagirici <erhan@upbound.io>
1 parent 83c3071 commit eb6e96e

11 files changed

Lines changed: 4292 additions & 421 deletions

pkg/reconciler/managed/api_test.go

Lines changed: 144 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,11 @@ func TestNameAsExternalName(t *testing.T) {
6161
client: &test.MockClient{MockUpdate: test.NewMockUpdateFn(errBoom)},
6262
args: args{
6363
ctx: context.Background(),
64-
mg: &fake.Managed{ObjectMeta: metav1.ObjectMeta{Name: testExternalName}},
64+
mg: &fake.LegacyManaged{ObjectMeta: metav1.ObjectMeta{Name: testExternalName}},
6565
},
6666
want: want{
6767
err: errors.Wrap(errBoom, errUpdateManaged),
68-
mg: &fake.Managed{ObjectMeta: metav1.ObjectMeta{
68+
mg: &fake.LegacyManaged{ObjectMeta: metav1.ObjectMeta{
6969
Name: testExternalName,
7070
Annotations: map[string]string{meta.AnnotationKeyExternalName: testExternalName},
7171
}},
@@ -75,11 +75,11 @@ func TestNameAsExternalName(t *testing.T) {
7575
client: &test.MockClient{MockUpdate: test.NewMockUpdateFn(nil)},
7676
args: args{
7777
ctx: context.Background(),
78-
mg: &fake.Managed{ObjectMeta: metav1.ObjectMeta{Name: testExternalName}},
78+
mg: &fake.LegacyManaged{ObjectMeta: metav1.ObjectMeta{Name: testExternalName}},
7979
},
8080
want: want{
8181
err: nil,
82-
mg: &fake.Managed{ObjectMeta: metav1.ObjectMeta{
82+
mg: &fake.LegacyManaged{ObjectMeta: metav1.ObjectMeta{
8383
Name: testExternalName,
8484
Annotations: map[string]string{meta.AnnotationKeyExternalName: testExternalName},
8585
}},
@@ -88,14 +88,14 @@ func TestNameAsExternalName(t *testing.T) {
8888
"UpdateNotNeeded": {
8989
args: args{
9090
ctx: context.Background(),
91-
mg: &fake.Managed{ObjectMeta: metav1.ObjectMeta{
91+
mg: &fake.LegacyManaged{ObjectMeta: metav1.ObjectMeta{
9292
Name: testExternalName,
9393
Annotations: map[string]string{meta.AnnotationKeyExternalName: "some-name"},
9494
}},
9595
},
9696
want: want{
9797
err: nil,
98-
mg: &fake.Managed{ObjectMeta: metav1.ObjectMeta{
98+
mg: &fake.LegacyManaged{ObjectMeta: metav1.ObjectMeta{
9999
Name: testExternalName,
100100
Annotations: map[string]string{meta.AnnotationKeyExternalName: "some-name"},
101101
}},
@@ -122,7 +122,7 @@ func TestNameAsExternalName(t *testing.T) {
122122
func TestAPISecretPublisher(t *testing.T) {
123123
errBoom := errors.New("boom")
124124

125-
mg := &fake.Managed{
125+
mg := &fake.LegacyManaged{
126126
ConnectionSecretWriterTo: fake.ConnectionSecretWriterTo{Ref: &xpv1.SecretReference{
127127
Namespace: "coolnamespace",
128128
Name: "coolsecret",
@@ -138,7 +138,7 @@ func TestAPISecretPublisher(t *testing.T) {
138138

139139
type args struct {
140140
ctx context.Context
141-
mg resource.Managed
141+
mg resource.LegacyManaged
142142
c ConnectionDetails
143143
}
144144

@@ -157,14 +157,14 @@ func TestAPISecretPublisher(t *testing.T) {
157157
reason: "A managed resource with a nil GetWriteConnectionSecretToReference should not publish a secret",
158158
args: args{
159159
ctx: context.Background(),
160-
mg: &fake.Managed{},
160+
mg: &fake.LegacyManaged{},
161161
},
162162
},
163163
"ApplyError": {
164164
reason: "An error applying the connection secret should be returned",
165165
fields: fields{
166166
secret: resource.ApplyFn(func(_ context.Context, _ client.Object, _ ...resource.ApplyOption) error { return errBoom }),
167-
typer: fake.SchemeWith(&fake.Managed{}),
167+
typer: fake.SchemeWith(&fake.LegacyManaged{}),
168168
},
169169
args: args{
170170
ctx: context.Background(),
@@ -187,7 +187,7 @@ func TestAPISecretPublisher(t *testing.T) {
187187
}
188188
return nil
189189
}),
190-
typer: fake.SchemeWith(&fake.Managed{}),
190+
typer: fake.SchemeWith(&fake.LegacyManaged{}),
191191
},
192192
args: args{
193193
ctx: context.Background(),
@@ -210,7 +210,7 @@ func TestAPISecretPublisher(t *testing.T) {
210210
}
211211
return nil
212212
}),
213-
typer: fake.SchemeWith(&fake.Managed{}),
213+
typer: fake.SchemeWith(&fake.LegacyManaged{}),
214214
},
215215
args: args{
216216
ctx: context.Background(),
@@ -239,6 +239,125 @@ func TestAPISecretPublisher(t *testing.T) {
239239
}
240240
}
241241

242+
func TestAPILocalSecretPublisher(t *testing.T) {
243+
errBoom := errors.New("boom")
244+
245+
mg := &fake.ModernManaged{
246+
LocalConnectionSecretWriterTo: fake.LocalConnectionSecretWriterTo{Ref: &xpv1.LocalSecretReference{
247+
Name: "coolsecret",
248+
}},
249+
}
250+
251+
cd := ConnectionDetails{"cool": {42}}
252+
253+
type fields struct {
254+
secret resource.Applicator
255+
typer runtime.ObjectTyper
256+
}
257+
258+
type args struct {
259+
ctx context.Context
260+
mg resource.ModernManaged
261+
c ConnectionDetails
262+
}
263+
264+
type want struct {
265+
err error
266+
published bool
267+
}
268+
269+
cases := map[string]struct {
270+
reason string
271+
fields fields
272+
args args
273+
want want
274+
}{
275+
"ResourceDoesNotPublishSecret": {
276+
reason: "A managed resource with a nil GetWriteConnectionSecretToReference should not publish a secret",
277+
args: args{
278+
ctx: context.Background(),
279+
mg: &fake.ModernManaged{},
280+
},
281+
},
282+
"ApplyError": {
283+
reason: "An error applying the connection secret should be returned",
284+
fields: fields{
285+
secret: resource.ApplyFn(func(_ context.Context, _ client.Object, _ ...resource.ApplyOption) error { return errBoom }),
286+
typer: fake.SchemeWith(&fake.ModernManaged{}),
287+
},
288+
args: args{
289+
ctx: context.Background(),
290+
mg: mg,
291+
},
292+
want: want{
293+
err: errors.Wrap(errBoom, errCreateOrUpdateSecret),
294+
},
295+
},
296+
"AlreadyPublished": {
297+
reason: "An up to date connection secret should result in no error and not being published",
298+
fields: fields{
299+
secret: resource.ApplyFn(func(ctx context.Context, o client.Object, ao ...resource.ApplyOption) error {
300+
want := resource.LocalConnectionSecretFor(mg, fake.GVK(mg))
301+
want.Data = cd
302+
for _, fn := range ao {
303+
if err := fn(ctx, o, want); err != nil {
304+
return err
305+
}
306+
}
307+
return nil
308+
}),
309+
typer: fake.SchemeWith(&fake.ModernManaged{}),
310+
},
311+
args: args{
312+
ctx: context.Background(),
313+
mg: mg,
314+
c: cd,
315+
},
316+
want: want{
317+
published: false,
318+
err: nil,
319+
},
320+
},
321+
"Success": {
322+
reason: "A successful application of the connection secret should result in no error",
323+
fields: fields{
324+
secret: resource.ApplyFn(func(_ context.Context, o client.Object, _ ...resource.ApplyOption) error {
325+
want := resource.LocalConnectionSecretFor(mg, fake.GVK(mg))
326+
want.Data = cd
327+
if diff := cmp.Diff(want, o); diff != "" {
328+
t.Errorf("-want, +got:\n%s", diff)
329+
}
330+
return nil
331+
}),
332+
typer: fake.SchemeWith(&fake.ModernManaged{}),
333+
},
334+
args: args{
335+
ctx: context.Background(),
336+
mg: mg,
337+
c: cd,
338+
},
339+
want: want{
340+
published: true,
341+
},
342+
},
343+
}
344+
345+
for name, tc := range cases {
346+
t.Run(name, func(t *testing.T) {
347+
a := &APILocalSecretPublisher{tc.fields.secret, tc.fields.typer}
348+
349+
got, gotErr := a.PublishConnection(tc.args.ctx, tc.args.mg, tc.args.c)
350+
if diff := cmp.Diff(tc.want.err, gotErr, test.EquateErrors()); diff != "" {
351+
t.Errorf("\n%s\nPublish(...): -wantErr, +gotErr:\n%s", tc.reason, diff)
352+
}
353+
354+
if diff := cmp.Diff(tc.want.published, got); diff != "" {
355+
t.Errorf("\n%s\nPublish(...): -wantPublished, +gotPublished:\n%s", tc.reason, diff)
356+
}
357+
})
358+
}
359+
}
360+
242361
type mockSimpleReferencer struct {
243362
resource.Managed
244363

@@ -260,7 +379,7 @@ func (r *mockSimpleReferencer) Equal(s *mockSimpleReferencer) bool {
260379
func TestResolveReferences(t *testing.T) {
261380
errBoom := errors.New("boom")
262381

263-
different := &fake.Managed{}
382+
different := &fake.LegacyManaged{}
264383

265384
type args struct {
266385
ctx context.Context
@@ -277,7 +396,7 @@ func TestResolveReferences(t *testing.T) {
277396
reason: "Should return early without error when the managed resource has no references.",
278397
args: args{
279398
ctx: context.Background(),
280-
mg: &fake.Managed{},
399+
mg: &fake.LegacyManaged{},
281400
},
282401
want: nil,
283402
},
@@ -289,7 +408,7 @@ func TestResolveReferences(t *testing.T) {
289408
args: args{
290409
ctx: context.Background(),
291410
mg: &mockSimpleReferencer{
292-
Managed: &fake.Managed{},
411+
Managed: &fake.LegacyManaged{},
293412
MockResolveReferences: func(context.Context, client.Reader) error {
294413
return errBoom
295414
},
@@ -305,7 +424,7 @@ func TestResolveReferences(t *testing.T) {
305424
args: args{
306425
ctx: context.Background(),
307426
mg: &mockSimpleReferencer{
308-
Managed: &fake.Managed{},
427+
Managed: &fake.LegacyManaged{},
309428
MockResolveReferences: func(context.Context, client.Reader) error {
310429
return nil
311430
},
@@ -380,8 +499,8 @@ func TestPrepareJSONMerge(t *testing.T) {
380499
"SuccessfulPatch": {
381500
reason: "Should successfully compute the JSON merge patch document.",
382501
args: args{
383-
existing: &fake.Managed{},
384-
resolved: &fake.Managed{
502+
existing: &fake.LegacyManaged{},
503+
resolved: &fake.LegacyManaged{
385504
ObjectMeta: metav1.ObjectMeta{
386505
Name: "resolved",
387506
},
@@ -424,7 +543,7 @@ func TestRetryingCriticalAnnotationUpdater(t *testing.T) {
424543
obj.SetLabels(map[string]string{"getcalled": "true"})
425544
return nil
426545
}
427-
objectReturnedByGet := &fake.Managed{}
546+
objectReturnedByGet := &fake.LegacyManaged{}
428547
setLabels(objectReturnedByGet)
429548

430549
cases := map[string]struct {
@@ -443,7 +562,7 @@ func TestRetryingCriticalAnnotationUpdater(t *testing.T) {
443562
}, "abc", errBoom)),
444563
},
445564
args: args{
446-
o: &fake.Managed{},
565+
o: &fake.LegacyManaged{},
447566
},
448567
want: want{
449568
err: errors.Wrap(errBoom, errUpdateCriticalAnnotations),
@@ -457,11 +576,11 @@ func TestRetryingCriticalAnnotationUpdater(t *testing.T) {
457576
MockUpdate: test.NewMockUpdateFn(errBoom),
458577
},
459578
args: args{
460-
o: &fake.Managed{},
579+
o: &fake.LegacyManaged{},
461580
},
462581
want: want{
463582
err: errors.Wrap(errBoom, errUpdateCriticalAnnotations),
464-
o: &fake.Managed{},
583+
o: &fake.LegacyManaged{},
465584
},
466585
},
467586
"SuccessfulGetAfterAConflict": {
@@ -474,7 +593,7 @@ func TestRetryingCriticalAnnotationUpdater(t *testing.T) {
474593
}, "abc", errBoom)),
475594
},
476595
args: args{
477-
o: &fake.Managed{},
596+
o: &fake.LegacyManaged{},
478597
},
479598
want: want{
480599
err: errors.Wrap(kerrors.NewConflict(schema.GroupResource{
@@ -491,11 +610,11 @@ func TestRetryingCriticalAnnotationUpdater(t *testing.T) {
491610
MockUpdate: test.NewMockUpdateFn(errBoom),
492611
},
493612
args: args{
494-
o: &fake.Managed{},
613+
o: &fake.LegacyManaged{},
495614
},
496615
want: want{
497616
err: errors.Wrap(errBoom, errUpdateCriticalAnnotations),
498-
o: &fake.Managed{},
617+
o: &fake.LegacyManaged{},
499618
},
500619
},
501620
}

0 commit comments

Comments
 (0)