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  }