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

Function TestObjectMetadata

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

Source from the content-addressed store, hash-verified

463}
464
465func TestObjectMetadata(t *testing.T) {
466 s := RunBasicJetStreamServer()
467 defer shutdownJSServerAndRemoveStorage(t, s)
468
469 nc, js := jsClient(t, s)
470 defer nc.Close()
471 ctx := context.Background()
472
473 bucketMetadata := map[string]string{"foo": "bar", "baz": "boo"}
474 obs, err := js.CreateObjectStore(ctx, jetstream.ObjectStoreConfig{
475 Bucket: "META-TEST",
476 Metadata: bucketMetadata,
477 })
478 expectOk(t, err)
479 status, err := obs.Status(ctx)
480 expectOk(t, err)
481 for k, v := range bucketMetadata {
482 if status.Metadata()[k] != v {
483 t.Fatalf("invalid bucket metadata: %+v", status.Metadata())
484 }
485 }
486
487 // Simple with no Meta.
488 _, err = obs.PutString(ctx, "A", "AAA")
489 expectOk(t, err)
490 buf := bytes.NewBufferString("CCC")
491 objectMetadata := map[string]string{"name": "C", "description": "descC"}
492 info, err := obs.Put(ctx, jetstream.ObjectMeta{Name: "C", Metadata: objectMetadata}, buf)
493 expectOk(t, err)
494 if !reflect.DeepEqual(info.Metadata, objectMetadata) {
495 t.Fatalf("invalid object metadata: %+v", info.Metadata)
496 }
497
498 meta := jetstream.ObjectMeta{Name: "A"}
499 meta.Description = "descA"
500 meta.Headers = make(nats.Header)
501 meta.Headers.Set("color", "blue")
502 objectMetadata["description"] = "updated desc"
503 objectMetadata["version"] = "0.1"
504 meta.Metadata = objectMetadata
505
506 // simple update that does not change the name, just adds data
507 err = obs.UpdateMeta(ctx, "A", meta)
508 expectOk(t, err)
509
510 info, err = obs.GetInfo(ctx, "A")
511 expectOk(t, err)
512 if info.Name != "A" || info.Description != "descA" || info.Headers == nil || info.Headers.Get("color") != "blue" ||
513 !reflect.DeepEqual(info.Metadata, objectMetadata) {
514 t.Fatalf("Update failed: %+v", info)
515 }
516
517 // update that changes the name and some data
518 meta = jetstream.ObjectMeta{Name: "B"}
519 meta.Description = "descB"
520 meta.Headers = make(nats.Header)
521 meta.Headers.Set("color", "red")
522 meta.Metadata = nil

Callers

nothing calls this directly

Calls 15

FatalfMethod · 0.80
RunBasicJetStreamServerFunction · 0.70
jsClientFunction · 0.70
expectOkFunction · 0.70
expectErrFunction · 0.70
CreateObjectStoreMethod · 0.65
StatusMethod · 0.65
MetadataMethod · 0.65
PutStringMethod · 0.65
PutMethod · 0.65
SetMethod · 0.65

Tested by

no test coverage detected