You've already forked opentelemetry-go
mirror of
https://github.com/open-telemetry/opentelemetry-go.git
synced 2025-08-10 22:31:50 +02:00
baggage: Fix Parse to validate member value before percent-decoding (#4755)
This commit is contained in:
@@ -47,7 +47,7 @@ func (m member) Member(t *testing.T) baggage.Member {
|
||||
}
|
||||
props = append(props, p)
|
||||
}
|
||||
bMember, err := baggage.NewMember(m.Key, url.QueryEscape(m.Value), props...)
|
||||
bMember, err := baggage.NewMember(m.Key, url.PathEscape(m.Value), props...)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -248,6 +248,55 @@ func TestInjectBaggageToHTTPReq(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestBaggageInjectExtractRoundtrip(t *testing.T) {
|
||||
propagator := propagation.Baggage{}
|
||||
tests := []struct {
|
||||
name string
|
||||
mems members
|
||||
}{
|
||||
{
|
||||
name: "two simple values",
|
||||
mems: members{
|
||||
{Key: "key1", Value: "val1"},
|
||||
{Key: "key2", Value: "val2"},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "values with escaped chars",
|
||||
mems: members{
|
||||
{Key: "key1", Value: "val3=4"},
|
||||
{Key: "key2", Value: "mess,me%up"},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "with properties",
|
||||
mems: members{
|
||||
{Key: "key1", Value: "val1"},
|
||||
{
|
||||
Key: "key2",
|
||||
Value: "val2",
|
||||
Properties: []property{
|
||||
{Key: "prop", Value: "1"},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
b := tt.mems.Baggage(t)
|
||||
req, _ := http.NewRequest("GET", "http://example.com", nil)
|
||||
ctx := baggage.ContextWithBaggage(context.Background(), b)
|
||||
propagator.Inject(ctx, propagation.HeaderCarrier(req.Header))
|
||||
|
||||
ctx = propagator.Extract(context.Background(), propagation.HeaderCarrier(req.Header))
|
||||
got := baggage.FromContext(ctx)
|
||||
|
||||
assert.Equal(t, b, got)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestBaggagePropagatorGetAllKeys(t *testing.T) {
|
||||
var propagator propagation.Baggage
|
||||
want := []string{"baggage"}
|
||||
|
Reference in New Issue
Block a user