chore: resolves some of the testing suite issues
This commit is contained in:
@@ -28,6 +28,7 @@
|
|||||||
"test:e2e": "ts-node -T ./test/runE2E.ts",
|
"test:e2e": "ts-node -T ./test/runE2E.ts",
|
||||||
"test:e2e:debug": "cross-env PWDEBUG=1 DISABLE_LOGGING=true playwright test",
|
"test:e2e:debug": "cross-env PWDEBUG=1 DISABLE_LOGGING=true playwright test",
|
||||||
"test:e2e:headed": "cross-env DISABLE_LOGGING=true playwright test --headed",
|
"test:e2e:headed": "cross-env DISABLE_LOGGING=true playwright test --headed",
|
||||||
|
"test:int:postgres": "cross-env PAYLOAD_DATABASE=postgres DISABLE_LOGGING=true jest --forceExit --detectOpenHandles",
|
||||||
"test:int": "cross-env DISABLE_LOGGING=true jest --forceExit --detectOpenHandles",
|
"test:int": "cross-env DISABLE_LOGGING=true jest --forceExit --detectOpenHandles",
|
||||||
"translateNewKeys": "pnpm --filter payload run translateNewKeys"
|
"translateNewKeys": "pnpm --filter payload run translateNewKeys"
|
||||||
},
|
},
|
||||||
@@ -49,9 +50,16 @@
|
|||||||
"cross-env": "7.0.3",
|
"cross-env": "7.0.3",
|
||||||
"express": "4.18.2",
|
"express": "4.18.2",
|
||||||
"get-port": "5.1.1",
|
"get-port": "5.1.1",
|
||||||
|
"graphql-request": "3.7.0",
|
||||||
|
"isomorphic-fetch": "3.0.0",
|
||||||
"jest": "29.6.4",
|
"jest": "29.6.4",
|
||||||
"jest-environment-jsdom": "29.6.4",
|
"jest-environment-jsdom": "29.6.4",
|
||||||
|
"jwt-decode": "3.1.2",
|
||||||
|
"mongodb-memory-server": "8.13.0",
|
||||||
|
"node-fetch": "2.6.12",
|
||||||
"prettier": "^3.0.3",
|
"prettier": "^3.0.3",
|
||||||
|
"qs": "6.11.2",
|
||||||
|
"react": "18.2.0",
|
||||||
"shelljs": "0.8.5",
|
"shelljs": "0.8.5",
|
||||||
"ts-node": "10.9.1",
|
"ts-node": "10.9.1",
|
||||||
"typescript": "5.2.2",
|
"typescript": "5.2.2",
|
||||||
|
|||||||
@@ -213,7 +213,6 @@
|
|||||||
"get-port": "5.1.1",
|
"get-port": "5.1.1",
|
||||||
"glob": "8.1.0",
|
"glob": "8.1.0",
|
||||||
"graphql-request": "3.7.0",
|
"graphql-request": "3.7.0",
|
||||||
"mongodb-memory-server": "8.13.0",
|
|
||||||
"node-fetch": "2.6.12",
|
"node-fetch": "2.6.12",
|
||||||
"nodemon": "3.0.1",
|
"nodemon": "3.0.1",
|
||||||
"object.assign": "4.1.4",
|
"object.assign": "4.1.4",
|
||||||
|
|||||||
@@ -45,23 +45,23 @@ const sanitizeCollection = (
|
|||||||
})
|
})
|
||||||
if (!hasUpdatedAt) {
|
if (!hasUpdatedAt) {
|
||||||
sanitized.fields.push({
|
sanitized.fields.push({
|
||||||
|
name: 'updatedAt',
|
||||||
admin: {
|
admin: {
|
||||||
disableBulkEdit: true,
|
disableBulkEdit: true,
|
||||||
hidden: true,
|
hidden: true,
|
||||||
},
|
},
|
||||||
label: translations['general:updatedAt'],
|
label: translations['general:updatedAt'],
|
||||||
name: 'updatedAt',
|
|
||||||
type: 'date',
|
type: 'date',
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
if (!hasCreatedAt) {
|
if (!hasCreatedAt) {
|
||||||
sanitized.fields.push({
|
sanitized.fields.push({
|
||||||
|
name: 'createdAt',
|
||||||
admin: {
|
admin: {
|
||||||
disableBulkEdit: true,
|
disableBulkEdit: true,
|
||||||
hidden: true,
|
hidden: true,
|
||||||
},
|
},
|
||||||
label: translations['general:createdAt'],
|
label: translations['general:createdAt'],
|
||||||
name: 'createdAt',
|
|
||||||
type: 'date',
|
type: 'date',
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -143,7 +143,11 @@ const sanitizeCollection = (
|
|||||||
// /////////////////////////////////
|
// /////////////////////////////////
|
||||||
|
|
||||||
const validRelationships = config.collections.map((c) => c.slug)
|
const validRelationships = config.collections.map((c) => c.slug)
|
||||||
sanitized.fields = sanitizeFields(sanitized.fields, validRelationships)
|
sanitized.fields = sanitizeFields({
|
||||||
|
config,
|
||||||
|
fields: sanitized.fields,
|
||||||
|
validRelationships,
|
||||||
|
})
|
||||||
|
|
||||||
return sanitized as SanitizedCollectionConfig
|
return sanitized as SanitizedCollectionConfig
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import type {
|
|||||||
LocalizationConfigWithLabels,
|
LocalizationConfigWithLabels,
|
||||||
LocalizationConfigWithNoLabels,
|
LocalizationConfigWithNoLabels,
|
||||||
SanitizedConfig,
|
SanitizedConfig,
|
||||||
SanitizedLocalizationConfig,
|
|
||||||
} from './types'
|
} from './types'
|
||||||
|
|
||||||
import { defaultUserCollection } from '../auth/defaultUser'
|
import { defaultUserCollection } from '../auth/defaultUser'
|
||||||
@@ -96,7 +95,7 @@ export const sanitizeConfig = (incomingConfig: Config): SanitizedConfig => {
|
|||||||
checkDuplicateCollections(config.collections)
|
checkDuplicateCollections(config.collections)
|
||||||
|
|
||||||
if (config.globals.length > 0) {
|
if (config.globals.length > 0) {
|
||||||
config.globals = sanitizeGlobals(config.collections, config.globals)
|
config.globals = sanitizeGlobals(config as SanitizedConfig)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof config.serverURL === 'undefined') {
|
if (typeof config.serverURL === 'undefined') {
|
||||||
|
|||||||
@@ -7,9 +7,15 @@ import type {
|
|||||||
NumberField,
|
NumberField,
|
||||||
TextField,
|
TextField,
|
||||||
} from './types'
|
} from './types'
|
||||||
|
import { Config } from '../../config/types'
|
||||||
import { InvalidFieldName, InvalidFieldRelationship, MissingFieldType } from '../../errors'
|
import { InvalidFieldName, InvalidFieldRelationship, MissingFieldType } from '../../errors'
|
||||||
import sanitizeFields from './sanitize'
|
import sanitizeFields from './sanitize'
|
||||||
|
import { DatabaseAdapter } from '../..'
|
||||||
|
|
||||||
|
const dummyConfig: Config = {
|
||||||
|
collections: [],
|
||||||
|
db: () => ({}) as DatabaseAdapter,
|
||||||
|
}
|
||||||
|
|
||||||
describe('sanitizeFields', () => {
|
describe('sanitizeFields', () => {
|
||||||
it('should throw on missing type field', () => {
|
it('should throw on missing type field', () => {
|
||||||
@@ -24,7 +30,11 @@ describe('sanitizeFields', () => {
|
|||||||
expect(() => {
|
expect(() => {
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
sanitizeFields(fields, [])
|
sanitizeFields({
|
||||||
|
config: dummyConfig,
|
||||||
|
fields,
|
||||||
|
validRelationships: [],
|
||||||
|
})
|
||||||
}).toThrow(MissingFieldType)
|
}).toThrow(MissingFieldType)
|
||||||
})
|
})
|
||||||
it('should throw on invalid field name', () => {
|
it('should throw on invalid field name', () => {
|
||||||
@@ -36,7 +46,11 @@ describe('sanitizeFields', () => {
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
expect(() => {
|
expect(() => {
|
||||||
sanitizeFields(fields, [])
|
sanitizeFields({
|
||||||
|
config: dummyConfig,
|
||||||
|
fields,
|
||||||
|
validRelationships: [],
|
||||||
|
})
|
||||||
}).toThrow(InvalidFieldName)
|
}).toThrow(InvalidFieldName)
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -48,7 +62,11 @@ describe('sanitizeFields', () => {
|
|||||||
type: 'text',
|
type: 'text',
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
const sanitizedField = sanitizeFields(fields, [])[0] as TextField
|
const sanitizedField = sanitizeFields({
|
||||||
|
config: dummyConfig,
|
||||||
|
fields,
|
||||||
|
validRelationships: [],
|
||||||
|
})[0] as TextField
|
||||||
expect(sanitizedField.name).toStrictEqual('someField')
|
expect(sanitizedField.name).toStrictEqual('someField')
|
||||||
expect(sanitizedField.label).toStrictEqual('Some Field')
|
expect(sanitizedField.label).toStrictEqual('Some Field')
|
||||||
expect(sanitizedField.type).toStrictEqual('text')
|
expect(sanitizedField.type).toStrictEqual('text')
|
||||||
@@ -61,7 +79,11 @@ describe('sanitizeFields', () => {
|
|||||||
type: 'text',
|
type: 'text',
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
const sanitizedField = sanitizeFields(fields, [])[0] as TextField
|
const sanitizedField = sanitizeFields({
|
||||||
|
config: dummyConfig,
|
||||||
|
fields,
|
||||||
|
validRelationships: [],
|
||||||
|
})[0] as TextField
|
||||||
expect(sanitizedField.name).toStrictEqual('someField')
|
expect(sanitizedField.name).toStrictEqual('someField')
|
||||||
expect(sanitizedField.label).toStrictEqual('Do not label')
|
expect(sanitizedField.label).toStrictEqual('Do not label')
|
||||||
expect(sanitizedField.type).toStrictEqual('text')
|
expect(sanitizedField.type).toStrictEqual('text')
|
||||||
@@ -76,7 +98,11 @@ describe('sanitizeFields', () => {
|
|||||||
type: 'text',
|
type: 'text',
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
const sanitizedField = sanitizeFields(fields, [])[0] as TextField
|
const sanitizedField = sanitizeFields({
|
||||||
|
config: dummyConfig,
|
||||||
|
fields,
|
||||||
|
validRelationships: [],
|
||||||
|
})[0] as TextField
|
||||||
expect(sanitizedField.name).toStrictEqual('someField')
|
expect(sanitizedField.name).toStrictEqual('someField')
|
||||||
expect(sanitizedField.label).toStrictEqual(false)
|
expect(sanitizedField.label).toStrictEqual(false)
|
||||||
expect(sanitizedField.type).toStrictEqual('text')
|
expect(sanitizedField.type).toStrictEqual('text')
|
||||||
@@ -94,7 +120,11 @@ describe('sanitizeFields', () => {
|
|||||||
name: 'items',
|
name: 'items',
|
||||||
type: 'array',
|
type: 'array',
|
||||||
}
|
}
|
||||||
const sanitizedField = sanitizeFields([arrayField], [])[0] as ArrayField
|
const sanitizedField = sanitizeFields({
|
||||||
|
config: dummyConfig,
|
||||||
|
fields: [arrayField],
|
||||||
|
validRelationships: [],
|
||||||
|
})[0] as ArrayField
|
||||||
expect(sanitizedField.name).toStrictEqual('items')
|
expect(sanitizedField.name).toStrictEqual('items')
|
||||||
expect(sanitizedField.label).toStrictEqual(false)
|
expect(sanitizedField.label).toStrictEqual(false)
|
||||||
expect(sanitizedField.type).toStrictEqual('array')
|
expect(sanitizedField.type).toStrictEqual('array')
|
||||||
@@ -119,7 +149,11 @@ describe('sanitizeFields', () => {
|
|||||||
type: 'blocks',
|
type: 'blocks',
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
const sanitizedField = sanitizeFields(fields, [])[0] as BlockField
|
const sanitizedField = sanitizeFields({
|
||||||
|
config: dummyConfig,
|
||||||
|
fields,
|
||||||
|
validRelationships: [],
|
||||||
|
})[0] as BlockField
|
||||||
expect(sanitizedField.name).toStrictEqual('noLabelBlock')
|
expect(sanitizedField.name).toStrictEqual('noLabelBlock')
|
||||||
expect(sanitizedField.label).toStrictEqual(false)
|
expect(sanitizedField.label).toStrictEqual(false)
|
||||||
expect(sanitizedField.type).toStrictEqual('blocks')
|
expect(sanitizedField.type).toStrictEqual('blocks')
|
||||||
@@ -140,7 +174,11 @@ describe('sanitizeFields', () => {
|
|||||||
type: 'array',
|
type: 'array',
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
const sanitizedField = sanitizeFields(fields, [])[0] as ArrayField
|
const sanitizedField = sanitizeFields({
|
||||||
|
config: dummyConfig,
|
||||||
|
fields,
|
||||||
|
validRelationships: [],
|
||||||
|
})[0] as ArrayField
|
||||||
expect(sanitizedField.name).toStrictEqual('items')
|
expect(sanitizedField.name).toStrictEqual('items')
|
||||||
expect(sanitizedField.label).toStrictEqual('Items')
|
expect(sanitizedField.label).toStrictEqual('Items')
|
||||||
expect(sanitizedField.type).toStrictEqual('array')
|
expect(sanitizedField.type).toStrictEqual('array')
|
||||||
@@ -160,7 +198,11 @@ describe('sanitizeFields', () => {
|
|||||||
type: 'blocks',
|
type: 'blocks',
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
const sanitizedField = sanitizeFields(fields, [])[0] as BlockField
|
const sanitizedField = sanitizeFields({
|
||||||
|
config: dummyConfig,
|
||||||
|
fields,
|
||||||
|
validRelationships: [],
|
||||||
|
})[0] as BlockField
|
||||||
expect(sanitizedField.name).toStrictEqual('specialBlock')
|
expect(sanitizedField.name).toStrictEqual('specialBlock')
|
||||||
expect(sanitizedField.label).toStrictEqual('Special Block')
|
expect(sanitizedField.label).toStrictEqual('Special Block')
|
||||||
expect(sanitizedField.type).toStrictEqual('blocks')
|
expect(sanitizedField.type).toStrictEqual('blocks')
|
||||||
@@ -184,7 +226,7 @@ describe('sanitizeFields', () => {
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
expect(() => {
|
expect(() => {
|
||||||
sanitizeFields(fields, validRelationships)
|
sanitizeFields({ config: dummyConfig, fields, validRelationships })
|
||||||
}).not.toThrow()
|
}).not.toThrow()
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -199,7 +241,7 @@ describe('sanitizeFields', () => {
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
expect(() => {
|
expect(() => {
|
||||||
sanitizeFields(fields, validRelationships)
|
sanitizeFields({ config: dummyConfig, fields, validRelationships })
|
||||||
}).not.toThrow()
|
}).not.toThrow()
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -225,7 +267,7 @@ describe('sanitizeFields', () => {
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
expect(() => {
|
expect(() => {
|
||||||
sanitizeFields(fields, validRelationships)
|
sanitizeFields({ config: dummyConfig, fields, validRelationships })
|
||||||
}).not.toThrow()
|
}).not.toThrow()
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -240,7 +282,7 @@ describe('sanitizeFields', () => {
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
expect(() => {
|
expect(() => {
|
||||||
sanitizeFields(fields, validRelationships)
|
sanitizeFields({ config: dummyConfig, fields, validRelationships })
|
||||||
}).toThrow(InvalidFieldRelationship)
|
}).toThrow(InvalidFieldRelationship)
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -255,7 +297,7 @@ describe('sanitizeFields', () => {
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
expect(() => {
|
expect(() => {
|
||||||
sanitizeFields(fields, validRelationships)
|
sanitizeFields({ config: dummyConfig, fields, validRelationships })
|
||||||
}).toThrow(InvalidFieldRelationship)
|
}).toThrow(InvalidFieldRelationship)
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -281,7 +323,7 @@ describe('sanitizeFields', () => {
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
expect(() => {
|
expect(() => {
|
||||||
sanitizeFields(fields, validRelationships)
|
sanitizeFields({ config: dummyConfig, fields, validRelationships })
|
||||||
}).toThrow(InvalidFieldRelationship)
|
}).toThrow(InvalidFieldRelationship)
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -294,12 +336,20 @@ describe('sanitizeFields', () => {
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
const sanitizedField = sanitizeFields(fields, [])[0] as CheckboxField
|
const sanitizedField = sanitizeFields({
|
||||||
|
config: dummyConfig,
|
||||||
|
fields,
|
||||||
|
validRelationships: [],
|
||||||
|
})[0] as CheckboxField
|
||||||
expect(sanitizedField.defaultValue).toStrictEqual(false)
|
expect(sanitizedField.defaultValue).toStrictEqual(false)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should return empty field array if no fields', () => {
|
it('should return empty field array if no fields', () => {
|
||||||
const sanitizedFields = sanitizeFields([], [])
|
const sanitizedFields = sanitizeFields({
|
||||||
|
config: dummyConfig,
|
||||||
|
fields: [],
|
||||||
|
validRelationships: [],
|
||||||
|
})
|
||||||
expect(sanitizedFields).toStrictEqual([])
|
expect(sanitizedFields).toStrictEqual([])
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import type { Config } from '../../config/types'
|
||||||
import type { Field } from './types'
|
import type { Field } from './types'
|
||||||
|
|
||||||
import withCondition from '../../admin/components/forms/withCondition'
|
import withCondition from '../../admin/components/forms/withCondition'
|
||||||
@@ -8,7 +9,13 @@ import { baseIDField } from '../baseFields/baseIDField'
|
|||||||
import validations from '../validations'
|
import validations from '../validations'
|
||||||
import { fieldAffectsData, tabHasName } from './types'
|
import { fieldAffectsData, tabHasName } from './types'
|
||||||
|
|
||||||
const sanitizeFields = (fields: Field[], validRelationships: string[]): Field[] => {
|
type Args = {
|
||||||
|
config: Config
|
||||||
|
fields: Field[]
|
||||||
|
validRelationships: string[]
|
||||||
|
}
|
||||||
|
|
||||||
|
const sanitizeFields = ({ config, fields, validRelationships }: Args): Field[] => {
|
||||||
if (!fields) return []
|
if (!fields) return []
|
||||||
|
|
||||||
return fields.map((unsanitizedField) => {
|
return fields.map((unsanitizedField) => {
|
||||||
@@ -80,6 +87,8 @@ const sanitizeFields = (fields: Field[], validRelationships: string[]): Field[]
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (fieldAffectsData(field)) {
|
if (fieldAffectsData(field)) {
|
||||||
|
if (field.localized && !config.localization) delete field.localized
|
||||||
|
|
||||||
if (typeof field.validate === 'undefined') {
|
if (typeof field.validate === 'undefined') {
|
||||||
const defaultValidate = validations[field.type]
|
const defaultValidate = validations[field.type]
|
||||||
if (defaultValidate) {
|
if (defaultValidate) {
|
||||||
@@ -101,8 +110,13 @@ const sanitizeFields = (fields: Field[], validRelationships: string[]): Field[]
|
|||||||
field.admin = {}
|
field.admin = {}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('fields' in field && field.fields)
|
if ('fields' in field && field.fields) {
|
||||||
field.fields = sanitizeFields(field.fields, validRelationships)
|
field.fields = sanitizeFields({
|
||||||
|
config,
|
||||||
|
fields: field.fields,
|
||||||
|
validRelationships,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
if (field.type === 'tabs') {
|
if (field.type === 'tabs') {
|
||||||
field.tabs = field.tabs.map((tab) => {
|
field.tabs = field.tabs.map((tab) => {
|
||||||
@@ -110,7 +124,13 @@ const sanitizeFields = (fields: Field[], validRelationships: string[]): Field[]
|
|||||||
if (tabHasName(tab) && typeof tab.label === 'undefined') {
|
if (tabHasName(tab) && typeof tab.label === 'undefined') {
|
||||||
unsanitizedTab.label = toWords(tab.name)
|
unsanitizedTab.label = toWords(tab.name)
|
||||||
}
|
}
|
||||||
unsanitizedTab.fields = sanitizeFields(tab.fields, validRelationships)
|
|
||||||
|
unsanitizedTab.fields = sanitizeFields({
|
||||||
|
config,
|
||||||
|
fields: tab.fields,
|
||||||
|
validRelationships,
|
||||||
|
})
|
||||||
|
|
||||||
return unsanitizedTab
|
return unsanitizedTab
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -121,7 +141,13 @@ const sanitizeFields = (fields: Field[], validRelationships: string[]): Field[]
|
|||||||
unsanitizedBlock.labels = !unsanitizedBlock.labels
|
unsanitizedBlock.labels = !unsanitizedBlock.labels
|
||||||
? formatLabels(unsanitizedBlock.slug)
|
? formatLabels(unsanitizedBlock.slug)
|
||||||
: unsanitizedBlock.labels
|
: unsanitizedBlock.labels
|
||||||
unsanitizedBlock.fields = sanitizeFields(block.fields, validRelationships)
|
|
||||||
|
unsanitizedBlock.fields = sanitizeFields({
|
||||||
|
config,
|
||||||
|
fields: block.fields,
|
||||||
|
validRelationships,
|
||||||
|
})
|
||||||
|
|
||||||
return unsanitizedBlock
|
return unsanitizedBlock
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import type { CollectionConfig } from '../../collections/config/types'
|
import type { Config } from '../../config/types'
|
||||||
import type { GlobalConfig, SanitizedGlobalConfig } from './types'
|
import type { SanitizedGlobalConfig } from './types'
|
||||||
|
|
||||||
import defaultAccess from '../../auth/defaultAccess'
|
import defaultAccess from '../../auth/defaultAccess'
|
||||||
import sanitizeFields from '../../fields/config/sanitize'
|
import sanitizeFields from '../../fields/config/sanitize'
|
||||||
@@ -9,10 +9,9 @@ import translations from '../../translations'
|
|||||||
import { toWords } from '../../utilities/formatLabels'
|
import { toWords } from '../../utilities/formatLabels'
|
||||||
import baseVersionFields from '../../versions/baseFields'
|
import baseVersionFields from '../../versions/baseFields'
|
||||||
|
|
||||||
const sanitizeGlobals = (
|
const sanitizeGlobals = (config: Config): SanitizedGlobalConfig[] => {
|
||||||
collections: CollectionConfig[],
|
const { collections, globals } = config
|
||||||
globals: GlobalConfig[],
|
|
||||||
): SanitizedGlobalConfig[] => {
|
|
||||||
const sanitizedGlobals = globals.map((global) => {
|
const sanitizedGlobals = globals.map((global) => {
|
||||||
const sanitizedGlobal = { ...global }
|
const sanitizedGlobal = { ...global }
|
||||||
|
|
||||||
@@ -72,29 +71,33 @@ const sanitizeGlobals = (
|
|||||||
})
|
})
|
||||||
if (!hasUpdatedAt) {
|
if (!hasUpdatedAt) {
|
||||||
sanitizedGlobal.fields.push({
|
sanitizedGlobal.fields.push({
|
||||||
|
name: 'updatedAt',
|
||||||
admin: {
|
admin: {
|
||||||
disableBulkEdit: true,
|
disableBulkEdit: true,
|
||||||
hidden: true,
|
hidden: true,
|
||||||
},
|
},
|
||||||
label: translations['general:updatedAt'],
|
label: translations['general:updatedAt'],
|
||||||
name: 'updatedAt',
|
|
||||||
type: 'date',
|
type: 'date',
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
if (!hasCreatedAt) {
|
if (!hasCreatedAt) {
|
||||||
sanitizedGlobal.fields.push({
|
sanitizedGlobal.fields.push({
|
||||||
|
name: 'createdAt',
|
||||||
admin: {
|
admin: {
|
||||||
disableBulkEdit: true,
|
disableBulkEdit: true,
|
||||||
hidden: true,
|
hidden: true,
|
||||||
},
|
},
|
||||||
label: translations['general:createdAt'],
|
label: translations['general:createdAt'],
|
||||||
name: 'createdAt',
|
|
||||||
type: 'date',
|
type: 'date',
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const validRelationships = collections.map((c) => c.slug)
|
const validRelationships = collections.map((c) => c.slug)
|
||||||
sanitizedGlobal.fields = sanitizeFields(sanitizedGlobal.fields, validRelationships)
|
sanitizedGlobal.fields = sanitizeFields({
|
||||||
|
config,
|
||||||
|
fields: sanitizedGlobal.fields,
|
||||||
|
validRelationships,
|
||||||
|
})
|
||||||
|
|
||||||
return sanitizedGlobal as SanitizedGlobalConfig
|
return sanitizedGlobal as SanitizedGlobalConfig
|
||||||
})
|
})
|
||||||
|
|||||||
28
pnpm-lock.yaml
generated
28
pnpm-lock.yaml
generated
@@ -54,15 +54,36 @@ importers:
|
|||||||
get-port:
|
get-port:
|
||||||
specifier: 5.1.1
|
specifier: 5.1.1
|
||||||
version: 5.1.1
|
version: 5.1.1
|
||||||
|
graphql-request:
|
||||||
|
specifier: 3.7.0
|
||||||
|
version: 3.7.0(graphql@16.7.1)
|
||||||
|
isomorphic-fetch:
|
||||||
|
specifier: 3.0.0
|
||||||
|
version: 3.0.0
|
||||||
jest:
|
jest:
|
||||||
specifier: 29.6.4
|
specifier: 29.6.4
|
||||||
version: 29.6.4(@types/node@20.5.7)(ts-node@10.9.1)
|
version: 29.6.4(@types/node@20.5.7)(ts-node@10.9.1)
|
||||||
jest-environment-jsdom:
|
jest-environment-jsdom:
|
||||||
specifier: 29.6.4
|
specifier: 29.6.4
|
||||||
version: 29.6.4
|
version: 29.6.4
|
||||||
|
jwt-decode:
|
||||||
|
specifier: 3.1.2
|
||||||
|
version: 3.1.2
|
||||||
|
mongodb-memory-server:
|
||||||
|
specifier: 8.13.0
|
||||||
|
version: 8.13.0
|
||||||
|
node-fetch:
|
||||||
|
specifier: 2.6.12
|
||||||
|
version: 2.6.12
|
||||||
prettier:
|
prettier:
|
||||||
specifier: ^3.0.3
|
specifier: ^3.0.3
|
||||||
version: 3.0.3
|
version: 3.0.3
|
||||||
|
qs:
|
||||||
|
specifier: 6.11.2
|
||||||
|
version: 6.11.2
|
||||||
|
react:
|
||||||
|
specifier: 18.2.0
|
||||||
|
version: 18.2.0
|
||||||
shelljs:
|
shelljs:
|
||||||
specifier: 0.8.5
|
specifier: 0.8.5
|
||||||
version: 0.8.5
|
version: 0.8.5
|
||||||
@@ -696,9 +717,6 @@ importers:
|
|||||||
graphql-request:
|
graphql-request:
|
||||||
specifier: 3.7.0
|
specifier: 3.7.0
|
||||||
version: 3.7.0(graphql@16.7.1)
|
version: 3.7.0(graphql@16.7.1)
|
||||||
mongodb-memory-server:
|
|
||||||
specifier: 8.13.0
|
|
||||||
version: 8.13.0
|
|
||||||
node-fetch:
|
node-fetch:
|
||||||
specifier: 2.6.12
|
specifier: 2.6.12
|
||||||
version: 2.6.12
|
version: 2.6.12
|
||||||
@@ -9131,7 +9149,6 @@ packages:
|
|||||||
whatwg-fetch: 3.6.17
|
whatwg-fetch: 3.6.17
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- encoding
|
- encoding
|
||||||
dev: false
|
|
||||||
|
|
||||||
/issue-parser@6.0.0:
|
/issue-parser@6.0.0:
|
||||||
resolution: {integrity: sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==}
|
resolution: {integrity: sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==}
|
||||||
@@ -9853,7 +9870,6 @@ packages:
|
|||||||
|
|
||||||
/jwt-decode@3.1.2:
|
/jwt-decode@3.1.2:
|
||||||
resolution: {integrity: sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==}
|
resolution: {integrity: sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==}
|
||||||
dev: false
|
|
||||||
|
|
||||||
/kareem@2.5.1:
|
/kareem@2.5.1:
|
||||||
resolution: {integrity: sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==}
|
resolution: {integrity: sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==}
|
||||||
@@ -12253,7 +12269,6 @@ packages:
|
|||||||
engines: {node: '>=0.6'}
|
engines: {node: '>=0.6'}
|
||||||
dependencies:
|
dependencies:
|
||||||
side-channel: 1.0.4
|
side-channel: 1.0.4
|
||||||
dev: false
|
|
||||||
|
|
||||||
/qs@6.4.1:
|
/qs@6.4.1:
|
||||||
resolution: {integrity: sha512-LQy1Q1fcva/UsnP/6Iaa4lVeM49WiOitu2T4hZCyA/elLKu37L99qcBJk4VCCk+rdLvnMzfKyiN3SZTqdAZGSQ==}
|
resolution: {integrity: sha512-LQy1Q1fcva/UsnP/6Iaa4lVeM49WiOitu2T4hZCyA/elLKu37L99qcBJk4VCCk+rdLvnMzfKyiN3SZTqdAZGSQ==}
|
||||||
@@ -14547,7 +14562,6 @@ packages:
|
|||||||
|
|
||||||
/whatwg-fetch@3.6.17:
|
/whatwg-fetch@3.6.17:
|
||||||
resolution: {integrity: sha512-c4ghIvG6th0eudYwKZY5keb81wtFz9/WeAHAoy8+r18kcWlitUIrmGFQ2rWEl4UCKUilD3zCLHOIPheHx5ypRQ==}
|
resolution: {integrity: sha512-c4ghIvG6th0eudYwKZY5keb81wtFz9/WeAHAoy8+r18kcWlitUIrmGFQ2rWEl4UCKUilD3zCLHOIPheHx5ypRQ==}
|
||||||
dev: false
|
|
||||||
|
|
||||||
/whatwg-mimetype@3.0.0:
|
/whatwg-mimetype@3.0.0:
|
||||||
resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==}
|
resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==}
|
||||||
|
|||||||
@@ -4,17 +4,18 @@ import type { Post, RelyOnRequestHeader, Restricted } from './payload-types'
|
|||||||
import payload from '../../packages/payload/src'
|
import payload from '../../packages/payload/src'
|
||||||
import { Forbidden } from '../../packages/payload/src/errors'
|
import { Forbidden } from '../../packages/payload/src/errors'
|
||||||
import { initPayloadTest } from '../helpers/configHelpers'
|
import { initPayloadTest } from '../helpers/configHelpers'
|
||||||
|
import { requestHeaders } from './config'
|
||||||
import {
|
import {
|
||||||
|
firstArrayText,
|
||||||
hiddenAccessSlug,
|
hiddenAccessSlug,
|
||||||
hiddenFieldsSlug,
|
hiddenFieldsSlug,
|
||||||
relyOnRequestHeadersSlug,
|
relyOnRequestHeadersSlug,
|
||||||
requestHeaders,
|
|
||||||
restrictedSlug,
|
restrictedSlug,
|
||||||
restrictedVersionsSlug,
|
restrictedVersionsSlug,
|
||||||
|
secondArrayText,
|
||||||
siblingDataSlug,
|
siblingDataSlug,
|
||||||
slug,
|
slug,
|
||||||
} from './config'
|
} from './shared'
|
||||||
import { firstArrayText, secondArrayText } from './shared'
|
|
||||||
|
|
||||||
describe('Access Control', () => {
|
describe('Access Control', () => {
|
||||||
let post1: Post
|
let post1: Post
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import { GraphQLClient } from 'graphql-request'
|
import { GraphQLClient } from 'graphql-request'
|
||||||
import jwtDecode from 'jwt-decode'
|
import jwtDecode from 'jwt-decode'
|
||||||
import mongoose from 'mongoose'
|
|
||||||
|
|
||||||
import type { User } from '../../packages/payload/src/auth'
|
import type { User } from '../../packages/payload/src/auth'
|
||||||
|
|
||||||
@@ -8,7 +7,7 @@ import payload from '../../packages/payload/src'
|
|||||||
import configPromise from '../collections-graphql/config'
|
import configPromise from '../collections-graphql/config'
|
||||||
import { devUser } from '../credentials'
|
import { devUser } from '../credentials'
|
||||||
import { initPayloadTest } from '../helpers/configHelpers'
|
import { initPayloadTest } from '../helpers/configHelpers'
|
||||||
import { namedSaveToJWTValue, saveToJWTKey, slug } from './config'
|
import { namedSaveToJWTValue, saveToJWTKey, slug } from './shared'
|
||||||
|
|
||||||
require('isomorphic-fetch')
|
require('isomorphic-fetch')
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import { randomBytes } from 'crypto'
|
import { randomBytes } from 'crypto'
|
||||||
import mongoose from 'mongoose'
|
|
||||||
|
|
||||||
import type { Relation } from './config'
|
import type { Relation } from './config'
|
||||||
import type { ErrorOnHook, Post } from './payload-types'
|
import type { ErrorOnHook, Post } from './payload-types'
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ export async function initPayloadTest(options: Options): Promise<{ serverURL: st
|
|||||||
...(options.init || {}),
|
...(options.init || {}),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
process.env.PAYLOAD_DROP_DATABASE = 'true'
|
||||||
process.env.NODE_ENV = 'test'
|
process.env.NODE_ENV = 'test'
|
||||||
process.env.PAYLOAD_CONFIG_PATH = path.resolve(options.__dirname, './config.ts')
|
process.env.PAYLOAD_CONFIG_PATH = path.resolve(options.__dirname, './config.ts')
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user