MCPcopy Index your code
hub / github.com/bytebase/bytebase / TestVCSProviderUserActuatorAndExport

Function TestVCSProviderUserActuatorAndExport

backend/tests/gitops_test.go:498–549  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

496}
497
498func TestVCSProviderUserActuatorAndExport(t *testing.T) {
499 t.Parallel()
500 a := require.New(t)
501 ctx := context.Background()
502 ctl := &controller{}
503 ctx, err := ctl.StartServerWithExternalPg(ctx)
504 a.NoError(err)
505 defer ctl.Close(ctx)
506
507 stores := getStore(t, ctl.server)
508 workspaceID, err := stores.GetWorkspaceID(ctx)
509 a.NoError(err)
510
511 ok, err := stores.TouchVCSProviderUser(ctx, workspaceID, &store.VCSProviderUserMessage{
512 VCSType: v1pb.VCSType_GITHUB,
513 UserID: "1001",
514 Payload: &storepb.VCSProviderUserPayload{
515 UserName: "alice",
516 DisplayName: "Alice",
517 },
518 }, 90*24*time.Hour, 20)
519 a.NoError(err)
520 a.True(ok)
521
522 _, err = stores.GetDB().ExecContext(ctx, `
523 INSERT INTO vcs_provider_user (workspace, vcs_type, user_id, last_seen_at, payload)
524 VALUES ($1, $2, 'inactive-1', now() - interval '91 days', '{"userName":"inactive"}'::jsonb)
525 `, workspaceID, v1pb.VCSType_GITHUB.String())
526 a.NoError(err)
527
528 info, err := ctl.actuatorServiceClient.GetActuatorInfo(ctx, connect.NewRequest(&v1pb.GetActuatorInfoRequest{}))
529 a.NoError(err)
530 a.Equal(int32(1), info.Msg.ActiveVcsUserCount)
531
532 _, err = stores.GetDB().ExecContext(ctx, `
533 INSERT INTO vcs_provider_user (workspace, vcs_type, user_id, last_seen_at, payload)
534 VALUES ($1, $2, '1002', now(), '{"userName":"bob"}'::jsonb)
535 `, workspaceID, v1pb.VCSType_GITHUB.String())
536 a.NoError(err)
537 info, err = ctl.actuatorServiceClient.GetActuatorInfo(ctx, connect.NewRequest(&v1pb.GetActuatorInfoRequest{}))
538 a.NoError(err)
539 a.Equal(int32(1), info.Msg.ActiveVcsUserCount)
540
541 body, err := ctl.subscriptionServiceClient.ExportVCSProviderUsers(ctx, connect.NewRequest(&v1pb.ExportVCSProviderUsersRequest{}))
542 a.NoError(err)
543 a.Equal("text/csv; charset=utf-8", body.Msg.ContentType)
544 csv := string(body.Msg.Data)
545 a.Contains(csv, "vcs_type,user_id,user_name,display_name,last_seen_at")
546 a.Contains(csv, "GITHUB,1001,alice,Alice,")
547 a.Contains(csv, "GITHUB,1002,bob,,")
548 a.NotContains(csv, "inactive-1")
549}
550
551func TestVCSProviderUserExportEscapesSpreadsheetFormulas(t *testing.T) {
552 t.Parallel()

Callers

nothing calls this directly

Calls 10

CloseMethod · 0.95
getStoreFunction · 0.85
TouchVCSProviderUserMethod · 0.80
GetWorkspaceIDMethod · 0.65
GetDBMethod · 0.65
StringMethod · 0.65
GetActuatorInfoMethod · 0.65
EqualMethod · 0.65

Tested by

no test coverage detected