github.com/navikt/knorten@v0.0.0-20240419132333-1333f46ed8b6/pkg/user/gsm_test.go (about) 1 package user 2 3 import ( 4 "context" 5 "database/sql" 6 "errors" 7 "testing" 8 9 "github.com/google/go-cmp/cmp" 10 "github.com/navikt/knorten/pkg/database" 11 "github.com/navikt/knorten/pkg/database/gensql" 12 "github.com/sirupsen/logrus" 13 ) 14 15 func TestUserGSM(t *testing.T) { 16 ctx := context.Background() 17 defaultManager := gensql.UserGoogleSecretManager{ 18 Owner: "dummy@nav.no", 19 Name: "compute-dummy", 20 } 21 22 t.Cleanup(func() { 23 instance, err := repo.UserGSMGet(ctx, defaultManager.Owner) 24 if err != nil && !errors.Is(err, sql.ErrNoRows) { 25 t.Error(err) 26 } 27 if err := repo.UserGSMDelete(ctx, instance.Owner); err != nil { 28 t.Error(err) 29 } 30 }) 31 32 type args struct { 33 manager gensql.UserGoogleSecretManager 34 } 35 36 type want struct { 37 manager gensql.UserGoogleSecretManager 38 err error 39 } 40 41 operation := func(ctx context.Context, eventType database.EventType, manager gensql.UserGoogleSecretManager, userClient *Client) bool { 42 switch eventType { 43 case database.EventTypeCreateUserGSM: 44 return userClient.CreateUserGSM(ctx, manager, logrus.StandardLogger()) 45 case database.EventTypeDeleteUserGSM: 46 return userClient.DeleteUserGSM(ctx, manager.Owner, logrus.StandardLogger()) 47 } 48 49 return true 50 } 51 52 teamTests := []struct { 53 name string 54 eventType database.EventType 55 args args 56 want want 57 }{ 58 { 59 name: "Create User Google Secret Manager", 60 eventType: database.EventTypeCreateUserGSM, 61 args: args{ 62 manager: defaultManager, 63 }, 64 want: want{ 65 manager: defaultManager, 66 }, 67 }, 68 { 69 name: "Delete User Google Secret Manager", 70 eventType: database.EventTypeDeleteUserGSM, 71 args: args{ 72 manager: defaultManager, 73 }, 74 want: want{ 75 manager: gensql.UserGoogleSecretManager{}, 76 err: sql.ErrNoRows, 77 }, 78 }, 79 } 80 81 for _, tt := range teamTests { 82 t.Run(tt.name, func(t *testing.T) { 83 client := NewClient(repo, "", "", "", true) 84 85 if retry := operation(context.Background(), tt.eventType, tt.args.manager, client); retry { 86 t.Errorf("%v failed, got retry return for %v", tt.eventType, tt.args.manager.Name) 87 } 88 89 manager, err := repo.UserGSMGet(context.Background(), tt.args.manager.Owner) 90 if !errors.Is(err, tt.want.err) { 91 t.Error(err) 92 } 93 94 if diff := cmp.Diff(manager, tt.want.manager); diff != "" { 95 t.Errorf("mismatch (-want +got):\n%s", diff) 96 } 97 }) 98 } 99 }