Files
wonderwall/pkg/session/store_memory_test.go
2022-08-19 11:44:13 +02:00

58 lines
1.4 KiB
Go

package session_test
import (
"context"
"testing"
"time"
jwtlib "github.com/lestrrat-go/jwx/v2/jwt"
"github.com/nais/liberator/pkg/keygen"
"github.com/stretchr/testify/assert"
"github.com/nais/wonderwall/pkg/crypto"
"github.com/nais/wonderwall/pkg/openid"
"github.com/nais/wonderwall/pkg/session"
)
func TestMemory(t *testing.T) {
key, err := keygen.Keygen(32)
assert.NoError(t, err)
crypter := crypto.NewCrypter(key)
idToken := jwtlib.New()
idToken.Set("jti", "id-token-jti")
accessToken := "some-access-token"
refreshToken := "some-refresh-token"
tokens := &openid.Tokens{
AccessToken: accessToken,
IDToken: openid.NewIDToken("id_token", idToken),
RefreshToken: refreshToken,
}
metadata := session.NewMetadata(time.Now().Add(time.Hour))
data := session.NewData("myid", tokens, metadata)
encryptedData, err := data.Encrypt(crypter)
assert.NoError(t, err)
sess := session.NewMemory()
err = sess.Write(context.Background(), "key", encryptedData, time.Minute)
assert.NoError(t, err)
result, err := sess.Read(context.Background(), "key")
assert.NoError(t, err)
assert.Equal(t, encryptedData, result)
decrypted, err := result.Decrypt(crypter)
assert.NoError(t, err)
assert.Equal(t, data, decrypted)
err = sess.Delete(context.Background(), "key")
result, err = sess.Read(context.Background(), "key")
assert.Error(t, err)
assert.ErrorIs(t, err, session.KeyNotFoundError)
assert.Nil(t, result)
}