mirror of
https://github.com/pocket-id/pocket-id.git
synced 2026-10-11 20:29:04 +02:00
51 lines
2.1 KiB
Go
51 lines
2.1 KiB
Go
package oidc
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestNewAuthenticatedSession(t *testing.T) {
|
|
authenticationTime := time.Date(2026, 6, 16, 10, 0, 0, 0, time.FixedZone("CEST", 2*60*60))
|
|
requestedAt := time.Date(2026, 6, 16, 9, 59, 0, 0, time.FixedZone("CEST", 2*60*60))
|
|
|
|
session := NewAuthenticatedSession("user-id", "passkey", authenticationTime, requestedAt)
|
|
|
|
require.Equal(t, "user-id", session.Subject)
|
|
require.Equal(t, "user-id", session.Claims.Subject)
|
|
require.Equal(t, "passkey", session.AuthenticationMethod)
|
|
require.Equal(t, authenticationTime.UTC(), session.Claims.AuthTime)
|
|
require.Equal(t, requestedAt.UTC(), session.Claims.RequestedAt)
|
|
require.NotNil(t, session.Claims.Extra)
|
|
}
|
|
|
|
func TestNewAuthenticatedSessionDefaultsTimes(t *testing.T) {
|
|
before := time.Now().UTC()
|
|
session := NewAuthenticatedSession("user-id", "passkey", time.Time{}, time.Time{})
|
|
after := time.Now().UTC()
|
|
|
|
require.False(t, session.Claims.AuthTime.IsZero())
|
|
require.False(t, session.Claims.RequestedAt.IsZero())
|
|
require.False(t, session.Claims.AuthTime.Before(before))
|
|
require.False(t, session.Claims.AuthTime.After(after))
|
|
require.Equal(t, session.Claims.AuthTime, session.Claims.RequestedAt)
|
|
}
|
|
|
|
func TestSessionCloneKeepsIntegerIDTokenClaims(t *testing.T) {
|
|
session := NewAuthenticatedSession("user-id", "passkey", time.Time{}, time.Time{})
|
|
session.Claims.Extra["discord_id"] = int64(1234567890123456789)
|
|
session.Claims.Extra["uid_number"] = int64(1000000)
|
|
session.Claims.Extra["nested"] = map[string]any{"ids": []any{int64(1234567890123456789)}}
|
|
|
|
// The stored authorize session goes through the same JSON round trip before the ID token is signed
|
|
cloned, ok := session.Clone().(*Session)
|
|
require.True(t, ok)
|
|
require.Equal(t, int64(1234567890123456789), cloned.Claims.Extra["discord_id"])
|
|
require.Equal(t, int64(1000000), cloned.Claims.Extra["uid_number"])
|
|
require.Equal(t, map[string]any{"ids": []any{int64(1234567890123456789)}}, cloned.Claims.Extra["nested"])
|
|
require.Equal(t, "user-id", cloned.Claims.Subject)
|
|
require.Equal(t, session.Claims.AuthTime, cloned.Claims.AuthTime)
|
|
}
|