package uploader import ( "testing" "github.com/stretchr/testify/require" "github.com/valyala/fasthttp" "go.uber.org/zap" ) func TestFilter(t *testing.T) { log := zap.NewNop() t.Run("duplicate keys error", func(t *testing.T) { req := &fasthttp.RequestHeader{} req.DisableNormalizing() req.Add("X-Attribute-DupKey", "first-value") req.Add("X-Attribute-DupKey", "second-value") _, err := filterHeaders(log, req) require.Error(t, err) }) t.Run("duplicate system keys error", func(t *testing.T) { req := &fasthttp.RequestHeader{} req.DisableNormalizing() req.Add("X-Attribute-System-DupKey", "first-value") req.Add("X-Attribute-System-DupKey", "second-value") _, err := filterHeaders(log, req) require.Error(t, err) }) req := &fasthttp.RequestHeader{} req.DisableNormalizing() req.Set("X-Attribute-System-Expiration-Epoch1", "101") req.Set("X-Attribute-SYSTEM-Expiration-Epoch2", "102") req.Set("X-Attribute-system-Expiration-Epoch3", "103") req.Set("X-Attribute-MyAttribute", "value") expected := map[string]string{ "__SYSTEM__EXPIRATION_EPOCH1": "101", "MyAttribute": "value", "__SYSTEM__EXPIRATION_EPOCH3": "103", "__SYSTEM__EXPIRATION_EPOCH2": "102", } result, err := filterHeaders(log, req) require.NoError(t, err) require.Equal(t, expected, result) }