mirror of
https://github.com/open-policy-agent/opa.git
synced 2026-08-15 04:42:51 -06:00
9e97f98d12
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>
106 lines
2.2 KiB
Go
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()
|
|
}
|
|
})
|
|
}
|
|
}
|