Something went wrong. Try again.
Monorepo for Tangled tangled.org
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118package spindle
import ( "context" "strings" "testing"
"tangled.org/core/api/org_tangled" "tangled.org/core/spindle/config" "tangled.org/core/spindle/db" "tangled.org/core/spindle/models")
func setAllowed(t *testing.T, d *db.DB, allowed bool) { t.Helper() change := db.RemoveFromAllowlist if allowed { change = db.AddToAllowlist } if err := change(d, testOwner); err != nil { t.Fatal(err) }}
func newPausedHookEnv(t *testing.T) *hookEnv { t.Helper() h := newHookEnv(t) // the server isn't started yet, nothing reads the config while it's set h.s.cfg.Server.Admission = config.AdmissionClosed h.s.cfg.Server.Owner = pausedOwner.String() return h}
func TestPausedOwnersPushFiresNoWebhookUntilReAdded(t *testing.T) { h := newPausedHookEnv(t) pushOf := func(sha string) *org_tangled.EventNotifyEvent_Input_Event { event := pushEvent("refs/heads/main", "skip-ci") event.EventPush.NewSha = strings.Repeat(sha, 40) return event }
setAllowed(t, h.s.db, true) h.notify(t, pushOf("3")) h.expectPush(t)
setAllowed(t, h.s.db, false) if pipeline := h.notify(t, pushOf("4")); pipeline != "" { t.Fatalf("a paused owner's push made pipeline %q", pipeline) } h.expectNoPush(t, "a paused owner's push fired a webhook")
setAllowed(t, h.s.db, true) h.notify(t, pushOf("5")) h.expectPush(t)}
func newClosedPullEnv(t *testing.T, enroll func(*db.DB) error) *pullEnv { t.Helper() w := newWorld(t) w.admission = config.AdmissionClosed w.owner = pausedOwner n := w.boot() if err := enroll(n.s.db); err != nil { t.Fatal(err) } // boot tracks the allowed owners, the test has to too n.s.backfill.Track(testOwner) w.seed(n, testBob) e := &pullEnv{world: w, n: n, sink: newSink(t)} w.subscribe(n, e.sink, pullEvents...) return e}
func TestPausedOwnersPullEventsFireNoWebhookUntilReAdded(t *testing.T) { e := newClosedPullEnv(t, listOwner) e.ticket("open", testBob, opCreate) e.patch(patchOne, patchSha1, testBob) e.sink.expect(t, 1)
setAllowed(t, e.n.s.db, false) e.ticket("closed", testCarol, "update") e.sink.expect(t, 1)
setAllowed(t, e.n.s.db, true) e.ticket("open", testBob, "update") e.sink.expect(t, 2)}
func TestPausedOwnersRenameFiresNoWebhookUntilReAdded(t *testing.T) { h := newPausedHookEnv(t) hooks, err := h.s.db.GetWebhooksForRepo(testRepoDid) if err != nil || len(hooks) != 1 { t.Fatalf("hooks = %+v, %v, want the fixture's one", hooks, err) } hook := hooks[0] hook.Events = append(hook.Events, string(models.WebhookEventRepoRenamed)) if err := h.s.db.UpdateWebhook(&hook); err != nil { t.Fatal(err) } repo, err := h.s.db.GetRepoByDid(testRepoDid) if err != nil { t.Fatal(err) } rename := func() { h.s.wh.FireRename(context.Background(), testBob, repo, "old", "new") }
setAllowed(t, h.s.db, true) rename() h.expectPush(t)
setAllowed(t, h.s.db, false) rename() h.expectNoPush(t, "a paused owner's rename fired a webhook")
setAllowed(t, h.s.db, true) rename() h.expectPush(t)}