Files
releases/plugins/server/encoding/config_test.go
T
AdrianArnautu 9e97f98d12 This change allows the HTTP clients to consume and send gzip compressed response and request body. (#5696)
It is available for the following REST API endpoints:
- GET & POST HTTP methods on /v0/data & /v1/data endpoints
- POST HTTP method on /v1/compile endpoint

HTTP clients can optionally:
- send 'Accept-Encoding: gzip' header and expect a gzip compressed body and a Content-Encoding: gzip response header. The server will send the content encoded as gzip only after a threshold defined by server.encoding.gzip.min_length (default value is 1024). If the size is below the threshold, the body is not compressed
- send 'Content-Encoding: gzip' header and a gzip compressed body and expect the server to correctly interpret the request

Fixes #5310

Signed-off-by: aarnautu <aarnautu@adobe.com>
2023-03-09 09:38:39 +01:00

106 lines
2.2 KiB
Go

package encoding
import (
"fmt"
"testing"
)
func TestConfigValidation(t *testing.T) {
tests := []struct {
input string
wantErr bool
}{
{
input: `{}`,
wantErr: false,
},
{
input: `{"gzip": {"min_length": "not-a-number"}}`,
wantErr: true,
},
{
input: `{"gzip": {min_length": 42}}`,
wantErr: false,
},
{
input: `{"gzip":{"min_length": "42"}}`,
wantErr: true,
},
{
input: `{"gzip":{"min_length": 0}}`,
wantErr: true,
},
{
input: `{"gzip":{"min_length": -10}}`,
wantErr: true,
},
{
input: `{"gzip":{"random_key": 0}}`,
wantErr: false,
},
{
input: `{"gzip": {"min_length": -10, "compression_level": 13}}`,
wantErr: true,
},
{
input: `{"gzip":{"compression_level": "not-an-number"}}`,
wantErr: true,
},
{
input: `{"gzip":{"compression_level": 1}}`,
wantErr: false,
},
{
input: `{"gzip":{"compression_level": 13}}`,
wantErr: true,
},
{
input: `{"gzip":{"min_length": 42, "compression_level": 9}}`,
wantErr: false,
},
}
for i, test := range tests {
t.Run(fmt.Sprintf("TestConfigValidation_case_%d", i), func(t *testing.T) {
_, err := NewConfigBuilder().WithBytes([]byte(test.input)).Parse()
if err != nil && !test.wantErr {
t.Fail()
}
if err == nil && test.wantErr {
t.Fail()
}
})
}
}
func TestConfigValue(t *testing.T) {
tests := []struct {
input string
minLengthExpectedValue int
compressionLevelExpectedValue int
}{
{
input: `{}`,
minLengthExpectedValue: 1024,
compressionLevelExpectedValue: 9,
},
{
input: `{"gzip":{"min_length": 42, "compression_level": 1}}`,
minLengthExpectedValue: 42,
compressionLevelExpectedValue: 1,
},
}
for i, test := range tests {
t.Run(fmt.Sprintf("TestConfigValue_case_%d", i), func(t *testing.T) {
config, err := NewConfigBuilder().WithBytes([]byte(test.input)).Parse()
if err != nil {
t.Fail()
}
if *config.Gzip.MinLength != test.minLengthExpectedValue || *config.Gzip.CompressionLevel != test.compressionLevelExpectedValue {
t.Fail()
}
})
}
}