61 lines
1.9 KiB
Go
61 lines
1.9 KiB
Go
//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)
|
|
}
|
|
}
|