gitee.com/liuxuezhan/go-micro-v1.18.0@v1.0.0/util/wrapper/wrapper_test.go (about)

     1  package wrapper
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"gitee.com/liuxuezhan/go-micro-v1.18.0/metadata"
     8  )
     9  
    10  func TestWrapper(t *testing.T) {
    11  	testData := []struct {
    12  		existing  metadata.Metadata
    13  		headers   metadata.Metadata
    14  		overwrite bool
    15  	}{
    16  		{
    17  			existing: metadata.Metadata{},
    18  			headers: metadata.Metadata{
    19  				"foo": "bar",
    20  			},
    21  			overwrite: true,
    22  		},
    23  		{
    24  			existing: metadata.Metadata{
    25  				"foo": "bar",
    26  			},
    27  			headers: metadata.Metadata{
    28  				"foo": "baz",
    29  			},
    30  			overwrite: false,
    31  		},
    32  	}
    33  
    34  	for _, d := range testData {
    35  		c := &clientWrapper{
    36  			headers: d.headers,
    37  		}
    38  
    39  		ctx := metadata.NewContext(context.Background(), d.existing)
    40  		ctx = c.setHeaders(ctx)
    41  		md, _ := metadata.FromContext(ctx)
    42  
    43  		for k, v := range d.headers {
    44  			if d.overwrite && md[k] != v {
    45  				t.Fatalf("Expected %s=%s got %s=%s", k, v, k, md[k])
    46  			}
    47  			if !d.overwrite && md[k] != d.existing[k] {
    48  				t.Fatalf("Expected %s=%s got %s=%s", k, d.existing[k], k, md[k])
    49  			}
    50  		}
    51  	}
    52  
    53  }