mirror of https://github.com/ory/hydra
95 lines
2.8 KiB
Go
95 lines
2.8 KiB
Go
// Copyright © 2022 Ory Corp
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package oauth2
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/ory/fosite"
|
|
"github.com/ory/fosite/handler/openid"
|
|
"github.com/ory/fosite/token/jwt"
|
|
"github.com/ory/x/assertx"
|
|
"github.com/ory/x/snapshotx"
|
|
|
|
_ "embed"
|
|
)
|
|
|
|
//go:embed fixtures/v1.11.8-session.json
|
|
var v1118Session []byte
|
|
|
|
//go:embed fixtures/v1.11.9-session.json
|
|
var v1119Session []byte
|
|
|
|
func parseTime(t *testing.T, ts string) time.Time {
|
|
out, err := time.Parse(time.RFC3339Nano, ts)
|
|
require.NoError(t, err)
|
|
return out
|
|
}
|
|
|
|
func TestUnmarshalSession(t *testing.T) {
|
|
expect := &Session{
|
|
DefaultSession: &openid.DefaultSession{
|
|
Claims: &jwt.IDTokenClaims{
|
|
JTI: "",
|
|
Issuer: "http://127.0.0.1:4444/",
|
|
Subject: "foo@bar.com",
|
|
Audience: []string{"auth-code-client"},
|
|
Nonce: "mbxojlzlkefzmlecvrzfkmpm",
|
|
ExpiresAt: parseTime(t, "0001-01-01T00:00:00Z"),
|
|
IssuedAt: parseTime(t, "2022-08-25T09:21:04Z"),
|
|
RequestedAt: parseTime(t, "2022-08-25T09:20:54Z"),
|
|
AuthTime: parseTime(t, "2022-08-25T09:21:01Z"),
|
|
AccessTokenHash: "",
|
|
AuthenticationContextClassReference: "0",
|
|
AuthenticationMethodsReferences: []string{},
|
|
CodeHash: "",
|
|
Extra: map[string]interface{}{
|
|
"sid": "177e1f44-a1e9-415c-bfa3-8b62280b182d",
|
|
},
|
|
},
|
|
Headers: &jwt.Headers{Extra: map[string]interface{}{
|
|
"kid": "public:hydra.openid.id-token",
|
|
}},
|
|
ExpiresAt: map[fosite.TokenType]time.Time{
|
|
fosite.AccessToken: parseTime(t, "2022-08-25T09:26:05Z"),
|
|
fosite.AuthorizeCode: parseTime(t, "2022-08-25T09:23:04.432089764Z"),
|
|
fosite.RefreshToken: parseTime(t, "2022-08-26T09:21:05Z"),
|
|
},
|
|
Username: "",
|
|
Subject: "foo@bar.com",
|
|
},
|
|
Extra: map[string]interface{}{},
|
|
KID: "public:hydra.jwt.access-token",
|
|
ClientID: "auth-code-client",
|
|
ConsentChallenge: "2261efbd447044a1b2f76b05c6aca164",
|
|
ExcludeNotBeforeClaim: false,
|
|
AllowedTopLevelClaims: []string{
|
|
"persona_id",
|
|
"persona_krn",
|
|
"grantType",
|
|
"market",
|
|
"zone",
|
|
"login_session_id",
|
|
},
|
|
}
|
|
|
|
t.Run("v1.11.8", func(t *testing.T) {
|
|
var actual Session
|
|
require.NoError(t, json.Unmarshal(v1118Session, &actual))
|
|
assertx.EqualAsJSON(t, expect, &actual)
|
|
snapshotx.SnapshotTExcept(t, &actual, nil)
|
|
})
|
|
|
|
t.Run("v1.11.9", func(t *testing.T) {
|
|
var actual Session
|
|
require.NoError(t, json.Unmarshal(v1119Session, &actual))
|
|
assertx.EqualAsJSON(t, expect, &actual)
|
|
snapshotx.SnapshotTExcept(t, &actual, nil)
|
|
})
|
|
}
|