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  }