mirror of
https://github.com/steveiliop56/tinyauth.git
synced 2026-05-19 02:30:14 +00:00
refactor memeory_test.go
This commit is contained in:
@@ -13,8 +13,16 @@ import (
|
|||||||
|
|
||||||
var ctx = context.Background()
|
var ctx = context.Background()
|
||||||
|
|
||||||
func TestCreateAndGetSession(t *testing.T) {
|
func TestMemoryStore(t *testing.T) {
|
||||||
s := memory.New()
|
type testCase struct {
|
||||||
|
description string
|
||||||
|
run func(t *testing.T, s repository.Store)
|
||||||
|
}
|
||||||
|
|
||||||
|
tests := []testCase{
|
||||||
|
{
|
||||||
|
description: "Create and get session",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
sess, err := s.CreateSession(ctx, repository.CreateSessionParams{
|
sess, err := s.CreateSession(ctx, repository.CreateSessionParams{
|
||||||
UUID: "uuid-1",
|
UUID: "uuid-1",
|
||||||
Username: "alice",
|
Username: "alice",
|
||||||
@@ -27,16 +35,18 @@ func TestCreateAndGetSession(t *testing.T) {
|
|||||||
got, err := s.GetSession(ctx, "uuid-1")
|
got, err := s.GetSession(ctx, "uuid-1")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, sess, got)
|
assert.Equal(t, sess, got)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestGetSession_NotFound(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Get session not found",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
_, err := s.GetSession(ctx, "missing")
|
_, err := s.GetSession(ctx, "missing")
|
||||||
assert.ErrorIs(t, err, repository.ErrNotFound)
|
assert.ErrorIs(t, err, repository.ErrNotFound)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestUpdateSession(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Update session",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
_, err := s.CreateSession(ctx, repository.CreateSessionParams{UUID: "uuid-1", Username: "alice"})
|
_, err := s.CreateSession(ctx, repository.CreateSessionParams{UUID: "uuid-1", Username: "alice"})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
@@ -52,16 +62,18 @@ func TestUpdateSession(t *testing.T) {
|
|||||||
got, err := s.GetSession(ctx, "uuid-1")
|
got, err := s.GetSession(ctx, "uuid-1")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, updated, got)
|
assert.Equal(t, updated, got)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestUpdateSession_NotFound(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Update session not found",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
_, err := s.UpdateSession(ctx, repository.UpdateSessionParams{UUID: "missing"})
|
_, err := s.UpdateSession(ctx, repository.UpdateSessionParams{UUID: "missing"})
|
||||||
assert.ErrorIs(t, err, repository.ErrNotFound)
|
assert.ErrorIs(t, err, repository.ErrNotFound)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestDeleteSession(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Delete session",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
_, err := s.CreateSession(ctx, repository.CreateSessionParams{UUID: "uuid-1"})
|
_, err := s.CreateSession(ctx, repository.CreateSessionParams{UUID: "uuid-1"})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
@@ -69,10 +81,11 @@ func TestDeleteSession(t *testing.T) {
|
|||||||
|
|
||||||
_, err = s.GetSession(ctx, "uuid-1")
|
_, err = s.GetSession(ctx, "uuid-1")
|
||||||
assert.ErrorIs(t, err, repository.ErrNotFound)
|
assert.ErrorIs(t, err, repository.ErrNotFound)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestDeleteExpiredSessions(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Delete expired sessions",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
_, err := s.CreateSession(ctx, repository.CreateSessionParams{UUID: "expired", Expiry: 10})
|
_, err := s.CreateSession(ctx, repository.CreateSessionParams{UUID: "expired", Expiry: 10})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
_, err = s.CreateSession(ctx, repository.CreateSessionParams{UUID: "valid", Expiry: 100})
|
_, err = s.CreateSession(ctx, repository.CreateSessionParams{UUID: "valid", Expiry: 100})
|
||||||
@@ -85,10 +98,11 @@ func TestDeleteExpiredSessions(t *testing.T) {
|
|||||||
|
|
||||||
_, err = s.GetSession(ctx, "valid")
|
_, err = s.GetSession(ctx, "valid")
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestCreateAndGetOidcCode(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Create and get OIDC code",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
code, err := s.CreateOidcCode(ctx, repository.CreateOidcCodeParams{
|
code, err := s.CreateOidcCode(ctx, repository.CreateOidcCodeParams{
|
||||||
Sub: "sub-1",
|
Sub: "sub-1",
|
||||||
CodeHash: "hash-1",
|
CodeHash: "hash-1",
|
||||||
@@ -104,16 +118,18 @@ func TestCreateAndGetOidcCode(t *testing.T) {
|
|||||||
|
|
||||||
_, err = s.GetOidcCode(ctx, "hash-1")
|
_, err = s.GetOidcCode(ctx, "hash-1")
|
||||||
assert.ErrorIs(t, err, repository.ErrNotFound)
|
assert.ErrorIs(t, err, repository.ErrNotFound)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestGetOidcCode_NotFound(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Get OIDC code not found",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
_, err := s.GetOidcCode(ctx, "missing")
|
_, err := s.GetOidcCode(ctx, "missing")
|
||||||
assert.ErrorIs(t, err, repository.ErrNotFound)
|
assert.ErrorIs(t, err, repository.ErrNotFound)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestGetOidcCodeBySub(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Get OIDC code by sub",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
_, err := s.CreateOidcCode(ctx, repository.CreateOidcCodeParams{Sub: "sub-1", CodeHash: "hash-1"})
|
_, err := s.CreateOidcCode(ctx, repository.CreateOidcCodeParams{Sub: "sub-1", CodeHash: "hash-1"})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
@@ -124,16 +140,18 @@ func TestGetOidcCodeBySub(t *testing.T) {
|
|||||||
// destructive — gone after read
|
// destructive — gone after read
|
||||||
_, err = s.GetOidcCodeBySub(ctx, "sub-1")
|
_, err = s.GetOidcCodeBySub(ctx, "sub-1")
|
||||||
assert.ErrorIs(t, err, repository.ErrNotFound)
|
assert.ErrorIs(t, err, repository.ErrNotFound)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestGetOidcCodeBySub_NotFound(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Get OIDC code by sub not found",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
_, err := s.GetOidcCodeBySub(ctx, "missing")
|
_, err := s.GetOidcCodeBySub(ctx, "missing")
|
||||||
assert.ErrorIs(t, err, repository.ErrNotFound)
|
assert.ErrorIs(t, err, repository.ErrNotFound)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestGetOidcCodeUnsafe(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Get OIDC code unsafe",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
_, err := s.CreateOidcCode(ctx, repository.CreateOidcCodeParams{Sub: "sub-1", CodeHash: "hash-1"})
|
_, err := s.CreateOidcCode(ctx, repository.CreateOidcCodeParams{Sub: "sub-1", CodeHash: "hash-1"})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
@@ -144,16 +162,18 @@ func TestGetOidcCodeUnsafe(t *testing.T) {
|
|||||||
// non-destructive — still present
|
// non-destructive — still present
|
||||||
_, err = s.GetOidcCodeUnsafe(ctx, "hash-1")
|
_, err = s.GetOidcCodeUnsafe(ctx, "hash-1")
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestGetOidcCodeUnsafe_NotFound(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Get OIDC code unsafe not found",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
_, err := s.GetOidcCodeUnsafe(ctx, "missing")
|
_, err := s.GetOidcCodeUnsafe(ctx, "missing")
|
||||||
assert.ErrorIs(t, err, repository.ErrNotFound)
|
assert.ErrorIs(t, err, repository.ErrNotFound)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestGetOidcCodeBySubUnsafe(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Get OIDC code by sub unsafe",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
_, err := s.CreateOidcCode(ctx, repository.CreateOidcCodeParams{Sub: "sub-1", CodeHash: "hash-1"})
|
_, err := s.CreateOidcCode(ctx, repository.CreateOidcCodeParams{Sub: "sub-1", CodeHash: "hash-1"})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
@@ -164,25 +184,28 @@ func TestGetOidcCodeBySubUnsafe(t *testing.T) {
|
|||||||
// non-destructive — still present
|
// non-destructive — still present
|
||||||
_, err = s.GetOidcCodeBySubUnsafe(ctx, "sub-1")
|
_, err = s.GetOidcCodeBySubUnsafe(ctx, "sub-1")
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestGetOidcCodeBySubUnsafe_NotFound(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Get OIDC code by sub unsafe not found",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
_, err := s.GetOidcCodeBySubUnsafe(ctx, "missing")
|
_, err := s.GetOidcCodeBySubUnsafe(ctx, "missing")
|
||||||
assert.ErrorIs(t, err, repository.ErrNotFound)
|
assert.ErrorIs(t, err, repository.ErrNotFound)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestCreateOidcCode_UniqueSubConstraint(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Create OIDC code unique sub constraint",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
_, err := s.CreateOidcCode(ctx, repository.CreateOidcCodeParams{Sub: "sub-1", CodeHash: "hash-1"})
|
_, err := s.CreateOidcCode(ctx, repository.CreateOidcCodeParams{Sub: "sub-1", CodeHash: "hash-1"})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
_, err = s.CreateOidcCode(ctx, repository.CreateOidcCodeParams{Sub: "sub-1", CodeHash: "hash-2"})
|
_, err = s.CreateOidcCode(ctx, repository.CreateOidcCodeParams{Sub: "sub-1", CodeHash: "hash-2"})
|
||||||
assert.ErrorContains(t, err, "UNIQUE constraint failed: oidc_codes.sub")
|
assert.ErrorContains(t, err, "UNIQUE constraint failed: oidc_codes.sub")
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestDeleteOidcCode(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Delete OIDC code",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
_, err := s.CreateOidcCode(ctx, repository.CreateOidcCodeParams{Sub: "sub-1", CodeHash: "hash-1"})
|
_, err := s.CreateOidcCode(ctx, repository.CreateOidcCodeParams{Sub: "sub-1", CodeHash: "hash-1"})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
@@ -190,10 +213,11 @@ func TestDeleteOidcCode(t *testing.T) {
|
|||||||
|
|
||||||
_, err = s.GetOidcCodeUnsafe(ctx, "hash-1")
|
_, err = s.GetOidcCodeUnsafe(ctx, "hash-1")
|
||||||
assert.ErrorIs(t, err, repository.ErrNotFound)
|
assert.ErrorIs(t, err, repository.ErrNotFound)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestDeleteOidcCodeBySub(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Delete OIDC code by sub",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
_, err := s.CreateOidcCode(ctx, repository.CreateOidcCodeParams{Sub: "sub-1", CodeHash: "hash-1"})
|
_, err := s.CreateOidcCode(ctx, repository.CreateOidcCodeParams{Sub: "sub-1", CodeHash: "hash-1"})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
@@ -201,10 +225,11 @@ func TestDeleteOidcCodeBySub(t *testing.T) {
|
|||||||
|
|
||||||
_, err = s.GetOidcCodeUnsafe(ctx, "hash-1")
|
_, err = s.GetOidcCodeUnsafe(ctx, "hash-1")
|
||||||
assert.ErrorIs(t, err, repository.ErrNotFound)
|
assert.ErrorIs(t, err, repository.ErrNotFound)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestDeleteExpiredOidcCodes(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Delete expired OIDC codes",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
_, err := s.CreateOidcCode(ctx, repository.CreateOidcCodeParams{Sub: "sub-1", CodeHash: "hash-1", ExpiresAt: 10})
|
_, err := s.CreateOidcCode(ctx, repository.CreateOidcCodeParams{Sub: "sub-1", CodeHash: "hash-1", ExpiresAt: 10})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
_, err = s.CreateOidcCode(ctx, repository.CreateOidcCodeParams{Sub: "sub-2", CodeHash: "hash-2", ExpiresAt: 100})
|
_, err = s.CreateOidcCode(ctx, repository.CreateOidcCodeParams{Sub: "sub-2", CodeHash: "hash-2", ExpiresAt: 100})
|
||||||
@@ -217,10 +242,11 @@ func TestDeleteExpiredOidcCodes(t *testing.T) {
|
|||||||
|
|
||||||
_, err = s.GetOidcCodeUnsafe(ctx, "hash-2")
|
_, err = s.GetOidcCodeUnsafe(ctx, "hash-2")
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestCreateAndGetOidcToken(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Create and get OIDC token",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
tok, err := s.CreateOidcToken(ctx, repository.CreateOidcTokenParams{
|
tok, err := s.CreateOidcToken(ctx, repository.CreateOidcTokenParams{
|
||||||
Sub: "sub-1",
|
Sub: "sub-1",
|
||||||
AccessTokenHash: "at-hash-1",
|
AccessTokenHash: "at-hash-1",
|
||||||
@@ -232,25 +258,28 @@ func TestCreateAndGetOidcToken(t *testing.T) {
|
|||||||
got, err := s.GetOidcToken(ctx, "at-hash-1")
|
got, err := s.GetOidcToken(ctx, "at-hash-1")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, tok, got)
|
assert.Equal(t, tok, got)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestGetOidcToken_NotFound(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Get OIDC token not found",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
_, err := s.GetOidcToken(ctx, "missing")
|
_, err := s.GetOidcToken(ctx, "missing")
|
||||||
assert.ErrorIs(t, err, repository.ErrNotFound)
|
assert.ErrorIs(t, err, repository.ErrNotFound)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestCreateOidcToken_UniqueSubConstraint(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Create OIDC token unique sub constraint",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
_, err := s.CreateOidcToken(ctx, repository.CreateOidcTokenParams{Sub: "sub-1", AccessTokenHash: "at-1"})
|
_, err := s.CreateOidcToken(ctx, repository.CreateOidcTokenParams{Sub: "sub-1", AccessTokenHash: "at-1"})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
_, err = s.CreateOidcToken(ctx, repository.CreateOidcTokenParams{Sub: "sub-1", AccessTokenHash: "at-2"})
|
_, err = s.CreateOidcToken(ctx, repository.CreateOidcTokenParams{Sub: "sub-1", AccessTokenHash: "at-2"})
|
||||||
assert.ErrorContains(t, err, "UNIQUE constraint failed: oidc_tokens.sub")
|
assert.ErrorContains(t, err, "UNIQUE constraint failed: oidc_tokens.sub")
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestGetOidcTokenByRefreshToken(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Get OIDC token by refresh token",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
_, err := s.CreateOidcToken(ctx, repository.CreateOidcTokenParams{
|
_, err := s.CreateOidcToken(ctx, repository.CreateOidcTokenParams{
|
||||||
Sub: "sub-1",
|
Sub: "sub-1",
|
||||||
AccessTokenHash: "at-1",
|
AccessTokenHash: "at-1",
|
||||||
@@ -261,16 +290,18 @@ func TestGetOidcTokenByRefreshToken(t *testing.T) {
|
|||||||
got, err := s.GetOidcTokenByRefreshToken(ctx, "rt-1")
|
got, err := s.GetOidcTokenByRefreshToken(ctx, "rt-1")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, "sub-1", got.Sub)
|
assert.Equal(t, "sub-1", got.Sub)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestGetOidcTokenByRefreshToken_NotFound(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Get OIDC token by refresh token not found",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
_, err := s.GetOidcTokenByRefreshToken(ctx, "missing")
|
_, err := s.GetOidcTokenByRefreshToken(ctx, "missing")
|
||||||
assert.ErrorIs(t, err, repository.ErrNotFound)
|
assert.ErrorIs(t, err, repository.ErrNotFound)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestGetOidcTokenBySub(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Get OIDC token by sub",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
_, err := s.CreateOidcToken(ctx, repository.CreateOidcTokenParams{
|
_, err := s.CreateOidcToken(ctx, repository.CreateOidcTokenParams{
|
||||||
Sub: "sub-1",
|
Sub: "sub-1",
|
||||||
AccessTokenHash: "at-1",
|
AccessTokenHash: "at-1",
|
||||||
@@ -280,16 +311,18 @@ func TestGetOidcTokenBySub(t *testing.T) {
|
|||||||
got, err := s.GetOidcTokenBySub(ctx, "sub-1")
|
got, err := s.GetOidcTokenBySub(ctx, "sub-1")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, "at-1", got.AccessTokenHash)
|
assert.Equal(t, "at-1", got.AccessTokenHash)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestGetOidcTokenBySub_NotFound(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Get OIDC token by sub not found",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
_, err := s.GetOidcTokenBySub(ctx, "missing")
|
_, err := s.GetOidcTokenBySub(ctx, "missing")
|
||||||
assert.ErrorIs(t, err, repository.ErrNotFound)
|
assert.ErrorIs(t, err, repository.ErrNotFound)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestUpdateOidcTokenByRefreshToken(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Update OIDC token by refresh token",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
_, err := s.CreateOidcToken(ctx, repository.CreateOidcTokenParams{
|
_, err := s.CreateOidcToken(ctx, repository.CreateOidcTokenParams{
|
||||||
Sub: "sub-1",
|
Sub: "sub-1",
|
||||||
AccessTokenHash: "at-1",
|
AccessTokenHash: "at-1",
|
||||||
@@ -315,18 +348,20 @@ func TestUpdateOidcTokenByRefreshToken(t *testing.T) {
|
|||||||
got, err := s.GetOidcToken(ctx, "at-2")
|
got, err := s.GetOidcToken(ctx, "at-2")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, "sub-1", got.Sub)
|
assert.Equal(t, "sub-1", got.Sub)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestUpdateOidcTokenByRefreshToken_NotFound(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Update OIDC token by refresh token not found",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
_, err := s.UpdateOidcTokenByRefreshToken(ctx, repository.UpdateOidcTokenByRefreshTokenParams{
|
_, err := s.UpdateOidcTokenByRefreshToken(ctx, repository.UpdateOidcTokenByRefreshTokenParams{
|
||||||
RefreshTokenHash_2: "missing",
|
RefreshTokenHash_2: "missing",
|
||||||
})
|
})
|
||||||
assert.ErrorIs(t, err, repository.ErrNotFound)
|
assert.ErrorIs(t, err, repository.ErrNotFound)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestDeleteOidcToken(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Delete OIDC token",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
_, err := s.CreateOidcToken(ctx, repository.CreateOidcTokenParams{Sub: "sub-1", AccessTokenHash: "at-1"})
|
_, err := s.CreateOidcToken(ctx, repository.CreateOidcTokenParams{Sub: "sub-1", AccessTokenHash: "at-1"})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
@@ -334,10 +369,11 @@ func TestDeleteOidcToken(t *testing.T) {
|
|||||||
|
|
||||||
_, err = s.GetOidcToken(ctx, "at-1")
|
_, err = s.GetOidcToken(ctx, "at-1")
|
||||||
assert.ErrorIs(t, err, repository.ErrNotFound)
|
assert.ErrorIs(t, err, repository.ErrNotFound)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestDeleteOidcTokenBySub(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Delete OIDC token by sub",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
_, err := s.CreateOidcToken(ctx, repository.CreateOidcTokenParams{Sub: "sub-1", AccessTokenHash: "at-1"})
|
_, err := s.CreateOidcToken(ctx, repository.CreateOidcTokenParams{Sub: "sub-1", AccessTokenHash: "at-1"})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
@@ -345,10 +381,11 @@ func TestDeleteOidcTokenBySub(t *testing.T) {
|
|||||||
|
|
||||||
_, err = s.GetOidcToken(ctx, "at-1")
|
_, err = s.GetOidcToken(ctx, "at-1")
|
||||||
assert.ErrorIs(t, err, repository.ErrNotFound)
|
assert.ErrorIs(t, err, repository.ErrNotFound)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestDeleteOidcTokenByCodeHash(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Delete OIDC token by code hash",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
_, err := s.CreateOidcToken(ctx, repository.CreateOidcTokenParams{
|
_, err := s.CreateOidcToken(ctx, repository.CreateOidcTokenParams{
|
||||||
Sub: "sub-1",
|
Sub: "sub-1",
|
||||||
AccessTokenHash: "at-1",
|
AccessTokenHash: "at-1",
|
||||||
@@ -360,10 +397,11 @@ func TestDeleteOidcTokenByCodeHash(t *testing.T) {
|
|||||||
|
|
||||||
_, err = s.GetOidcToken(ctx, "at-1")
|
_, err = s.GetOidcToken(ctx, "at-1")
|
||||||
assert.ErrorIs(t, err, repository.ErrNotFound)
|
assert.ErrorIs(t, err, repository.ErrNotFound)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestDeleteExpiredOidcTokens(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Delete expired OIDC tokens",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
// expired by TokenExpiresAt
|
// expired by TokenExpiresAt
|
||||||
_, err := s.CreateOidcToken(ctx, repository.CreateOidcTokenParams{
|
_, err := s.CreateOidcToken(ctx, repository.CreateOidcTokenParams{
|
||||||
Sub: "sub-1", AccessTokenHash: "at-1",
|
Sub: "sub-1", AccessTokenHash: "at-1",
|
||||||
@@ -392,10 +430,11 @@ func TestDeleteExpiredOidcTokens(t *testing.T) {
|
|||||||
|
|
||||||
_, err = s.GetOidcToken(ctx, "at-3")
|
_, err = s.GetOidcToken(ctx, "at-3")
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestCreateAndGetOidcUserInfo(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Create and get OIDC user info",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
u, err := s.CreateOidcUserInfo(ctx, repository.CreateOidcUserInfoParams{
|
u, err := s.CreateOidcUserInfo(ctx, repository.CreateOidcUserInfoParams{
|
||||||
Sub: "sub-1",
|
Sub: "sub-1",
|
||||||
Name: "Alice",
|
Name: "Alice",
|
||||||
@@ -407,16 +446,18 @@ func TestCreateAndGetOidcUserInfo(t *testing.T) {
|
|||||||
got, err := s.GetOidcUserInfo(ctx, "sub-1")
|
got, err := s.GetOidcUserInfo(ctx, "sub-1")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, u, got)
|
assert.Equal(t, u, got)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestGetOidcUserInfo_NotFound(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Get OIDC user info not found",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
_, err := s.GetOidcUserInfo(ctx, "missing")
|
_, err := s.GetOidcUserInfo(ctx, "missing")
|
||||||
assert.ErrorIs(t, err, repository.ErrNotFound)
|
assert.ErrorIs(t, err, repository.ErrNotFound)
|
||||||
}
|
},
|
||||||
|
},
|
||||||
func TestDeleteOidcUserInfo(t *testing.T) {
|
{
|
||||||
s := memory.New()
|
description: "Delete OIDC user info",
|
||||||
|
run: func(t *testing.T, s repository.Store) {
|
||||||
_, err := s.CreateOidcUserInfo(ctx, repository.CreateOidcUserInfoParams{Sub: "sub-1"})
|
_, err := s.CreateOidcUserInfo(ctx, repository.CreateOidcUserInfoParams{Sub: "sub-1"})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
@@ -424,4 +465,14 @@ func TestDeleteOidcUserInfo(t *testing.T) {
|
|||||||
|
|
||||||
_, err = s.GetOidcUserInfo(ctx, "sub-1")
|
_, err = s.GetOidcUserInfo(ctx, "sub-1")
|
||||||
assert.ErrorIs(t, err, repository.ErrNotFound)
|
assert.ErrorIs(t, err, repository.ErrNotFound)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
t.Run(test.description, func(t *testing.T) {
|
||||||
|
s := memory.New()
|
||||||
|
test.run(t, s)
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user