1package daemon23import (4 "context"5 "strings"6 "testing"7 "time"89 "github.com/FelineStateMachine/tinyrelay/internal/event"10 "github.com/FelineStateMachine/tinyrelay/internal/sites"11)1213func TestSiteSnapshotStaysOutOfJobReads(t *testing.T) {14 _, tenant := testTenant(t)15 ctx := context.Background()16 now := time.Now().Unix()17 owner := tenant.Policy().Owner18 paths := [][]string{{"path", "/index.html", strings.Repeat("a", 64)}}19 tags := append(paths, []string{"x", sites.Aggregate(paths), "aggregate"}, []string{"a", "15128:" + owner + ":"})20 snapshot := wikiPublish(t, tenant, wikiOwnerSecret, event.KIND_SITE_SNAPSHOT, now, "", tags...)21 job := wikiPublish(t, tenant, wikiOwnerSecret, event.KIND_JOB_REQUEST, now-1, "hello", []string{"h", jobTestRoom}, []string{"p", owner})2223 result, err := tenant.browseJobs(ctx, owner, jobBrowseRequest{Limit: 1})24 if err != nil {25 t.Fatal(err)26 }27 items := result.(map[string]any)["items"].([]jobItem)28 if len(items) != 1 || items[0].ID != job.ID {29 t.Fatalf("job listing = %+v; want request %s", items, job.ID)30 }31 if _, err := tenant.browseJob(ctx, owner, snapshot.ID); err == nil || !strings.Contains(err.Error(), "not found: job request") {32 t.Fatalf("snapshot job read error = %v", err)33 }34 if _, err := tenant.browseJob(ctx, owner, job.ID); err != nil {35 t.Fatalf("job read: %v", err)36 }37}3839func TestSiteSnapshotIsNotAJobRequest(t *testing.T) {40 if event.IsJobKind(event.KIND_SITE_SNAPSHOT) {41 t.Fatal("site snapshot kind classified as a long task")42 }43 if err := mcpCheckJobRequest(event.Event{Kind: event.KIND_SITE_SNAPSHOT}); err == nil {44 t.Fatal("site snapshot accepted by the signed job request checker")45 }46}