github.com/navikt/knorten@v0.0.0-20240419132333-1333f46ed8b6/pkg/api/usergsm_test.go (about) 1 package api 2 3 import ( 4 "context" 5 "encoding/json" 6 "fmt" 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 ) 13 14 func TestUserGSMAPI(t *testing.T) { 15 ctx := context.Background() 16 17 t.Run("create User Google Secret Manager", func(t *testing.T) { 18 oldEvents, err := repo.EventsGetType(ctx, database.EventTypeCreateUserGSM) 19 if err != nil { 20 t.Error(err) 21 } 22 23 resp, err := server.Client().PostForm(fmt.Sprintf("%v/secret/new", server.URL), nil) 24 if err != nil { 25 t.Error(err) 26 } 27 defer resp.Body.Close() 28 29 events, err := repo.EventsGetType(ctx, database.EventTypeCreateUserGSM) 30 if err != nil { 31 t.Error(err) 32 } 33 34 newEvents := getNewEvents(oldEvents, events) 35 secretManager, err := getUserGSMEvent(newEvents, testUser.Email) 36 if err != nil { 37 t.Error(err) 38 } 39 40 want := gensql.UserGoogleSecretManager{ 41 Owner: testUser.Email, 42 Name: getNormalizedNameFromEmail(testUser.Email), 43 } 44 if diff := cmp.Diff(want, secretManager); diff != "" { 45 t.Errorf("mismatch (-want +got):\n%s", diff) 46 } 47 }) 48 49 t.Run("delete User Google Secret Manager", func(t *testing.T) { 50 resp, err := server.Client().PostForm(fmt.Sprintf("%v/secret/delete", server.URL), nil) 51 if err != nil { 52 t.Error(err) 53 } 54 defer resp.Body.Close() 55 56 events, err := repo.EventsGetType(ctx, database.EventTypeDeleteUserGSM) 57 if err != nil { 58 t.Error(err) 59 } 60 61 if !deleteEventCreatedForTeam(events, testUser.Email) { 62 t.Errorf("delete secret: no event registered for user %v", testUser.Email) 63 } 64 }) 65 } 66 67 func getUserGSMEvent(events []gensql.Event, user string) (gensql.UserGoogleSecretManager, error) { 68 for _, event := range events { 69 payload := gensql.UserGoogleSecretManager{} 70 err := json.Unmarshal(event.Payload, &payload) 71 if err != nil { 72 return gensql.UserGoogleSecretManager{}, err 73 } 74 75 if payload.Owner == user { 76 return payload, nil 77 } 78 } 79 80 return gensql.UserGoogleSecretManager{}, nil 81 }