tinyrelayfile
tinyrelay/internal/daemon/tenant_publish_test.go/

internal/daemon/tenant_publish_test.go raw
1package daemon
2
3import (
4 "context"
5 "strings"
6 "testing"
7 "time"
8
9 "github.com/FelineStateMachine/tinyrelay/internal/event"
10 "github.com/FelineStateMachine/tinyrelay/internal/policy"
11 "github.com/FelineStateMachine/tinyrelay/internal/relay"
12)
13
14func TestPublishReportIsPrivateAndMetadataIsAtomic(t *testing.T) {
15 ctx := context.Background()
16 app, err := New(ctx, Config{DataDir: t.TempDir(), DefaultTenant: "main"})
17 if err != nil {
18 t.Fatal(err)
19 }
20 defer app.Close(ctx)
21 secret := strings.Repeat("0", 63) + "1"
22 owner, _ := event.PublicKey(secret)
23 meta, err := app.Create(ctx, CreateOptions{Name: "main", Owner: owner, Template: "default"})
24 if err != nil {
25 t.Fatal(err)
26 }
27 tenant, err := app.tenant(ctx, meta, "http://relay.test")
28 if err != nil {
29 t.Fatal(err)
30 }
31 now := time.Now().Unix()
32 report := event.Event{Kind: event.KIND_REPORT, CreatedAt: now, Tags: [][]string{{"e", strings.Repeat("a", 64), "spam"}}, Content: "bad"}
33 if err := event.Sign(&report, secret); err != nil {
34 t.Fatal(err)
35 }
36 if _, err := tenant.Publish(ctx, report, relay.Session{PubKeys: []string{owner}}); err != nil {
37 t.Fatal(err)
38 }
39 var reports, stored int
40 if err := tenant.store.DB().QueryRow(`SELECT count(*) FROM community_reports`).Scan(&reports); err != nil {
41 t.Fatal(err)
42 }
43 if err := tenant.store.DB().QueryRow(`SELECT count(*) FROM events WHERE id=?`, report.ID).Scan(&stored); err != nil {
44 t.Fatal(err)
45 }
46 if reports != 1 || stored != 0 {
47 t.Fatalf("report reports=%d stored=%d", reports, stored)
48 }
49 metadata := event.Event{Kind: event.KIND_EDIT_METADATA, CreatedAt: now + 1, Tags: [][]string{{"name", "renamed"}}}
50 if err := event.Sign(&metadata, secret); err != nil {
51 t.Fatal(err)
52 }
53 if _, err := tenant.Publish(ctx, metadata, relay.Session{PubKeys: []string{owner}}); err != nil {
54 t.Fatal(err)
55 }
56 var current policy.Policy
57 if err := tenant.store.GetSetting(ctx, "policy", &current); err != nil {
58 t.Fatal(err)
59 }
60 if current.Name != "renamed" {
61 t.Fatalf("policy name=%q", current.Name)
62 }
63}

About

ownerc01503e8035f
visibilitypublic
headd730679639bf

Maintainers

  • c01503e8035f owner
  • ba1b5beed5b5 agent hermes

Clone

  • https://012.run/npub1cq2s86qrtadf36eqq3epm38wmhdynrrcwxf84eldk3f94dkv7ttsrulrz5/tinyrelay.git

Refs