mirror of
https://github.com/hanzo-fi/go-libs.git
synced 2026-10-30 20:53:44 +00:00
55 lines
1.3 KiB
Go
55 lines
1.3 KiB
Go
package oidc
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
stdtime "time"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
libtime "github.com/hanzo-fi/go-libs/v5/pkg/types/time"
|
|
)
|
|
|
|
func TestCheckNotBeforeUsesDecodedIDTokenClaimsNotBefore(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
payload, err := json.Marshal(map[string]int64{
|
|
"nbf": stdtime.Now().Add(stdtime.Hour).Unix(),
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
var claims IDTokenClaims
|
|
require.NoError(t, json.Unmarshal(payload, &claims))
|
|
require.True(t, claims.TokenClaims.NotBefore.AsTime().IsZero())
|
|
require.False(t, claims.NotBefore.AsTime().IsZero())
|
|
|
|
require.ErrorIs(t, CheckNotBefore(&claims, 0), ErrNotBefore)
|
|
}
|
|
|
|
func TestCheckNotBeforePayloadReturnsMalformedNotBeforeError(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
err := CheckNotBeforePayload([]byte(`{"nbf":"not-a-time"}`), 0)
|
|
|
|
require.ErrorContains(t, err, "oidc.Time")
|
|
}
|
|
|
|
func TestCheckNotBeforeDoesNotRoundCurrentTimeForward(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
now := libtime.New(stdtime.Unix(100, int64(600*stdtime.Millisecond)))
|
|
notBefore := libtime.New(stdtime.Unix(101, 0))
|
|
|
|
err := checkNotBeforeAt(testNotBeforeClaims{notBefore: notBefore}, 0, now)
|
|
|
|
require.ErrorIs(t, err, ErrNotBefore)
|
|
}
|
|
|
|
type testNotBeforeClaims struct {
|
|
notBefore libtime.Time
|
|
}
|
|
|
|
func (c testNotBeforeClaims) GetNotBefore() libtime.Time {
|
|
return c.notBefore
|
|
}
|