MCPcopy
hub / github.com/nats-io/nats.go / TestGetObjectDigestMismatch

Function TestGetObjectDigestMismatch

jetstream/test/object_test.go:196–230  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

194}
195
196func TestGetObjectDigestMismatch(t *testing.T) {
197 s := RunBasicJetStreamServer()
198 defer shutdownJSServerAndRemoveStorage(t, s)
199
200 nc, js := jsClient(t, s)
201 defer nc.Close()
202 ctx := context.Background()
203
204 obs, err := js.CreateObjectStore(ctx, jetstream.ObjectStoreConfig{Bucket: "FOO"})
205 expectOk(t, err)
206
207 _, err = obs.PutString(ctx, "A", "abc")
208 expectOk(t, err)
209 res, err := obs.Get(ctx, "A")
210 expectOk(t, err)
211 // first read should be successful
212 data, err := io.ReadAll(res)
213 expectOk(t, err)
214 if string(data) != "abc" {
215 t.Fatalf("Expected result: 'abc'; got: %s", string(data))
216 }
217
218 info, err := obs.GetInfo(ctx, "A")
219 expectOk(t, err)
220
221 // add new chunk after using Put(), this will change the digest hash on Get()
222 _, err = js.Publish(ctx, fmt.Sprintf("$O.FOO.C.%s", info.NUID), []byte("123"))
223 expectOk(t, err)
224
225 res, err = obs.Get(ctx, "A")
226 expectOk(t, err)
227 _, err = io.ReadAll(res)
228 expectErr(t, err, jetstream.ErrDigestMismatch)
229 expectErr(t, res.Error(), jetstream.ErrDigestMismatch)
230}
231
232func TestDefaultObjectStatus(t *testing.T) {
233 s := RunBasicJetStreamServer()

Callers

nothing calls this directly

Calls 13

FatalfMethod · 0.80
RunBasicJetStreamServerFunction · 0.70
jsClientFunction · 0.70
expectOkFunction · 0.70
expectErrFunction · 0.70
CreateObjectStoreMethod · 0.65
PutStringMethod · 0.65
GetMethod · 0.65
GetInfoMethod · 0.65
PublishMethod · 0.65
ErrorMethod · 0.65

Tested by

no test coverage detected