go-micro.dev/v5@v5.12.0/metadata/metadata_test.go (about) 1 package metadata 2 3 import ( 4 "context" 5 "reflect" 6 "testing" 7 ) 8 9 func TestMetadataSet(t *testing.T) { 10 ctx := Set(context.TODO(), "Key", "val") 11 12 val, ok := Get(ctx, "Key") 13 if !ok { 14 t.Fatal("key Key not found") 15 } 16 if val != "val" { 17 t.Errorf("key Key with value val != %v", val) 18 } 19 } 20 21 func TestMetadataDelete(t *testing.T) { 22 md := Metadata{ 23 "Foo": "bar", 24 "Baz": "empty", 25 } 26 27 ctx := NewContext(context.TODO(), md) 28 ctx = Delete(ctx, "Baz") 29 30 emd, ok := FromContext(ctx) 31 if !ok { 32 t.Fatal("key Key not found") 33 } 34 35 _, ok = emd["Baz"] 36 if ok { 37 t.Fatal("key Baz not deleted") 38 } 39 } 40 41 func TestMetadataCopy(t *testing.T) { 42 md := Metadata{ 43 "Foo": "bar", 44 "bar": "baz", 45 } 46 47 cp := Copy(md) 48 49 for k, v := range md { 50 if cv := cp[k]; cv != v { 51 t.Fatalf("Got %s:%s for %s:%s", k, cv, k, v) 52 } 53 } 54 } 55 56 func TestMetadataContext(t *testing.T) { 57 md := Metadata{ 58 "Foo": "bar", 59 } 60 61 ctx := NewContext(context.TODO(), md) 62 63 emd, ok := FromContext(ctx) 64 if !ok { 65 t.Errorf("Unexpected error retrieving metadata, got %t", ok) 66 } 67 68 if emd["Foo"] != md["Foo"] { 69 t.Errorf("Expected key: %s val: %s, got key: %s val: %s", "Foo", md["Foo"], "Foo", emd["Foo"]) 70 } 71 72 if i := len(emd); i != 1 { 73 t.Errorf("Expected metadata length 1 got %d", i) 74 } 75 } 76 77 func TestMergeContext(t *testing.T) { 78 type args struct { 79 existing Metadata 80 append Metadata 81 overwrite bool 82 } 83 tests := []struct { 84 name string 85 args args 86 want Metadata 87 }{ 88 { 89 name: "matching key, overwrite false", 90 args: args{ 91 existing: Metadata{"Foo": "bar", "Sumo": "demo"}, 92 append: Metadata{"Sumo": "demo2"}, 93 overwrite: false, 94 }, 95 want: Metadata{"Foo": "bar", "Sumo": "demo"}, 96 }, 97 { 98 name: "matching key, overwrite true", 99 args: args{ 100 existing: Metadata{"Foo": "bar", "Sumo": "demo"}, 101 append: Metadata{"Sumo": "demo2"}, 102 overwrite: true, 103 }, 104 want: Metadata{"Foo": "bar", "Sumo": "demo2"}, 105 }, 106 } 107 for _, tt := range tests { 108 t.Run(tt.name, func(t *testing.T) { 109 if got, _ := FromContext(MergeContext(NewContext(context.TODO(), tt.args.existing), tt.args.append, tt.args.overwrite)); !reflect.DeepEqual(got, tt.want) { 110 t.Errorf("MergeContext() = %v, want %v", got, tt.want) 111 } 112 }) 113 } 114 }