chore: auth test suite lint & prettier

This commit is contained in:
Alessio Gravili
2024-03-14 10:48:48 -04:00
parent b6ce1fbd51
commit e3e0f056a9
6 changed files with 121 additions and 123 deletions

View File

@@ -8,28 +8,28 @@ import { apiKeysSlug, namedSaveToJWTValue, saveToJWTKey, slug } from './shared.j
export default buildConfigWithDefaults({ export default buildConfigWithDefaults({
admin: { admin: {
user: 'users',
autoLogin: { autoLogin: {
email: devUser.email, email: devUser.email,
password: devUser.password, password: devUser.password,
prefillOnly: true, prefillOnly: true,
}, },
user: 'users',
}, },
collections: [ collections: [
{ {
slug, slug,
auth: { auth: {
tokenExpiration: 7200, // 2 hours
verify: false,
maxLoginAttempts: 2,
lockTime: 600 * 1000, // lock time in ms
useAPIKey: true,
depth: 0,
cookies: { cookies: {
secure: false,
sameSite: 'Lax',
domain: undefined, domain: undefined,
sameSite: 'Lax',
secure: false,
}, },
depth: 0,
lockTime: 600 * 1000, // lock time in ms
maxLoginAttempts: 2,
tokenExpiration: 7200, // 2 hours
useAPIKey: true,
verify: false,
}, },
fields: [ fields: [
{ {
@@ -43,19 +43,19 @@ export default buildConfigWithDefaults({
}, },
{ {
name: 'roles', name: 'roles',
label: 'Role',
type: 'select', type: 'select',
options: ['admin', 'editor', 'moderator', 'user', 'viewer'],
defaultValue: ['user'], defaultValue: ['user'],
hasMany: true,
label: 'Role',
options: ['admin', 'editor', 'moderator', 'user', 'viewer'],
required: true, required: true,
saveToJWT: true, saveToJWT: true,
hasMany: true,
}, },
{ {
name: 'namedSaveToJWT', name: 'namedSaveToJWT',
label: 'Named Save To JWT',
type: 'text', type: 'text',
defaultValue: namedSaveToJWTValue, defaultValue: namedSaveToJWTValue,
label: 'Named Save To JWT',
saveToJWT: saveToJWTKey, saveToJWT: saveToJWTKey,
}, },
{ {
@@ -64,55 +64,53 @@ export default buildConfigWithDefaults({
fields: [ fields: [
{ {
name: 'liftedSaveToJWT', name: 'liftedSaveToJWT',
label: 'Lifted Save To JWT',
type: 'text', type: 'text',
saveToJWT: 'x-lifted-from-group',
defaultValue: 'lifted from group', defaultValue: 'lifted from group',
label: 'Lifted Save To JWT',
saveToJWT: 'x-lifted-from-group',
}, },
], ],
}, },
{ {
name: 'groupSaveToJWT', name: 'groupSaveToJWT',
label: 'Group Save To JWT',
type: 'group', type: 'group',
saveToJWT: 'x-group',
fields: [ fields: [
{ {
name: 'saveToJWTString', name: 'saveToJWTString',
label: 'Save To JWT String',
type: 'text', type: 'text',
saveToJWT: 'x-test',
defaultValue: 'nested property', defaultValue: 'nested property',
label: 'Save To JWT String',
saveToJWT: 'x-test',
}, },
{ {
name: 'saveToJWTFalse', name: 'saveToJWTFalse',
label: 'Save To JWT False',
type: 'text', type: 'text',
saveToJWT: false,
defaultValue: 'nested property', defaultValue: 'nested property',
label: 'Save To JWT False',
saveToJWT: false,
}, },
], ],
label: 'Group Save To JWT',
saveToJWT: 'x-group',
}, },
{ {
type: 'tabs', type: 'tabs',
tabs: [ tabs: [
{ {
name: 'saveToJWTTab', name: 'saveToJWTTab',
label: 'Save To JWT Tab',
saveToJWT: true,
fields: [ fields: [
{ {
name: 'test', name: 'test',
type: 'text', type: 'text',
saveToJWT: 'x-field',
defaultValue: 'yes', defaultValue: 'yes',
saveToJWT: 'x-field',
}, },
], ],
label: 'Save To JWT Tab',
saveToJWT: true,
}, },
{ {
name: 'tabSaveToJWTString', name: 'tabSaveToJWTString',
label: 'Tab Save To JWT String',
saveToJWT: 'tab-test',
fields: [ fields: [
{ {
name: 'includedByDefault', name: 'includedByDefault',
@@ -120,49 +118,51 @@ export default buildConfigWithDefaults({
defaultValue: 'yes', defaultValue: 'yes',
}, },
], ],
label: 'Tab Save To JWT String',
saveToJWT: 'tab-test',
}, },
{ {
label: 'No Name',
fields: [ fields: [
{ {
name: 'tabLiftedSaveToJWT', name: 'tabLiftedSaveToJWT',
label: 'Tab Lifted Save To JWT',
type: 'text', type: 'text',
saveToJWT: true,
defaultValue: 'lifted from unnamed tab', defaultValue: 'lifted from unnamed tab',
label: 'Tab Lifted Save To JWT',
saveToJWT: true,
}, },
{ {
name: 'unnamedTabSaveToJWTString', name: 'unnamedTabSaveToJWTString',
label: 'Unnamed Tab Save To JWT String',
type: 'text', type: 'text',
saveToJWT: 'x-tab-field',
defaultValue: 'text', defaultValue: 'text',
label: 'Unnamed Tab Save To JWT String',
saveToJWT: 'x-tab-field',
}, },
{ {
name: 'unnamedTabSaveToJWTFalse', name: 'unnamedTabSaveToJWTFalse',
label: 'Unnamed Tab Save To JWT False',
type: 'text', type: 'text',
saveToJWT: false,
defaultValue: 'false', defaultValue: 'false',
label: 'Unnamed Tab Save To JWT False',
saveToJWT: false,
}, },
], ],
label: 'No Name',
}, },
], ],
}, },
{ {
name: 'custom', name: 'custom',
label: 'Custom',
type: 'text', type: 'text',
label: 'Custom',
}, },
{ {
name: 'authDebug', name: 'authDebug',
label: 'Auth Debug',
type: 'ui', type: 'ui',
admin: { admin: {
components: { components: {
Field: AuthDebug, Field: AuthDebug,
}, },
}, },
label: 'Auth Debug',
}, },
], ],
}, },
@@ -203,9 +203,9 @@ export default buildConfigWithDefaults({
await payload.create({ await payload.create({
collection: 'users', collection: 'users',
data: { data: {
custom: 'Hello, world!',
email: devUser.email, email: devUser.email,
password: devUser.password, password: devUser.password,
custom: 'Hello, world!',
}, },
}) })

View File

@@ -32,9 +32,9 @@ describe('AuthStrategies', () => {
beforeAll(async () => { beforeAll(async () => {
await restClient.POST(`/${usersSlug}`, { await restClient.POST(`/${usersSlug}`, {
body: JSON.stringify({ body: JSON.stringify({
name,
code, code,
secret, secret,
name,
}), }),
headers, headers,
}) })

View File

@@ -8,127 +8,125 @@
export interface Config { export interface Config {
collections: { collections: {
users: User; users: User
'api-keys': ApiKey; 'api-keys': ApiKey
'public-users': PublicUser; 'public-users': PublicUser
'payload-preferences': PayloadPreference; 'payload-preferences': PayloadPreference
'payload-migrations': PayloadMigration; 'payload-migrations': PayloadMigration
}; }
globals: {}; globals: {}
} }
export interface User { export interface User {
id: string; id: string
roles: ('admin' | 'editor' | 'moderator' | 'user' | 'viewer')[]; roles: ('admin' | 'editor' | 'moderator' | 'user' | 'viewer')[]
namedSaveToJWT?: string; namedSaveToJWT?: string
group?: { group?: {
liftedSaveToJWT?: string; liftedSaveToJWT?: string
}; }
groupSaveToJWT?: { groupSaveToJWT?: {
saveToJWTString?: string; saveToJWTString?: string
saveToJWTFalse?: string; saveToJWTFalse?: string
}; }
saveToJWTTab: { saveToJWTTab: {
test?: string; test?: string
}; }
tabSaveToJWTString: { tabSaveToJWTString: {
includedByDefault?: string; includedByDefault?: string
}; }
tabLiftedSaveToJWT?: string; tabLiftedSaveToJWT?: string
unnamedTabSaveToJWTString?: string; unnamedTabSaveToJWTString?: string
unnamedTabSaveToJWTFalse?: string; unnamedTabSaveToJWTFalse?: string
custom?: string; custom?: string
updatedAt: string; updatedAt: string
createdAt: string; createdAt: string
enableAPIKey?: boolean; enableAPIKey?: boolean
apiKey?: string; apiKey?: string
apiKeyIndex?: string; apiKeyIndex?: string
email: string; email: string
resetPasswordToken?: string; resetPasswordToken?: string
resetPasswordExpiration?: string; resetPasswordExpiration?: string
salt?: string; salt?: string
hash?: string; hash?: string
loginAttempts?: number; loginAttempts?: number
lockUntil?: string; lockUntil?: string
password?: string; password?: string
} }
export interface ApiKey { export interface ApiKey {
id: string; id: string
updatedAt: string; updatedAt: string
createdAt: string; createdAt: string
enableAPIKey?: boolean; enableAPIKey?: boolean
apiKey?: string; apiKey?: string
apiKeyIndex?: string; apiKeyIndex?: string
} }
export interface PublicUser { export interface PublicUser {
id: string; id: string
updatedAt: string; updatedAt: string
createdAt: string; createdAt: string
email: string; email: string
resetPasswordToken?: string; resetPasswordToken?: string
resetPasswordExpiration?: string; resetPasswordExpiration?: string
salt?: string; salt?: string
hash?: string; hash?: string
_verified?: boolean; _verified?: boolean
_verificationToken?: string; _verificationToken?: string
loginAttempts?: number; loginAttempts?: number
lockUntil?: string; lockUntil?: string
password?: string; password?: string
} }
export interface PayloadPreference { export interface PayloadPreference {
id: string; id: string
user: user:
| { | {
relationTo: 'users'; relationTo: 'users'
value: string | User; value: string | User
} }
| { | {
relationTo: 'api-keys'; relationTo: 'api-keys'
value: string | ApiKey; value: string | ApiKey
} }
| { | {
relationTo: 'public-users'; relationTo: 'public-users'
value: string | PublicUser; value: string | PublicUser
}; }
key?: string; key?: string
value?: value?:
| { | {
[k: string]: unknown; [k: string]: unknown
} }
| unknown[] | unknown[]
| string | string
| number | number
| boolean | boolean
| null; | null
updatedAt: string; updatedAt: string
createdAt: string; createdAt: string
} }
export interface PayloadMigration { export interface PayloadMigration {
id: string; id: string
name?: string; name?: string
batch?: number; batch?: number
schema?: schema?:
| { | {
[k: string]: unknown; [k: string]: unknown
} }
| unknown[] | unknown[]
| string | string
| number | number
| boolean | boolean
| null; | null
updatedAt: string; updatedAt: string
createdAt: string; createdAt: string
} }
declare module 'payload' { declare module 'payload' {
export interface GeneratedTypes { export interface GeneratedTypes {
collections: { collections: {
'users': User users: User
'api-keys': ApiKey 'api-keys': ApiKey
'public-users': PublicUser 'public-users': PublicUser
'payload-preferences': PayloadPreference 'payload-preferences': PayloadPreference
'payload-migrations': PayloadMigration 'payload-migrations': PayloadMigration
} }
} }
} }

View File

@@ -3,7 +3,6 @@ import { buildConfigWithDefaults } from '../../buildConfigWithDefaults.js'
export const collectionSlug = 'users' export const collectionSlug = 'users'
export default buildConfigWithDefaults({ export default buildConfigWithDefaults({
debug: true,
admin: { admin: {
user: 'users', user: 'users',
}, },
@@ -16,15 +15,16 @@ export default buildConfigWithDefaults({
fields: [ fields: [
{ {
name: 'roles', name: 'roles',
label: 'Role',
type: 'select', type: 'select',
options: ['admin', 'editor', 'moderator', 'user', 'viewer'],
defaultValue: 'user', defaultValue: 'user',
hasMany: true,
label: 'Role',
options: ['admin', 'editor', 'moderator', 'user', 'viewer'],
required: true, required: true,
saveToJWT: true, saveToJWT: true,
hasMany: true,
}, },
], ],
}, },
], ],
debug: true,
}) })

View File

@@ -61,7 +61,7 @@ describe('Remove token from auth responses', () => {
}) })
const response = await restClient.POST(`/${collectionSlug}/reset-password`, { const response = await restClient.POST(`/${collectionSlug}/reset-password`, {
body: JSON.stringify({ token, password: devUser.password }), body: JSON.stringify({ password: devUser.password, token }),
}) })
const result = await response.json() const result = await response.json()

View File

@@ -3,11 +3,11 @@
//"extends": "./tsconfig.json", //"extends": "./tsconfig.json",
"compilerOptions": { "compilerOptions": {
// ensure that nobody can accidentally use this config for a build // ensure that nobody can accidentally use this config for a build
"noEmit": true, "noEmit": true
}, },
"include": [ "include": [
// whatever paths you intend to lint // whatever paths you intend to lint
"./**/*.ts", "./**/*.ts",
"./**/*.tsx" "./**/*.tsx"
], ]
} }