Let a process read the router's record of its module's own ask (issue 1189)

This commit is contained in:
jochen
2026-10-19 04:35:33 +02:00
parent de2d944c2a
commit 94702bcd79
3 changed files with 156 additions and 0 deletions
+60
View File
@@ -0,0 +1,60 @@
//go:build integration
package process
import (
"testing"
"github.com/nats-io/nats.go/jetstream"
)
// 1189/AC1: given the router's records bucket on a test bus holding a record under <module>.<ask id>,
// when the process connection reads its module's ask of that id, then it gets the record's bytes and
// revision by direct get; a deleted or purged key is said as absent; a missing key as absent.
func TestAskReadsTheRoutersRecordOfItsOwnAsk(t *testing.T) {
url, account := grantedSendProcess(t)
_, adminJetStream := adminJS(t, url)
kv, err := adminJetStream.CreateKeyValue(ctxFor(t), jetstream.KeyValueConfig{Bucket: "messenger_asks"})
if err != nil {
t.Fatalf("the admin could not make the records bucket: %v", err)
}
rev, err := kv.Put(ctxFor(t), "mesh-mail.ask-1", []byte(`{"state":"decided"}`))
if err != nil {
t.Fatal(err)
}
conn, err := Connect(account)
if err != nil {
t.Fatal(err)
}
defer conn.Close()
e, err := conn.Ask("messenger_asks", "ask-1")
if err != nil {
t.Fatalf("reading an existing record: %v", err)
}
if e == nil || e.Revision != rev || string(e.Value) != `{"state":"decided"}` {
t.Fatalf("read back %+v, want revision %d and {\"state\":\"decided\"}", e, rev)
}
if err := kv.Delete(ctxFor(t), "mesh-mail.ask-1"); err != nil {
t.Fatal(err)
}
if e, err := conn.Ask("messenger_asks", "ask-1"); err != nil || e != nil {
t.Fatalf("a deleted record: %+v, %v, want absent", e, err)
}
if _, err := kv.Create(ctxFor(t), "mesh-mail.ask-2", []byte(`{"state":"asked"}`)); err != nil {
t.Fatal(err)
}
if err := kv.Purge(ctxFor(t), "mesh-mail.ask-2"); err != nil {
t.Fatal(err)
}
if e, err := conn.Ask("messenger_asks", "ask-2"); err != nil || e != nil {
t.Fatalf("a purged record: %+v, %v, want absent", e, err)
}
if e, err := conn.Ask("messenger_asks", "ask-missing"); err != nil || e != nil {
t.Fatalf("a missing record: %+v, %v, want absent", e, err)
}
}