mirror of
https://github.com/oauth2-proxy/oauth2-proxy.git
synced 2026-10-18 13:18:26 +02:00
Update session state handling
This commit is contained in:
@@ -9,8 +9,8 @@ import (
|
||||
|
||||
"github.com/oauth2-proxy/oauth2-proxy/v7/pkg/clock"
|
||||
"github.com/oauth2-proxy/oauth2-proxy/v7/pkg/encryption"
|
||||
"github.com/pierrec/lz4"
|
||||
"github.com/vmihailenco/msgpack/v4"
|
||||
"github.com/pierrec/lz4/v4"
|
||||
"github.com/vmihailenco/msgpack/v5"
|
||||
)
|
||||
|
||||
// SessionState is used to store information about the currently authenticated user session
|
||||
@@ -208,10 +208,10 @@ func DecodeSessionState(data []byte, c encryption.Cipher, compressed bool) (*Ses
|
||||
func lz4Compress(payload []byte) ([]byte, error) {
|
||||
buf := new(bytes.Buffer)
|
||||
zw := lz4.NewWriter(nil)
|
||||
zw.Header = lz4.Header{
|
||||
BlockMaxSize: 65536,
|
||||
CompressionLevel: 0,
|
||||
}
|
||||
zw.Apply(
|
||||
lz4.BlockSizeOption(lz4.BlockSize(65536)),
|
||||
lz4.CompressionLevelOption(lz4.Fast),
|
||||
)
|
||||
zw.Reset(buf)
|
||||
|
||||
reader := bytes.NewReader(payload)
|
||||
|
||||
@@ -10,6 +10,7 @@ import (
|
||||
"github.com/oauth2-proxy/oauth2-proxy/v7/pkg/encryption"
|
||||
. "github.com/onsi/gomega"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func timePtr(t time.Time) *time.Time {
|
||||
@@ -247,16 +248,16 @@ func TestEncodeAndDecodeSessionState(t *testing.T) {
|
||||
for testName, ss := range testCases {
|
||||
t.Run(testName, func(t *testing.T) {
|
||||
encoded, err := ss.EncodeSessionState(c, false)
|
||||
assert.NoError(t, err)
|
||||
require.NoError(t, err)
|
||||
encodedCompressed, err := ss.EncodeSessionState(c, true)
|
||||
assert.NoError(t, err)
|
||||
require.NoError(t, err)
|
||||
// Make sure compressed version is smaller than if not compressed
|
||||
assert.Greater(t, len(encoded), len(encodedCompressed))
|
||||
|
||||
decoded, err := DecodeSessionState(encoded, c, false)
|
||||
assert.NoError(t, err)
|
||||
require.NoError(t, err)
|
||||
decodedCompressed, err := DecodeSessionState(encodedCompressed, c, true)
|
||||
assert.NoError(t, err)
|
||||
require.NoError(t, err)
|
||||
|
||||
compareSessionStates(t, decoded, decodedCompressed)
|
||||
compareSessionStates(t, decoded, &ss)
|
||||
|
||||
Reference in New Issue
Block a user