Let a process read the router's record of its module's own ask (issue 1189)
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user