Parent directory

repo_visibility_test.go

960 bytes
 1package backend
 2
 3import (
 4	"context"
 5	"testing"
 6
 7	"github.com/charmbracelet/soft-serve/pkg/access"
 8	"github.com/charmbracelet/soft-serve/pkg/db"
 9	"github.com/charmbracelet/soft-serve/pkg/proto"
10	"github.com/matryer/is"
11)
12
13// TestRepositoryReflectsDatabase verifies that access checks see a
14// visibility change as soon as it is committed, whoever committed it
15// (GHSA-f3fj-9625-rv3m).
16func TestRepositoryReflectsDatabase(t *testing.T) {
17	is := is.New(t)
18	be, _ := newTestBackend(t)
19	ctx := context.Background()
20
21	_, err := be.CreateRepository(ctx, "repo", nil, proto.RepositoryOptions{})
22	is.NoErr(err)
23	is.Equal(be.AccessLevelForUser(ctx, "repo", nil), access.ReadOnlyAccess)
24
25	is.NoErr(be.db.TransactionContext(ctx, func(tx *db.Tx) error {
26		return be.store.SetRepoIsPrivateByName(ctx, tx, "repo", true)
27	}))
28
29	r, err := be.Repository(ctx, "repo")
30	is.NoErr(err)
31	is.True(r.IsPrivate())
32	is.Equal(be.AccessLevelForUser(ctx, "repo", nil), access.NoAccess)
33}