gitee.com/liuxuezhan/go-micro-v1.18.0@v1.0.0/metadata/metadata_test.go (about) 1 package metadata 2 3 import ( 4 "context" 5 "reflect" 6 "testing" 7 ) 8 9 func TestMetadataCopy(t *testing.T) { 10 md := Metadata{ 11 "foo": "bar", 12 "bar": "baz", 13 } 14 15 cp := Copy(md) 16 17 for k, v := range md { 18 if cv := cp[k]; cv != v { 19 t.Fatalf("Got %s:%s for %s:%s", k, cv, k, v) 20 } 21 } 22 } 23 24 func TestMetadataContext(t *testing.T) { 25 md := Metadata{ 26 "foo": "bar", 27 } 28 29 ctx := NewContext(context.TODO(), md) 30 31 emd, ok := FromContext(ctx) 32 if !ok { 33 t.Errorf("Unexpected error retrieving metadata, got %t", ok) 34 } 35 36 if emd["foo"] != md["foo"] { 37 t.Errorf("Expected key: %s val: %s, got key: %s val: %s", "foo", md["foo"], "foo", emd["foo"]) 38 } 39 40 if i := len(emd); i != 1 { 41 t.Errorf("Expected metadata length 1 got %d", i) 42 } 43 } 44 45 func TestMergeContext(t *testing.T) { 46 type args struct { 47 existing Metadata 48 append Metadata 49 overwrite bool 50 } 51 tests := []struct { 52 name string 53 args args 54 want Metadata 55 }{ 56 { 57 name: "matching key, overwrite false", 58 args: args{ 59 existing: Metadata{"foo": "bar", "sumo": "demo"}, 60 append: Metadata{"sumo": "demo2"}, 61 overwrite: false, 62 }, 63 want: Metadata{"foo": "bar", "sumo": "demo"}, 64 }, 65 { 66 name: "matching key, overwrite true", 67 args: args{ 68 existing: Metadata{"foo": "bar", "sumo": "demo"}, 69 append: Metadata{"sumo": "demo2"}, 70 overwrite: true, 71 }, 72 want: Metadata{"foo": "bar", "sumo": "demo2"}, 73 }, 74 } 75 for _, tt := range tests { 76 t.Run(tt.name, func(t *testing.T) { 77 if got, _ := FromContext(MergeContext(NewContext(context.TODO(), tt.args.existing), tt.args.append, tt.args.overwrite)); !reflect.DeepEqual(got, tt.want) { 78 t.Errorf("MergeContext() = %v, want %v", got, tt.want) 79 } 80 }) 81 } 82 }