package store_test import ( "context" "slices" "strings" "testing" "atlas9.dev/c/core" "atlas9.dev/c/core/dbi" ) func generateIDs(n int) []core.ID { ids := make([]core.ID, n) for i := range n { ids[i] = core.NewID("t") } slices.SortFunc(ids, func(a, b core.ID) int { return strings.Compare(a.String(), b.String()) }) return ids } // insertMemberGrant inserts a member grant directly into the grants table, // bypassing the grant store. Used in test harnesses to establish tenant // membership without depending on the store under test. func insertMemberGrant(t *testing.T, db dbi.DBI, ctx context.Context, tenant, user core.ID) { t.Helper() _, err := db.Exec(ctx, ` INSERT INTO grants (tenant, type, principal, role, path, system) VALUES ($1, 'user', $2, 'member', '', false) `, tenant, user) if err != nil { t.Fatalf("insertMemberGrant: %v", err) } } // insertOwnerGrant inserts an owner grant directly into the grants table, // bypassing the grant store and the last-owner guard. func insertOwnerGrant(t *testing.T, db dbi.DBI, ctx context.Context, tenant, user core.ID) { t.Helper() _, err := db.Exec(ctx, ` INSERT INTO grants (tenant, type, principal, role, path, system) VALUES ($1, 'user', $2, 'owner', '', false) `, tenant, user) if err != nil { t.Fatalf("insertOwnerGrant: %v", err) } }