(t *testing.T)
| 463 | } |
| 464 | |
| 465 | func 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 |
nothing calls this directly
no test coverage detected