1
0
forked from baron/baron-sso

ID Token에 rt_expires_at 클레임 추가

This commit is contained in:
2026-06-15 14:42:02 +09:00
parent bfd9cab260
commit 006113ebc7
2 changed files with 49 additions and 0 deletions

View File

@@ -36,6 +36,38 @@ func assertRefreshTokenExpiryClaimWithin(t *testing.T, claims map[string]any, is
assert.False(t, expiresAt.After(issuedBefore.Add(ttl).Add(time.Second)), "rt_expires_at should be before or equal to request end + ttl")
}
func TestHydraRefreshTokenTTL_DefaultAndFallback(t *testing.T) {
t.Run("uses explicit env value", func(t *testing.T) {
t.Setenv("HYDRA_REFRESH_TOKEN_TTL", "96h")
assert.Equal(t, 96*time.Hour, hydraRefreshTokenTTL())
})
t.Run("uses default when env is empty", func(t *testing.T) {
t.Setenv("HYDRA_REFRESH_TOKEN_TTL", "")
assert.Equal(t, defaultRefreshTokenTTL, hydraRefreshTokenTTL())
})
t.Run("uses default when env is invalid", func(t *testing.T) {
t.Setenv("HYDRA_REFRESH_TOKEN_TTL", "not-a-duration")
assert.Equal(t, defaultRefreshTokenTTL, hydraRefreshTokenTTL())
})
t.Run("uses default when env is non-positive", func(t *testing.T) {
t.Setenv("HYDRA_REFRESH_TOKEN_TTL", "0h")
assert.Equal(t, defaultRefreshTokenTTL, hydraRefreshTokenTTL())
})
}
func TestWithRefreshTokenExpiryClaim_UsesHydraRefreshTokenTTL(t *testing.T) {
t.Setenv("HYDRA_REFRESH_TOKEN_TTL", "36h")
issuedAt := time.Date(2026, time.June, 15, 14, 0, 0, 0, time.UTC)
claims := withRefreshTokenExpiryClaim(map[string]any{"email": "user@test.com"}, issuedAt)
assert.Equal(t, "user@test.com", claims["email"])
assert.Equal(t, issuedAt.Add(36*time.Hour).Unix(), claims["rt_expires_at"])
}
func TestBuildOidcClaimsFromTraits_DynamicClaims(t *testing.T) {
traits := map[string]any{
"email": "user@baron.com",