payload 3.62.0-internal.7fb5145 → 3.62.0-internal.ec3a6fa
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth/cookies.spec.js +1 -0
- package/dist/auth/cookies.spec.js.map +1 -1
- package/dist/bin/generateImportMap/generateImportMap.spec.js +2 -1
- package/dist/bin/generateImportMap/generateImportMap.spec.js.map +1 -1
- package/dist/collections/config/useAsTitle.spec.js +1 -0
- package/dist/collections/config/useAsTitle.spec.js.map +1 -1
- package/dist/config/types.d.ts +5 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/database/migrations/findMigrationDir.spec.js +2 -1
- package/dist/database/migrations/findMigrationDir.spec.js.map +1 -1
- package/dist/database/migrations/readMigrationFiles.d.ts.map +1 -1
- package/dist/database/migrations/readMigrationFiles.js +1 -3
- package/dist/database/migrations/readMigrationFiles.js.map +1 -1
- package/dist/fields/config/reservedFieldNames.spec.js +1 -0
- package/dist/fields/config/reservedFieldNames.spec.js.map +1 -1
- package/dist/fields/config/sanitize.spec.js +1 -0
- package/dist/fields/config/sanitize.spec.js.map +1 -1
- package/dist/fields/validations.spec.js +2 -2
- package/dist/fields/validations.spec.js.map +1 -1
- package/dist/index.bundled.d.ts +6 -0
- package/dist/queues/config/types/index.d.ts +1 -0
- package/dist/queues/config/types/index.d.ts.map +1 -1
- package/dist/queues/config/types/index.js.map +1 -1
- package/dist/uploads/mimeTypeValidator.spec.js +1 -0
- package/dist/uploads/mimeTypeValidator.spec.js.map +1 -1
- package/dist/utilities/addSelectGenericsToGeneratedTypes.spec.js +3 -2
- package/dist/utilities/addSelectGenericsToGeneratedTypes.spec.js.map +1 -1
- package/dist/utilities/combineWhereConstraints.spec.js +1 -0
- package/dist/utilities/combineWhereConstraints.spec.js.map +1 -1
- package/dist/utilities/configToJSONSchema.spec.js +1 -0
- package/dist/utilities/configToJSONSchema.spec.js.map +1 -1
- package/dist/utilities/flattenTopLevelFields.spec.js +1 -0
- package/dist/utilities/flattenTopLevelFields.spec.js.map +1 -1
- package/dist/utilities/formatLabels.spec.js +1 -0
- package/dist/utilities/formatLabels.spec.js.map +1 -1
- package/dist/utilities/getFieldByPath.spec.js +1 -0
- package/dist/utilities/getFieldByPath.spec.js.map +1 -1
- package/dist/utilities/getFieldPermissions.spec.js +1 -0
- package/dist/utilities/getFieldPermissions.spec.js.map +1 -1
- package/dist/utilities/getSafeRedirect.spec.js +1 -0
- package/dist/utilities/getSafeRedirect.spec.js.map +1 -1
- package/dist/utilities/sanitizePermissions.spec.js +1 -0
- package/dist/utilities/sanitizePermissions.spec.js.map +1 -1
- package/dist/utilities/sanitizeUserDataForEmail.spec.js +1 -0
- package/dist/utilities/sanitizeUserDataForEmail.spec.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/sanitizePermissions.spec.ts"],"sourcesContent":["import type { CollectionPermission, Permissions } from '../auth/types.js'\nimport { preferencesCollectionSlug } from '../preferences/config.js'\n\nimport { sanitizePermissions } from './sanitizePermissions.js'\n\n/* eslint-disable perfectionist/sort-objects */\ndescribe('recursivelySanitizePermissions', () => {\n it('should sanitize a basic collection', () => {\n const permissions: CollectionPermission = {\n fields: {\n text: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n delete: {\n permission: false,\n },\n readVersions: {\n permission: true,\n },\n }\n\n sanitizePermissions({\n canAccessAdmin: true,\n collections: {\n test: permissions,\n },\n })\n\n expect(permissions).toStrictEqual({\n fields: true,\n create: true,\n read: true,\n update: true,\n readVersions: true,\n })\n })\n\n it('should sanitize a collection with where queries', () => {\n const permissions: CollectionPermission = {\n fields: {},\n create: {\n permission: true,\n where: {\n user: {\n equals: 2,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n delete: {\n permission: false,\n },\n readVersions: {\n permission: true,\n where: {\n user: {\n equals: 1,\n },\n },\n },\n }\n\n sanitizePermissions({\n canAccessAdmin: true,\n collections: {\n test: permissions,\n },\n })\n expect(permissions).toStrictEqual({\n create: {\n permission: true,\n where: {\n user: {\n equals: 2,\n },\n },\n },\n fields: true,\n read: true,\n update: true,\n readVersions: {\n permission: true,\n where: {\n user: {\n equals: 1,\n },\n },\n },\n })\n })\n\n it('should sanitize a collection with nested fields in blocks', () => {\n const permissions: CollectionPermission = {\n create: {\n permission: true,\n },\n delete: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n fields: {\n layout: {\n create: {\n permission: true,\n },\n blocks: {\n blockWithTitle: {\n fields: {\n blockTitle: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n id: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n blockName: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n }\n\n sanitizePermissions({\n canAccessAdmin: true,\n collections: {\n test: permissions,\n },\n })\n expect(permissions).toStrictEqual({\n create: true,\n delete: true,\n fields: true,\n read: true,\n update: true,\n })\n })\n\n it('should sanitize a collection with nested fields in blocks without truncating', () => {\n const permissions: CollectionPermission = {\n create: {\n permission: true,\n },\n delete: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n fields: {\n layout: {\n create: {\n permission: true,\n },\n blocks: {\n blockWithTitle: {\n fields: {\n blockTitle: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n id: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n blockName: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: false,\n },\n },\n },\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n }\n\n sanitizePermissions({\n canAccessAdmin: true,\n collections: {\n test: permissions,\n },\n })\n expect(permissions).toStrictEqual({\n create: true,\n delete: true,\n read: true,\n update: true,\n fields: {\n layout: {\n create: true,\n blocks: {\n blockWithTitle: {\n fields: {\n blockTitle: true,\n id: true,\n blockName: {\n read: true,\n },\n },\n create: true,\n update: true,\n read: true,\n },\n },\n read: true,\n update: true,\n },\n },\n })\n })\n\n it('should sanitize a collection with nested fields in arrays', () => {\n const permissions: Partial<CollectionPermission> = {\n fields: {\n arrayOfText: {\n create: {\n permission: true,\n },\n fields: {\n text: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n hiddenText: {\n create: {\n permission: true,\n },\n read: {\n permission: false,\n },\n update: {\n permission: true,\n },\n },\n id: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n }\n\n sanitizePermissions({\n canAccessAdmin: true,\n collections: {\n test: permissions as CollectionPermission,\n },\n })\n expect(permissions).toStrictEqual({\n fields: {\n arrayOfText: {\n create: true,\n fields: {\n text: true,\n hiddenText: {\n create: true,\n update: true,\n },\n id: true,\n },\n read: true,\n update: true,\n },\n },\n })\n })\n\n it('should sanitize blocks with subfield named blocks', () => {\n const permissions: CollectionPermission = {\n fields: {\n content: {\n create: { permission: true },\n blocks: {\n test: {\n fields: {\n blocks: {\n create: { permission: true },\n fields: {\n arrayText: {\n create: { permission: true },\n read: { permission: true },\n update: { permission: true },\n },\n id: {\n create: { permission: true },\n read: { permission: true },\n update: { permission: true },\n },\n },\n read: { permission: true },\n update: { permission: true },\n },\n id: {\n create: { permission: true },\n read: { permission: true },\n update: { permission: true },\n },\n blockName: {\n create: { permission: true },\n read: { permission: true },\n update: { permission: true },\n },\n },\n create: { permission: true },\n read: { permission: true },\n update: { permission: true },\n },\n },\n read: { permission: true },\n update: { permission: true },\n },\n },\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n delete: {\n permission: false,\n },\n readVersions: {\n permission: true,\n },\n }\n\n sanitizePermissions({\n canAccessAdmin: true,\n collections: {\n test: permissions,\n },\n })\n expect(permissions).toStrictEqual({\n fields: true,\n create: true,\n read: true,\n update: true,\n readVersions: true,\n })\n })\n\n it('should sanitize a collection with nested fields in richText', () => {\n const permissions: Partial<CollectionPermission> = {\n fields: {\n text: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n richText: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n }\n\n sanitizePermissions({\n canAccessAdmin: true,\n collections: {\n test: permissions as CollectionPermission,\n },\n })\n expect(permissions).toStrictEqual({\n fields: true,\n })\n })\n\n it('ensure complex permissions are sanitized correctly', () => {\n // This tests a bug where the sanitizePermissions function would previously not correctly sanitize\n const permissions: Partial<CollectionPermission> = {\n fields: {\n GR: {\n create: {\n permission: false,\n },\n fields: {\n rt: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n aaa: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n tab1: {\n fields: {\n rt2: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n blocks2: {\n create: {\n permission: false,\n },\n blocks: {\n myBlock: {\n fields: {\n art: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n id: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n blockName: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n rt3: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n blocks3: {\n create: {\n permission: false,\n },\n blocks: {\n myBlock: {\n fields: {\n art: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n id: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n blockName: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n array: {\n create: {\n permission: false,\n },\n fields: {\n art: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n id: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n arrayWithAccessFalse: {\n create: {\n permission: false,\n },\n fields: {\n art: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: false,\n },\n },\n id: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: false,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: false,\n },\n },\n blocks: {\n create: {\n permission: false,\n },\n blocks: {\n myBlock: {\n fields: {\n art: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n id: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n blockName: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n updatedAt: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n createdAt: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n delete: {\n permission: true,\n },\n }\n\n sanitizePermissions({\n canAccessAdmin: true,\n collections: {\n test: permissions as CollectionPermission,\n },\n })\n expect(permissions).toStrictEqual({\n fields: {\n GR: {\n fields: {\n rt: {\n read: true,\n update: true,\n },\n aaa: {\n read: true,\n update: true,\n },\n },\n read: true,\n update: true,\n },\n tab1: {\n fields: {\n rt2: {\n read: true,\n update: true,\n },\n blocks2: {\n blocks: {\n myBlock: {\n fields: {\n art: {\n read: true,\n update: true,\n },\n id: {\n read: true,\n update: true,\n },\n blockName: {\n read: true,\n update: true,\n },\n },\n read: true,\n update: true,\n },\n },\n read: true,\n update: true,\n },\n },\n read: true,\n update: true,\n },\n rt3: {\n read: true,\n update: true,\n },\n blocks3: {\n blocks: {\n myBlock: {\n fields: {\n art: {\n read: true,\n update: true,\n },\n id: {\n read: true,\n update: true,\n },\n blockName: {\n read: true,\n update: true,\n },\n },\n read: true,\n update: true,\n },\n },\n read: true,\n update: true,\n },\n array: {\n fields: {\n art: {\n read: true,\n update: true,\n },\n id: {\n read: true,\n update: true,\n },\n },\n read: true,\n update: true,\n },\n arrayWithAccessFalse: {\n fields: {\n art: {\n read: true,\n },\n id: {\n read: true,\n },\n },\n read: true,\n },\n blocks: {\n blocks: {\n myBlock: {\n fields: {\n art: {\n read: true,\n update: true,\n },\n id: {\n read: true,\n update: true,\n },\n blockName: {\n read: true,\n update: true,\n },\n },\n read: true,\n update: true,\n },\n },\n read: true,\n update: true,\n },\n updatedAt: {\n read: true,\n update: true,\n },\n createdAt: {\n read: true,\n update: true,\n },\n },\n read: true,\n update: true,\n delete: true,\n })\n })\n\n it('ensure complex permissions are sanitized correctly 2', () => {\n // This tests a bug where the sanitizePermissions function would previously not correctly sanitize\n const permissions: Partial<CollectionPermission> = {\n fields: {\n GR: {\n create: {\n permission: true,\n },\n fields: {\n rt: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n aaa: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n tab1: {\n fields: {\n rt2: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n blocks2: {\n create: {\n permission: true,\n },\n blocks: {\n myBlock: {\n fields: {\n art: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n id: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n blockName: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n rt3: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n arrayWithAccessFalse: {\n create: {\n permission: false,\n },\n fields: {\n art: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: false,\n },\n },\n id: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: false,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: false,\n },\n },\n blocks: {\n create: {\n permission: true,\n },\n blocks: {\n myBlock: {\n fields: {\n art: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n id: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n blockName: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n updatedAt: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n createdAt: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n delete: {\n permission: true,\n },\n }\n\n sanitizePermissions({\n canAccessAdmin: true,\n collections: {\n test: permissions as CollectionPermission,\n },\n })\n expect(permissions).toStrictEqual({\n fields: {\n GR: true,\n tab1: true,\n rt3: true,\n arrayWithAccessFalse: {\n fields: {\n art: {\n read: true,\n },\n id: {\n read: true,\n },\n },\n read: true,\n },\n blocks: true,\n updatedAt: true,\n createdAt: true,\n },\n create: true,\n read: true,\n update: true,\n delete: true,\n })\n })\n\n it('ensure complex permissions are sanitized correctly 3', () => {\n // This tests a bug where the sanitizePermissions function would previously not correctly sanitize\n const permissions: Partial<CollectionPermission> = {\n fields: {\n GR: {\n create: {\n permission: true,\n },\n fields: {\n rt: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n aaa: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n tab1: {\n fields: {\n rt2: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n blocks2: {\n create: {\n permission: true,\n },\n blocks: {\n myBlock: {\n fields: {\n art: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n id: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n blockName: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n rt3: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n blocks: {\n create: {\n permission: true,\n },\n blocks: {\n myBlock: {\n fields: {\n art: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n id: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n blockName: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n updatedAt: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n createdAt: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n delete: {\n permission: true,\n },\n }\n\n sanitizePermissions({\n canAccessAdmin: true,\n collections: {\n test: permissions as CollectionPermission,\n },\n })\n expect(permissions).toStrictEqual({\n fields: true,\n create: true,\n read: true,\n update: true,\n delete: true,\n })\n })\n})\n\ndescribe('sanitizePermissions', () => {\n it('should return nothing for unauthenticated user', () => {\n const permissions: Permissions = {\n canAccessAdmin: false,\n collections: {\n preferencesCollectionSlug: {\n fields: {\n user: {\n create: {\n permission: false,\n },\n read: {\n permission: false,\n },\n update: {\n permission: false,\n },\n },\n },\n create: {\n permission: false,\n },\n read: {\n permission: false,\n },\n update: {\n permission: false,\n },\n delete: {\n permission: false,\n },\n },\n },\n globals: {\n menu: {\n fields: {\n globalText: {\n create: {\n permission: false,\n },\n read: {\n permission: false,\n },\n update: {\n permission: false,\n },\n },\n },\n read: {\n permission: false,\n },\n update: {\n permission: false,\n },\n },\n },\n }\n\n const sanitizedPermissions = sanitizePermissions(permissions)\n\n expect(sanitizedPermissions).toStrictEqual({})\n })\n})\n"],"names":["sanitizePermissions","describe","it","permissions","fields","text","create","permission","read","update","delete","readVersions","canAccessAdmin","collections","test","expect","toStrictEqual","where","user","equals","layout","blocks","blockWithTitle","blockTitle","id","blockName","arrayOfText","hiddenText","content","arrayText","richText","GR","rt","aaa","tab1","rt2","blocks2","myBlock","art","rt3","blocks3","array","arrayWithAccessFalse","updatedAt","createdAt","preferencesCollectionSlug","globals","menu","globalText","sanitizedPermissions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/sanitizePermissions.spec.ts"],"sourcesContent":["import { describe, it, expect } from 'vitest'\nimport type { CollectionPermission, Permissions } from '../auth/types.js'\n\nimport { sanitizePermissions } from './sanitizePermissions.js'\n\n/* eslint-disable perfectionist/sort-objects */\ndescribe('recursivelySanitizePermissions', () => {\n it('should sanitize a basic collection', () => {\n const permissions: CollectionPermission = {\n fields: {\n text: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n delete: {\n permission: false,\n },\n readVersions: {\n permission: true,\n },\n }\n\n sanitizePermissions({\n canAccessAdmin: true,\n collections: {\n test: permissions,\n },\n })\n\n expect(permissions).toStrictEqual({\n fields: true,\n create: true,\n read: true,\n update: true,\n readVersions: true,\n })\n })\n\n it('should sanitize a collection with where queries', () => {\n const permissions: CollectionPermission = {\n fields: {},\n create: {\n permission: true,\n where: {\n user: {\n equals: 2,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n delete: {\n permission: false,\n },\n readVersions: {\n permission: true,\n where: {\n user: {\n equals: 1,\n },\n },\n },\n }\n\n sanitizePermissions({\n canAccessAdmin: true,\n collections: {\n test: permissions,\n },\n })\n expect(permissions).toStrictEqual({\n create: {\n permission: true,\n where: {\n user: {\n equals: 2,\n },\n },\n },\n fields: true,\n read: true,\n update: true,\n readVersions: {\n permission: true,\n where: {\n user: {\n equals: 1,\n },\n },\n },\n })\n })\n\n it('should sanitize a collection with nested fields in blocks', () => {\n const permissions: CollectionPermission = {\n create: {\n permission: true,\n },\n delete: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n fields: {\n layout: {\n create: {\n permission: true,\n },\n blocks: {\n blockWithTitle: {\n fields: {\n blockTitle: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n id: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n blockName: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n }\n\n sanitizePermissions({\n canAccessAdmin: true,\n collections: {\n test: permissions,\n },\n })\n expect(permissions).toStrictEqual({\n create: true,\n delete: true,\n fields: true,\n read: true,\n update: true,\n })\n })\n\n it('should sanitize a collection with nested fields in blocks without truncating', () => {\n const permissions: CollectionPermission = {\n create: {\n permission: true,\n },\n delete: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n fields: {\n layout: {\n create: {\n permission: true,\n },\n blocks: {\n blockWithTitle: {\n fields: {\n blockTitle: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n id: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n blockName: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: false,\n },\n },\n },\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n }\n\n sanitizePermissions({\n canAccessAdmin: true,\n collections: {\n test: permissions,\n },\n })\n expect(permissions).toStrictEqual({\n create: true,\n delete: true,\n read: true,\n update: true,\n fields: {\n layout: {\n create: true,\n blocks: {\n blockWithTitle: {\n fields: {\n blockTitle: true,\n id: true,\n blockName: {\n read: true,\n },\n },\n create: true,\n update: true,\n read: true,\n },\n },\n read: true,\n update: true,\n },\n },\n })\n })\n\n it('should sanitize a collection with nested fields in arrays', () => {\n const permissions: Partial<CollectionPermission> = {\n fields: {\n arrayOfText: {\n create: {\n permission: true,\n },\n fields: {\n text: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n hiddenText: {\n create: {\n permission: true,\n },\n read: {\n permission: false,\n },\n update: {\n permission: true,\n },\n },\n id: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n }\n\n sanitizePermissions({\n canAccessAdmin: true,\n collections: {\n test: permissions as CollectionPermission,\n },\n })\n expect(permissions).toStrictEqual({\n fields: {\n arrayOfText: {\n create: true,\n fields: {\n text: true,\n hiddenText: {\n create: true,\n update: true,\n },\n id: true,\n },\n read: true,\n update: true,\n },\n },\n })\n })\n\n it('should sanitize blocks with subfield named blocks', () => {\n const permissions: CollectionPermission = {\n fields: {\n content: {\n create: { permission: true },\n blocks: {\n test: {\n fields: {\n blocks: {\n create: { permission: true },\n fields: {\n arrayText: {\n create: { permission: true },\n read: { permission: true },\n update: { permission: true },\n },\n id: {\n create: { permission: true },\n read: { permission: true },\n update: { permission: true },\n },\n },\n read: { permission: true },\n update: { permission: true },\n },\n id: {\n create: { permission: true },\n read: { permission: true },\n update: { permission: true },\n },\n blockName: {\n create: { permission: true },\n read: { permission: true },\n update: { permission: true },\n },\n },\n create: { permission: true },\n read: { permission: true },\n update: { permission: true },\n },\n },\n read: { permission: true },\n update: { permission: true },\n },\n },\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n delete: {\n permission: false,\n },\n readVersions: {\n permission: true,\n },\n }\n\n sanitizePermissions({\n canAccessAdmin: true,\n collections: {\n test: permissions,\n },\n })\n expect(permissions).toStrictEqual({\n fields: true,\n create: true,\n read: true,\n update: true,\n readVersions: true,\n })\n })\n\n it('should sanitize a collection with nested fields in richText', () => {\n const permissions: Partial<CollectionPermission> = {\n fields: {\n text: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n richText: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n }\n\n sanitizePermissions({\n canAccessAdmin: true,\n collections: {\n test: permissions as CollectionPermission,\n },\n })\n expect(permissions).toStrictEqual({\n fields: true,\n })\n })\n\n it('ensure complex permissions are sanitized correctly', () => {\n // This tests a bug where the sanitizePermissions function would previously not correctly sanitize\n const permissions: Partial<CollectionPermission> = {\n fields: {\n GR: {\n create: {\n permission: false,\n },\n fields: {\n rt: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n aaa: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n tab1: {\n fields: {\n rt2: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n blocks2: {\n create: {\n permission: false,\n },\n blocks: {\n myBlock: {\n fields: {\n art: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n id: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n blockName: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n rt3: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n blocks3: {\n create: {\n permission: false,\n },\n blocks: {\n myBlock: {\n fields: {\n art: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n id: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n blockName: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n array: {\n create: {\n permission: false,\n },\n fields: {\n art: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n id: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n arrayWithAccessFalse: {\n create: {\n permission: false,\n },\n fields: {\n art: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: false,\n },\n },\n id: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: false,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: false,\n },\n },\n blocks: {\n create: {\n permission: false,\n },\n blocks: {\n myBlock: {\n fields: {\n art: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n id: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n blockName: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n updatedAt: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n createdAt: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n delete: {\n permission: true,\n },\n }\n\n sanitizePermissions({\n canAccessAdmin: true,\n collections: {\n test: permissions as CollectionPermission,\n },\n })\n expect(permissions).toStrictEqual({\n fields: {\n GR: {\n fields: {\n rt: {\n read: true,\n update: true,\n },\n aaa: {\n read: true,\n update: true,\n },\n },\n read: true,\n update: true,\n },\n tab1: {\n fields: {\n rt2: {\n read: true,\n update: true,\n },\n blocks2: {\n blocks: {\n myBlock: {\n fields: {\n art: {\n read: true,\n update: true,\n },\n id: {\n read: true,\n update: true,\n },\n blockName: {\n read: true,\n update: true,\n },\n },\n read: true,\n update: true,\n },\n },\n read: true,\n update: true,\n },\n },\n read: true,\n update: true,\n },\n rt3: {\n read: true,\n update: true,\n },\n blocks3: {\n blocks: {\n myBlock: {\n fields: {\n art: {\n read: true,\n update: true,\n },\n id: {\n read: true,\n update: true,\n },\n blockName: {\n read: true,\n update: true,\n },\n },\n read: true,\n update: true,\n },\n },\n read: true,\n update: true,\n },\n array: {\n fields: {\n art: {\n read: true,\n update: true,\n },\n id: {\n read: true,\n update: true,\n },\n },\n read: true,\n update: true,\n },\n arrayWithAccessFalse: {\n fields: {\n art: {\n read: true,\n },\n id: {\n read: true,\n },\n },\n read: true,\n },\n blocks: {\n blocks: {\n myBlock: {\n fields: {\n art: {\n read: true,\n update: true,\n },\n id: {\n read: true,\n update: true,\n },\n blockName: {\n read: true,\n update: true,\n },\n },\n read: true,\n update: true,\n },\n },\n read: true,\n update: true,\n },\n updatedAt: {\n read: true,\n update: true,\n },\n createdAt: {\n read: true,\n update: true,\n },\n },\n read: true,\n update: true,\n delete: true,\n })\n })\n\n it('ensure complex permissions are sanitized correctly 2', () => {\n // This tests a bug where the sanitizePermissions function would previously not correctly sanitize\n const permissions: Partial<CollectionPermission> = {\n fields: {\n GR: {\n create: {\n permission: true,\n },\n fields: {\n rt: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n aaa: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n tab1: {\n fields: {\n rt2: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n blocks2: {\n create: {\n permission: true,\n },\n blocks: {\n myBlock: {\n fields: {\n art: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n id: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n blockName: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n rt3: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n arrayWithAccessFalse: {\n create: {\n permission: false,\n },\n fields: {\n art: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: false,\n },\n },\n id: {\n create: {\n permission: false,\n },\n read: {\n permission: true,\n },\n update: {\n permission: false,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: false,\n },\n },\n blocks: {\n create: {\n permission: true,\n },\n blocks: {\n myBlock: {\n fields: {\n art: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n id: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n blockName: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n updatedAt: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n createdAt: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n delete: {\n permission: true,\n },\n }\n\n sanitizePermissions({\n canAccessAdmin: true,\n collections: {\n test: permissions as CollectionPermission,\n },\n })\n expect(permissions).toStrictEqual({\n fields: {\n GR: true,\n tab1: true,\n rt3: true,\n arrayWithAccessFalse: {\n fields: {\n art: {\n read: true,\n },\n id: {\n read: true,\n },\n },\n read: true,\n },\n blocks: true,\n updatedAt: true,\n createdAt: true,\n },\n create: true,\n read: true,\n update: true,\n delete: true,\n })\n })\n\n it('ensure complex permissions are sanitized correctly 3', () => {\n // This tests a bug where the sanitizePermissions function would previously not correctly sanitize\n const permissions: Partial<CollectionPermission> = {\n fields: {\n GR: {\n create: {\n permission: true,\n },\n fields: {\n rt: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n aaa: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n tab1: {\n fields: {\n rt2: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n blocks2: {\n create: {\n permission: true,\n },\n blocks: {\n myBlock: {\n fields: {\n art: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n id: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n blockName: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n rt3: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n blocks: {\n create: {\n permission: true,\n },\n blocks: {\n myBlock: {\n fields: {\n art: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n id: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n blockName: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n updatedAt: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n createdAt: {\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n },\n },\n create: {\n permission: true,\n },\n read: {\n permission: true,\n },\n update: {\n permission: true,\n },\n delete: {\n permission: true,\n },\n }\n\n sanitizePermissions({\n canAccessAdmin: true,\n collections: {\n test: permissions as CollectionPermission,\n },\n })\n expect(permissions).toStrictEqual({\n fields: true,\n create: true,\n read: true,\n update: true,\n delete: true,\n })\n })\n})\n\ndescribe('sanitizePermissions', () => {\n it('should return nothing for unauthenticated user', () => {\n const permissions: Permissions = {\n canAccessAdmin: false,\n collections: {\n preferencesCollectionSlug: {\n fields: {\n user: {\n create: {\n permission: false,\n },\n read: {\n permission: false,\n },\n update: {\n permission: false,\n },\n },\n },\n create: {\n permission: false,\n },\n read: {\n permission: false,\n },\n update: {\n permission: false,\n },\n delete: {\n permission: false,\n },\n },\n },\n globals: {\n menu: {\n fields: {\n globalText: {\n create: {\n permission: false,\n },\n read: {\n permission: false,\n },\n update: {\n permission: false,\n },\n },\n },\n read: {\n permission: false,\n },\n update: {\n permission: false,\n },\n },\n },\n }\n\n const sanitizedPermissions = sanitizePermissions(permissions)\n\n expect(sanitizedPermissions).toStrictEqual({})\n })\n})\n"],"names":["describe","it","expect","sanitizePermissions","permissions","fields","text","create","permission","read","update","delete","readVersions","canAccessAdmin","collections","test","toStrictEqual","where","user","equals","layout","blocks","blockWithTitle","blockTitle","id","blockName","arrayOfText","hiddenText","content","arrayText","richText","GR","rt","aaa","tab1","rt2","blocks2","myBlock","art","rt3","blocks3","array","arrayWithAccessFalse","updatedAt","createdAt","preferencesCollectionSlug","globals","menu","globalText","sanitizedPermissions"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/sanitizeUserDataForEmail.spec.ts"],"sourcesContent":["import { sanitizeUserDataForEmail } from './sanitizeUserDataForEmail'\n\ndescribe('sanitizeUserDataForEmail', () => {\n it('should remove anchor tags', () => {\n const input = '<a href=\"https://example.com\">Click me</a>'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('Click me')\n })\n\n it('should remove script tags', () => {\n const unsanitizedData = '<script>alert</script>'\n const sanitizedData = sanitizeUserDataForEmail(unsanitizedData)\n expect(sanitizedData).toBe('alert')\n })\n\n it('should remove mixed-case script tags', () => {\n const input = '<ScRipT>alert(1)</sCrIpT>'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('alert1')\n })\n\n it('should remove embedded base64-encoded scripts', () => {\n const input = '<img src=\"data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==\">'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('')\n })\n\n it('should remove iframe elements', () => {\n const input = '<iframe src=\"malicious.com\"></iframe>Frame'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('Frame')\n })\n\n it('should remove javascript: links in attributes', () => {\n const input = '<a href=\"javascript:alert(1)\">click</a>'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('click')\n })\n\n it('should remove mismatched script input', () => {\n const input = '<script>console.log(\"test\")'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('console.log\\\"test\\\"')\n })\n\n it('should remove encoded scripts via HTML entities', () => {\n const input = '<script>alert(1)</script>'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('alert1')\n })\n\n it('should remove template injection syntax', () => {\n const input = '{{7*7}}'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('77')\n })\n\n it('should remove invisible zero-width characters', () => {\n const input = 'a\\u200Bler\\u200Bt(\"XSS\")'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('alert\\\"XSS\\\"')\n })\n\n it('should remove CSS expressions within style attributes', () => {\n const input = '<div style=\"width: expression(alert(\\'XSS\\'));\">Hello</div>'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('Hello')\n })\n\n it('should not render SVG with onload event', () => {\n const input = '<svg onload=\"alert(\\'XSS\\')\">Graphic</svg>'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('Graphic')\n })\n\n it('should not allow backtick-based patterns', () => {\n const input = '`alert(\"XSS\")`'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('alert\\\"XSS\\\"')\n })\n\n it('should preserve allowed punctuation', () => {\n const input = `Hello \"world\" - it's safe!`\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe(`Hello \"world\" - it's safe!`)\n })\n\n it('should return empty string for non-string input', () => {\n expect(sanitizeUserDataForEmail(null)).toBe('')\n expect(sanitizeUserDataForEmail(undefined)).toBe('')\n expect(sanitizeUserDataForEmail(123)).toBe('')\n expect(sanitizeUserDataForEmail({})).toBe('')\n })\n\n it('should return empty string for an empty string', () => {\n expect(sanitizeUserDataForEmail('')).toBe('')\n })\n\n it('should collapse excessive whitespace', () => {\n const input = 'This is \\n\\n a test'\n expect(sanitizeUserDataForEmail(input)).toBe('This is a test')\n })\n\n it('should truncate to maxLength characters', () => {\n const input = 'a'.repeat(200)\n const result = sanitizeUserDataForEmail(input, 50)\n expect(result.length).toBe(50)\n })\n\n it('should remove characters outside allowed punctuation', () => {\n const input = 'Hello @#$%^*()_+=[]{}|\\\\~`'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('Hello')\n })\n it('should sanitize syntax in regex-like input', () => {\n const input = '(?=XSS)(?:abc)'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('XSSabc')\n })\n\n it('should handle string of only control characters', () => {\n const input = '\\x01\\x02\\x03\\x04'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('')\n })\n\n it('should sanitize complex script attempt with mixed encoding', () => {\n const input = '<script>alert(String.fromCharCode(88,83,83))</script>'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('alertString.fromCharCode88,83,83')\n })\n\n it('should handle deeply nested HTML tags correctly', () => {\n const input = `<div><section><article><p>Hello <strong>world <em>from <span>deep <a href=\"#\">tags</a></span></em></strong></p></article></section></div>`\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('Hello world from deep tags')\n })\n\n it('should preserve accented Spanish characters', () => {\n const input = '¡Hola! ¿Cómo estás? ÁÉÍÓÚ ÜÑ ñáéíóú ü'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('¡Hola! ¿Cómo estás? ÁÉÍÓÚ ÜÑ ñáéíóú ü')\n })\n\n it('should preserve Arabic characters with diacritics', () => {\n const input = 'مَرْحَبًا بِكَ فِي الْمَوْقِعِ'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('مَرْحَبًا بِكَ فِي الْمَوْقِعِ')\n })\n\n it('should preserve Japanese characters', () => {\n const input = 'こんにちゎ、世界!!〆'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('こんにちゎ、世界!!〆')\n })\n})\n"],"names":["
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/sanitizeUserDataForEmail.spec.ts"],"sourcesContent":["import { describe, it, expect } from 'vitest'\nimport { sanitizeUserDataForEmail } from './sanitizeUserDataForEmail'\n\ndescribe('sanitizeUserDataForEmail', () => {\n it('should remove anchor tags', () => {\n const input = '<a href=\"https://example.com\">Click me</a>'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('Click me')\n })\n\n it('should remove script tags', () => {\n const unsanitizedData = '<script>alert</script>'\n const sanitizedData = sanitizeUserDataForEmail(unsanitizedData)\n expect(sanitizedData).toBe('alert')\n })\n\n it('should remove mixed-case script tags', () => {\n const input = '<ScRipT>alert(1)</sCrIpT>'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('alert1')\n })\n\n it('should remove embedded base64-encoded scripts', () => {\n const input = '<img src=\"data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==\">'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('')\n })\n\n it('should remove iframe elements', () => {\n const input = '<iframe src=\"malicious.com\"></iframe>Frame'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('Frame')\n })\n\n it('should remove javascript: links in attributes', () => {\n const input = '<a href=\"javascript:alert(1)\">click</a>'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('click')\n })\n\n it('should remove mismatched script input', () => {\n const input = '<script>console.log(\"test\")'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('console.log\\\"test\\\"')\n })\n\n it('should remove encoded scripts via HTML entities', () => {\n const input = '<script>alert(1)</script>'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('alert1')\n })\n\n it('should remove template injection syntax', () => {\n const input = '{{7*7}}'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('77')\n })\n\n it('should remove invisible zero-width characters', () => {\n const input = 'a\\u200Bler\\u200Bt(\"XSS\")'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('alert\\\"XSS\\\"')\n })\n\n it('should remove CSS expressions within style attributes', () => {\n const input = '<div style=\"width: expression(alert(\\'XSS\\'));\">Hello</div>'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('Hello')\n })\n\n it('should not render SVG with onload event', () => {\n const input = '<svg onload=\"alert(\\'XSS\\')\">Graphic</svg>'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('Graphic')\n })\n\n it('should not allow backtick-based patterns', () => {\n const input = '`alert(\"XSS\")`'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('alert\\\"XSS\\\"')\n })\n\n it('should preserve allowed punctuation', () => {\n const input = `Hello \"world\" - it's safe!`\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe(`Hello \"world\" - it's safe!`)\n })\n\n it('should return empty string for non-string input', () => {\n expect(sanitizeUserDataForEmail(null)).toBe('')\n expect(sanitizeUserDataForEmail(undefined)).toBe('')\n expect(sanitizeUserDataForEmail(123)).toBe('')\n expect(sanitizeUserDataForEmail({})).toBe('')\n })\n\n it('should return empty string for an empty string', () => {\n expect(sanitizeUserDataForEmail('')).toBe('')\n })\n\n it('should collapse excessive whitespace', () => {\n const input = 'This is \\n\\n a test'\n expect(sanitizeUserDataForEmail(input)).toBe('This is a test')\n })\n\n it('should truncate to maxLength characters', () => {\n const input = 'a'.repeat(200)\n const result = sanitizeUserDataForEmail(input, 50)\n expect(result.length).toBe(50)\n })\n\n it('should remove characters outside allowed punctuation', () => {\n const input = 'Hello @#$%^*()_+=[]{}|\\\\~`'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('Hello')\n })\n it('should sanitize syntax in regex-like input', () => {\n const input = '(?=XSS)(?:abc)'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('XSSabc')\n })\n\n it('should handle string of only control characters', () => {\n const input = '\\x01\\x02\\x03\\x04'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('')\n })\n\n it('should sanitize complex script attempt with mixed encoding', () => {\n const input = '<script>alert(String.fromCharCode(88,83,83))</script>'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('alertString.fromCharCode88,83,83')\n })\n\n it('should handle deeply nested HTML tags correctly', () => {\n const input = `<div><section><article><p>Hello <strong>world <em>from <span>deep <a href=\"#\">tags</a></span></em></strong></p></article></section></div>`\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('Hello world from deep tags')\n })\n\n it('should preserve accented Spanish characters', () => {\n const input = '¡Hola! ¿Cómo estás? ÁÉÍÓÚ ÜÑ ñáéíóú ü'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('¡Hola! ¿Cómo estás? ÁÉÍÓÚ ÜÑ ñáéíóú ü')\n })\n\n it('should preserve Arabic characters with diacritics', () => {\n const input = 'مَرْحَبًا بِكَ فِي الْمَوْقِعِ'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('مَرْحَبًا بِكَ فِي الْمَوْقِعِ')\n })\n\n it('should preserve Japanese characters', () => {\n const input = 'こんにちゎ、世界!!〆'\n const result = sanitizeUserDataForEmail(input)\n expect(result).toBe('こんにちゎ、世界!!〆')\n })\n})\n"],"names":["describe","it","expect","sanitizeUserDataForEmail","input","result","toBe","unsanitizedData","sanitizedData","undefined","repeat","length"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "payload",
|
|
3
|
-
"version": "3.62.0-internal.
|
|
3
|
+
"version": "3.62.0-internal.ec3a6fa",
|
|
4
4
|
"description": "Node, React, Headless CMS and Application Framework built on Next.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"admin panel",
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
"undici": "7.10.0",
|
|
102
102
|
"uuid": "10.0.0",
|
|
103
103
|
"ws": "^8.16.0",
|
|
104
|
-
"@payloadcms/translations": "3.62.0-internal.
|
|
104
|
+
"@payloadcms/translations": "3.62.0-internal.ec3a6fa"
|
|
105
105
|
},
|
|
106
106
|
"devDependencies": {
|
|
107
107
|
"@hyrious/esbuild-plugin-commonjs": "0.2.6",
|