Skip to content

Commit 50301e0

Browse files
authored
feat: improve persistence logic (#3756)
1 parent 17ec137 commit 50301e0

11 files changed

+626
-95
lines changed

consent/sdk_test.go

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import (
1111
"testing"
1212
"time"
1313

14+
"github.com/ory/hydra/v2/consent/test"
15+
1416
hydra "github.com/ory/hydra-client-go/v2"
1517
. "github.com/ory/hydra/v2/flow"
1618

@@ -58,8 +60,8 @@ func TestSDK(t *testing.T) {
5860
Subject: "subject1",
5961
}))
6062

61-
ar1, _, _ := MockAuthRequest("1", false, network)
62-
ar2, _, _ := MockAuthRequest("2", false, network)
63+
ar1, _, _ := test.MockAuthRequest("1", false, network)
64+
ar2, _, _ := test.MockAuthRequest("2", false, network)
6365
require.NoError(t, m.CreateLoginSession(context.Background(), &LoginSession{
6466
ID: ar1.SessionID.String(),
6567
Subject: ar1.Subject,
@@ -73,10 +75,10 @@ func TestSDK(t *testing.T) {
7375
_, err = m.CreateLoginRequest(context.Background(), ar2)
7476
require.NoError(t, err)
7577

76-
cr1, hcr1, _ := MockConsentRequest("1", false, 0, false, false, false, "fk-login-challenge", network)
77-
cr2, hcr2, _ := MockConsentRequest("2", false, 0, false, false, false, "fk-login-challenge", network)
78-
cr3, hcr3, _ := MockConsentRequest("3", true, 3600, false, false, false, "fk-login-challenge", network)
79-
cr4, hcr4, _ := MockConsentRequest("4", true, 3600, false, false, false, "fk-login-challenge", network)
78+
cr1, hcr1, _ := test.MockConsentRequest("1", false, 0, false, false, false, "fk-login-challenge", network)
79+
cr2, hcr2, _ := test.MockConsentRequest("2", false, 0, false, false, false, "fk-login-challenge", network)
80+
cr3, hcr3, _ := test.MockConsentRequest("3", true, 3600, false, false, false, "fk-login-challenge", network)
81+
cr4, hcr4, _ := test.MockConsentRequest("4", true, 3600, false, false, false, "fk-login-challenge", network)
8082
require.NoError(t, reg.ClientManager().CreateClient(context.Background(), cr1.Client))
8183
require.NoError(t, reg.ClientManager().CreateClient(context.Background(), cr2.Client))
8284
require.NoError(t, reg.ClientManager().CreateClient(context.Background(), cr3.Client))
@@ -144,11 +146,11 @@ func TestSDK(t *testing.T) {
144146
_, err = m.VerifyAndInvalidateConsentRequest(context.Background(), consentVerifier(cr4Flow))
145147
require.NoError(t, err)
146148

147-
lur1 := MockLogoutRequest("testsdk-1", true, network)
149+
lur1 := test.MockLogoutRequest("testsdk-1", true, network)
148150
require.NoError(t, reg.ClientManager().CreateClient(context.Background(), lur1.Client))
149151
require.NoError(t, m.CreateLogoutRequest(context.Background(), lur1))
150152

151-
lur2 := MockLogoutRequest("testsdk-2", false, network)
153+
lur2 := test.MockLogoutRequest("testsdk-2", false, network)
152154
require.NoError(t, m.CreateLogoutRequest(context.Background(), lur2))
153155

154156
cr1.ID = consentChallenge(cr1Flow)

consent/manager_test_helpers.go renamed to consent/test/manager_test_helpers.go

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Copyright © 2022 Ory Corp
22
// SPDX-License-Identifier: Apache-2.0
33

4-
package consent
4+
package test
55

66
import (
77
"context"
@@ -10,6 +10,10 @@ import (
1010
"testing"
1111
"time"
1212

13+
"github.com/ory/fosite/handler/openid"
14+
"github.com/ory/hydra/v2/consent"
15+
"github.com/ory/hydra/v2/oauth2"
16+
1317
"github.com/ory/hydra/v2/aead"
1418
"github.com/ory/hydra/v2/flow"
1519
"github.com/ory/x/assertx"
@@ -178,7 +182,7 @@ func MockAuthRequest(key string, authAt bool, network string) (c *flow.LoginRequ
178182
return c, h, f
179183
}
180184

181-
func SaneMockHandleConsentRequest(t *testing.T, m Manager, f *flow.Flow, c *flow.OAuth2ConsentRequest, authAt time.Time, rememberFor int, remember bool, hasError bool) *flow.AcceptOAuth2ConsentRequest {
185+
func SaneMockHandleConsentRequest(t *testing.T, m consent.Manager, f *flow.Flow, c *flow.OAuth2ConsentRequest, authAt time.Time, rememberFor int, remember bool, hasError bool) *flow.AcceptOAuth2ConsentRequest {
182186
var rde *flow.RequestDeniedError
183187
if hasError {
184188
rde = &flow.RequestDeniedError{
@@ -212,7 +216,7 @@ func SaneMockHandleConsentRequest(t *testing.T, m Manager, f *flow.Flow, c *flow
212216
}
213217

214218
// SaneMockConsentRequest does the same thing as MockConsentRequest but uses less insanity and implicit dependencies.
215-
func SaneMockConsentRequest(t *testing.T, m Manager, f *flow.Flow, skip bool) (c *flow.OAuth2ConsentRequest) {
219+
func SaneMockConsentRequest(t *testing.T, m consent.Manager, f *flow.Flow, skip bool) (c *flow.OAuth2ConsentRequest) {
216220
c = &flow.OAuth2ConsentRequest{
217221
RequestedScope: []string{"scopea", "scopeb"},
218222
RequestedAudience: []string{"auda", "audb"},
@@ -244,7 +248,7 @@ func SaneMockConsentRequest(t *testing.T, m Manager, f *flow.Flow, skip bool) (c
244248
}
245249

246250
// SaneMockAuthRequest does the same thing as MockAuthRequest but uses less insanity and implicit dependencies.
247-
func SaneMockAuthRequest(t *testing.T, m Manager, ls *flow.LoginSession, cl *client.Client) (c *flow.LoginRequest) {
251+
func SaneMockAuthRequest(t *testing.T, m consent.Manager, ls *flow.LoginSession, cl *client.Client) (c *flow.LoginRequest) {
248252
c = &flow.LoginRequest{
249253
OpenIDConnectContext: &flow.OAuth2ConsentRequestOpenIDConnectContext{
250254
ACRValues: []string{"1", "2"},
@@ -275,7 +279,7 @@ func makeID(base string, network string, key string) string {
275279
func TestHelperNID(r interface {
276280
client.ManagerProvider
277281
FlowCipher() *aead.XChaCha20Poly1305
278-
}, t1ValidNID Manager, t2InvalidNID Manager) func(t *testing.T) {
282+
}, t1ValidNID consent.Manager, t2InvalidNID consent.Manager) func(t *testing.T) {
279283
testClient := client.Client{ID: "2022-03-11-client-nid-test-1"}
280284
testLS := flow.LoginSession{
281285
ID: "2022-03-11-ls-nid-test-1",
@@ -338,7 +342,7 @@ type Deps interface {
338342
contextx.Provider
339343
}
340344

341-
func ManagerTests(deps Deps, m Manager, clientManager client.Manager, fositeManager x.FositeStorer, network string, parallel bool) func(t *testing.T) {
345+
func ManagerTests(deps Deps, m consent.Manager, clientManager client.Manager, fositeManager x.FositeStorer, network string, parallel bool) func(t *testing.T) {
342346
lr := make(map[string]*flow.LoginRequest)
343347

344348
return func(t *testing.T) {
@@ -590,7 +594,7 @@ func ManagerTests(deps Deps, m Manager, clientManager client.Manager, fositeMana
590594
rs, err := m.FindGrantedAndRememberedConsentRequests(ctx, "fk-client-"+tc.keyC, "subject"+tc.keyS)
591595
if tc.expectedLength == 0 {
592596
assert.Nil(t, rs)
593-
assert.EqualError(t, err, ErrNoPreviousConsentFound.Error())
597+
assert.EqualError(t, err, consent.ErrNoPreviousConsentFound.Error())
594598
} else {
595599
require.NoError(t, err)
596600
assert.Len(t, rs, tc.expectedLength)
@@ -674,22 +678,22 @@ func ManagerTests(deps Deps, m Manager, clientManager client.Manager, fositeMana
674678
require.NoError(t, fositeManager.CreateAccessTokenSession(
675679
ctx,
676680
makeID("", network, "trva1"),
677-
&fosite.Request{Client: cr1.Client, ID: crr1.ID, RequestedAt: time.Now()},
681+
&fosite.Request{Client: cr1.Client, ID: crr1.ID, RequestedAt: time.Now(), Session: &oauth2.Session{DefaultSession: openid.NewDefaultSession()}},
678682
))
679683
require.NoError(t, fositeManager.CreateRefreshTokenSession(
680684
ctx,
681685
makeID("", network, "rrva1"),
682-
&fosite.Request{Client: cr1.Client, ID: crr1.ID, RequestedAt: time.Now()},
686+
&fosite.Request{Client: cr1.Client, ID: crr1.ID, RequestedAt: time.Now(), Session: &oauth2.Session{DefaultSession: openid.NewDefaultSession()}},
683687
))
684688
require.NoError(t, fositeManager.CreateAccessTokenSession(
685689
ctx,
686690
makeID("", network, "trva2"),
687-
&fosite.Request{Client: cr2.Client, ID: crr2.ID, RequestedAt: time.Now()},
691+
&fosite.Request{Client: cr2.Client, ID: crr2.ID, RequestedAt: time.Now(), Session: &oauth2.Session{DefaultSession: openid.NewDefaultSession()}},
688692
))
689693
require.NoError(t, fositeManager.CreateRefreshTokenSession(
690694
ctx,
691695
makeID("", network, "rrva2"),
692-
&fosite.Request{Client: cr2.Client, ID: crr2.ID, RequestedAt: time.Now()},
696+
&fosite.Request{Client: cr2.Client, ID: crr2.ID, RequestedAt: time.Now(), Session: &oauth2.Session{DefaultSession: openid.NewDefaultSession()}},
693697
))
694698

695699
for i, tc := range []struct {
@@ -800,7 +804,7 @@ func ManagerTests(deps Deps, m Manager, clientManager client.Manager, fositeMana
800804
assert.Equal(t, len(tc.challenges), len(consents))
801805

802806
if len(tc.challenges) == 0 {
803-
assert.EqualError(t, err, ErrNoPreviousConsentFound.Error())
807+
assert.EqualError(t, err, consent.ErrNoPreviousConsentFound.Error())
804808
} else {
805809
require.NoError(t, err)
806810
for _, consent := range consents {
@@ -842,7 +846,7 @@ func ManagerTests(deps Deps, m Manager, clientManager client.Manager, fositeMana
842846
assert.Equal(t, len(tc.challenges), len(consents))
843847

844848
if len(tc.challenges) == 0 {
845-
assert.EqualError(t, err, ErrNoPreviousConsentFound.Error())
849+
assert.EqualError(t, err, consent.ErrNoPreviousConsentFound.Error())
846850
} else {
847851
require.NoError(t, err)
848852
for _, consent := range consents {
@@ -862,7 +866,7 @@ func ManagerTests(deps Deps, m Manager, clientManager client.Manager, fositeMana
862866
_, err := m.GetForcedObfuscatedLoginSession(ctx, "fk-client-1", "obfuscated-1")
863867
require.True(t, errors.Is(err, x.ErrNotFound))
864868

865-
expect := &ForcedObfuscatedLoginSession{
869+
expect := &consent.ForcedObfuscatedLoginSession{
866870
ClientID: "fk-client-1",
867871
Subject: "subject-1",
868872
SubjectObfuscated: "obfuscated-1",
@@ -875,7 +879,7 @@ func ManagerTests(deps Deps, m Manager, clientManager client.Manager, fositeMana
875879
got.NID = gofrsuuid.Nil
876880
assert.EqualValues(t, expect, got)
877881

878-
expect = &ForcedObfuscatedLoginSession{
882+
expect = &consent.ForcedObfuscatedLoginSession{
879883
ClientID: "fk-client-1",
880884
Subject: "subject-1",
881885
SubjectObfuscated: "obfuscated-2",

0 commit comments

Comments
 (0)