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}