@@ -21,8 +21,10 @@ import (
2121 "testing"
2222
2323 "github.com/google/go-cmp/cmp"
24+ kerrors "k8s.io/apimachinery/pkg/api/errors"
2425 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2526 "k8s.io/apimachinery/pkg/runtime"
27+ "k8s.io/apimachinery/pkg/runtime/schema"
2628 "sigs.k8s.io/controller-runtime/pkg/client"
2729
2830 xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1"
@@ -356,59 +358,85 @@ func TestResolveReferences(t *testing.T) {
356358}
357359
358360func TestRetryingCriticalAnnotationUpdater (t * testing.T ) {
359-
360361 errBoom := errors .New ("boom" )
361362
362363 type args struct {
363364 ctx context.Context
364365 o client.Object
365366 }
367+ type want struct {
368+ err error
369+ o client.Object
370+ }
371+
372+ setLabels := func (obj client.Object ) error {
373+ obj .SetLabels (map [string ]string {"getcalled" : "true" })
374+ return nil
375+ }
376+ objectReturnedByGet := & fake.Managed {}
377+ setLabels (objectReturnedByGet )
366378
367379 cases := map [string ]struct {
368380 reason string
369- c client. Client
381+ c * test. MockClient
370382 args args
371- want error
383+ want want
372384 }{
373- "GetError " : {
385+ "UpdateConflictGetError " : {
374386 reason : "We should return any error we encounter getting the supplied object" ,
375387 c : & test.MockClient {
376- MockGet : test .NewMockGetFn (errBoom ),
388+ MockGet : test .NewMockGetFn (errBoom , setLabels ),
389+ MockUpdate : test .NewMockUpdateFn (kerrors .NewConflict (schema.GroupResource {
390+ Group : "foo.com" ,
391+ Resource : "bars" ,
392+ }, "abc" , errBoom )),
377393 },
378394 args : args {
379395 o : & fake.Managed {},
380396 },
381- want : errors .Wrap (errBoom , errUpdateCriticalAnnotations ),
397+ want : want {
398+ err : errors .Wrap (errBoom , errUpdateCriticalAnnotations ),
399+ o : objectReturnedByGet ,
400+ },
382401 },
383402 "UpdateError" : {
384403 reason : "We should return any error we encounter updating the supplied object" ,
385404 c : & test.MockClient {
386- MockGet : test .NewMockGetFn (nil ),
405+ MockGet : test .NewMockGetFn (nil , setLabels ),
387406 MockUpdate : test .NewMockUpdateFn (errBoom ),
388407 },
389408 args : args {
390409 o : & fake.Managed {},
391410 },
392- want : errors .Wrap (errBoom , errUpdateCriticalAnnotations ),
411+ want : want {
412+ err : errors .Wrap (errBoom , errUpdateCriticalAnnotations ),
413+ o : & fake.Managed {},
414+ },
393415 },
394416 "Success" : {
395417 reason : "We should return without error if we successfully update our annotations" ,
396418 c : & test.MockClient {
397- MockGet : test .NewMockGetFn (nil ),
419+ MockGet : test .NewMockGetFn (nil , setLabels ),
398420 MockUpdate : test .NewMockUpdateFn (errBoom ),
399421 },
400422 args : args {
401423 o : & fake.Managed {},
402424 },
403- want : errors .Wrap (errBoom , errUpdateCriticalAnnotations ),
425+ want : want {
426+ err : errors .Wrap (errBoom , errUpdateCriticalAnnotations ),
427+ o : & fake.Managed {},
428+ },
404429 },
405430 }
406431
407432 for name , tc := range cases {
408433 t .Run (name , func (t * testing.T ) {
409434 u := NewRetryingCriticalAnnotationUpdater (tc .c )
410435 got := u .UpdateCriticalAnnotations (tc .args .ctx , tc .args .o )
411- if diff := cmp .Diff (tc .want , got , test .EquateErrors ()); diff != "" {
436+ if diff := cmp .Diff (tc .want .err , got , test .EquateErrors ()); diff != "" {
437+ t .Errorf ("\n %s\n u.UpdateCriticalAnnotations(...): -want, +got:\n %s" , tc .reason , diff )
438+ }
439+ if diff := cmp .Diff (tc .want .o , tc .args .o ); diff != "" {
412440 t .Errorf ("\n %s\n u.UpdateCriticalAnnotations(...): -want, +got:\n %s" , tc .reason , diff )
413441 }
414442 })
0 commit comments