32 lines
719 B
Go
32 lines
719 B
Go
|
|
package store
|
||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
"errors"
|
||
|
|
"testing"
|
||
|
|
"time"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestMemory_Reserve_Idempotent(t *testing.T) {
|
||
|
|
m := NewMemory()
|
||
|
|
d := Decision{
|
||
|
|
DecisionID: "dec-1",
|
||
|
|
ApprovalRef: "sha256:aaaa",
|
||
|
|
TransformRef: "sha256:bbbb",
|
||
|
|
PayloadHash: "sha256:cccc",
|
||
|
|
SinkTarget: "sink:dummy-sink",
|
||
|
|
CreatedAt: time.Now(),
|
||
|
|
}
|
||
|
|
if err := m.Reserve(context.Background(), d); err != nil {
|
||
|
|
t.Fatalf("first reserve: %v", err)
|
||
|
|
}
|
||
|
|
err := m.Reserve(context.Background(), d)
|
||
|
|
if !errors.Is(err, ErrReplay) {
|
||
|
|
t.Fatalf("second reserve: want ErrReplay, got %v", err)
|
||
|
|
}
|
||
|
|
got, ok, _ := m.Get(context.Background(), "dec-1")
|
||
|
|
if !ok || got.ApprovalRef != d.ApprovalRef {
|
||
|
|
t.Fatalf("get: ok=%v, got=%+v", ok, got)
|
||
|
|
}
|
||
|
|
}
|