(t *testing.T)
| 395 | } |
| 396 | |
| 397 | func TestObjectMetadata(t *testing.T) { |
| 398 | s := RunBasicJetStreamServer() |
| 399 | defer shutdownJSServerAndRemoveStorage(t, s) |
| 400 | |
| 401 | nc, js := jsClient(t, s) |
| 402 | defer nc.Close() |
| 403 | |
| 404 | bucketMetadata := map[string]string{"foo": "bar", "baz": "boo"} |
| 405 | obs, err := js.CreateObjectStore(&nats.ObjectStoreConfig{ |
| 406 | Bucket: "META-TEST", |
| 407 | Metadata: bucketMetadata, |
| 408 | }) |
| 409 | expectOk(t, err) |
| 410 | status, err := obs.Status() |
| 411 | expectOk(t, err) |
| 412 | for k, v := range bucketMetadata { |
| 413 | if status.Metadata()[k] != v { |
| 414 | t.Fatalf("invalid bucket metadata: %+v", status.Metadata()) |
| 415 | } |
| 416 | } |
| 417 | |
| 418 | // Simple with no Meta. |
| 419 | _, err = obs.PutString("A", "AAA") |
| 420 | expectOk(t, err) |
| 421 | buf := bytes.NewBufferString("CCC") |
| 422 | objectMetadata := map[string]string{"name": "C", "description": "descC"} |
| 423 | info, err := obs.Put(&nats.ObjectMeta{Name: "C", Metadata: objectMetadata}, buf) |
| 424 | expectOk(t, err) |
| 425 | if !reflect.DeepEqual(info.Metadata, objectMetadata) { |
| 426 | t.Fatalf("invalid object metadata: %+v", info.Metadata) |
| 427 | } |
| 428 | |
| 429 | meta := &nats.ObjectMeta{Name: "A"} |
| 430 | meta.Description = "descA" |
| 431 | meta.Headers = make(nats.Header) |
| 432 | meta.Headers.Set("color", "blue") |
| 433 | objectMetadata["description"] = "updated desc" |
| 434 | objectMetadata["version"] = "0.1" |
| 435 | meta.Metadata = objectMetadata |
| 436 | |
| 437 | // simple update that does not change the name, just adds data |
| 438 | err = obs.UpdateMeta("A", meta) |
| 439 | expectOk(t, err) |
| 440 | |
| 441 | info, err = obs.GetInfo("A") |
| 442 | expectOk(t, err) |
| 443 | if info.Name != "A" || info.Description != "descA" || info.Headers == nil || info.Headers.Get("color") != "blue" || |
| 444 | !reflect.DeepEqual(info.Metadata, objectMetadata) { |
| 445 | t.Fatalf("Update failed: %+v", info) |
| 446 | } |
| 447 | |
| 448 | // update that changes the name and some data |
| 449 | meta = &nats.ObjectMeta{Name: "B"} |
| 450 | meta.Description = "descB" |
| 451 | meta.Headers = make(nats.Header) |
| 452 | meta.Headers.Set("color", "red") |
| 453 | meta.Metadata = nil |
| 454 |
nothing calls this directly
no test coverage detected