From a2dd072b1dbb3682ebe197bbabf68c3c6e1e29a5 Mon Sep 17 00:00:00 2001 From: Simone Taeggi Date: Tue, 16 Aug 2022 14:55:42 +0200 Subject: [PATCH 01/12] add updatedAt field to the api token query --- .../services/__tests__/api-token.test.js | 18 +++++++++--------- .../core/admin/server/services/api-token.js | 2 +- .../server/tests/admin-api-token.test.e2e.js | 12 ++++++++++++ 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/packages/core/admin/server/services/__tests__/api-token.test.js b/packages/core/admin/server/services/__tests__/api-token.test.js index c79cdb7d95..56128b6943 100644 --- a/packages/core/admin/server/services/__tests__/api-token.test.js +++ b/packages/core/admin/server/services/__tests__/api-token.test.js @@ -41,7 +41,7 @@ describe('API Token', () => { const res = await apiTokenService.create(attributes); expect(create).toHaveBeenCalledWith({ - select: ['id', 'name', 'description', 'type', 'createdAt'], + select: ['id', 'name', 'description', 'type', 'createdAt', 'updatedAt'], data: { ...attributes, accessKey: apiTokenService.hash(mockedApiToken.hexedString), @@ -136,7 +136,7 @@ describe('API Token', () => { const res = await apiTokenService.list(); expect(findMany).toHaveBeenCalledWith({ - select: ['id', 'name', 'description', 'type', 'createdAt'], + select: ['id', 'name', 'description', 'type', 'createdAt', 'updatedAt'], orderBy: { name: 'ASC' }, }); expect(res).toEqual(tokens); @@ -163,7 +163,7 @@ describe('API Token', () => { const res = await apiTokenService.revoke(token.id); expect(mockedDelete).toHaveBeenCalledWith({ - select: ['id', 'name', 'description', 'type', 'createdAt'], + select: ['id', 'name', 'description', 'type', 'createdAt', 'updatedAt'], where: { id: token.id }, }); expect(res).toEqual(token); @@ -181,7 +181,7 @@ describe('API Token', () => { const res = await apiTokenService.revoke(42); expect(mockedDelete).toHaveBeenCalledWith({ - select: ['id', 'name', 'description', 'type', 'createdAt'], + select: ['id', 'name', 'description', 'type', 'createdAt', 'updatedAt'], where: { id: 42 }, }); expect(res).toEqual(null); @@ -208,7 +208,7 @@ describe('API Token', () => { const res = await apiTokenService.getById(token.id); expect(findOne).toHaveBeenCalledWith({ - select: ['id', 'name', 'description', 'type', 'createdAt'], + select: ['id', 'name', 'description', 'type', 'createdAt', 'updatedAt'], where: { id: token.id }, }); expect(res).toEqual(token); @@ -226,7 +226,7 @@ describe('API Token', () => { const res = await apiTokenService.getById(42); expect(findOne).toHaveBeenCalledWith({ - select: ['id', 'name', 'description', 'type', 'createdAt'], + select: ['id', 'name', 'description', 'type', 'createdAt', 'updatedAt'], where: { id: 42 }, }); expect(res).toEqual(null); @@ -256,7 +256,7 @@ describe('API Token', () => { const res = await apiTokenService.update(id, attributes); expect(update).toHaveBeenCalledWith({ - select: ['id', 'name', 'description', 'type', 'createdAt'], + select: ['id', 'name', 'description', 'type', 'createdAt', 'updatedAt'], where: { id }, data: attributes, }); @@ -283,7 +283,7 @@ describe('API Token', () => { const res = await apiTokenService.getByName(token.name); expect(findOne).toHaveBeenCalledWith({ - select: ['id', 'name', 'description', 'type', 'createdAt'], + select: ['id', 'name', 'description', 'type', 'createdAt', 'updatedAt'], where: { name: token.name }, }); expect(res).toEqual(token); @@ -301,7 +301,7 @@ describe('API Token', () => { const res = await apiTokenService.getByName('unexistant-name'); expect(findOne).toHaveBeenCalledWith({ - select: ['id', 'name', 'description', 'type', 'createdAt'], + select: ['id', 'name', 'description', 'type', 'createdAt', 'updatedAt'], where: { name: 'unexistant-name' }, }); expect(res).toEqual(null); diff --git a/packages/core/admin/server/services/api-token.js b/packages/core/admin/server/services/api-token.js index 47b344872b..1a2a3ca0a8 100644 --- a/packages/core/admin/server/services/api-token.js +++ b/packages/core/admin/server/services/api-token.js @@ -17,7 +17,7 @@ const crypto = require('crypto'); */ /** @constant {Array} */ -const SELECT_FIELDS = ['id', 'name', 'description', 'type', 'createdAt']; +const SELECT_FIELDS = ['id', 'name', 'description', 'type', 'createdAt', 'updatedAt']; /** * @param {Object} whereParams diff --git a/packages/core/admin/server/tests/admin-api-token.test.e2e.js b/packages/core/admin/server/tests/admin-api-token.test.e2e.js index c6dd0aa609..fb3737ed23 100644 --- a/packages/core/admin/server/tests/admin-api-token.test.e2e.js +++ b/packages/core/admin/server/tests/admin-api-token.test.e2e.js @@ -129,6 +129,7 @@ describe('Admin API Token CRUD (e2e)', () => { type: body.type, id: expect.any(Number), createdAt: expect.any(String), + updatedAt: expect.any(String), }); apiTokens.push(res.body.data); @@ -154,6 +155,7 @@ describe('Admin API Token CRUD (e2e)', () => { type: body.type, id: expect.any(Number), createdAt: expect.any(String), + updatedAt: expect.any(String), }); apiTokens.push(res.body.data); @@ -180,6 +182,7 @@ describe('Admin API Token CRUD (e2e)', () => { type: body.type, id: expect.any(Number), createdAt: expect.any(String), + updatedAt: expect.any(String), }); apiTokens.push(res.body.data); @@ -200,6 +203,7 @@ describe('Admin API Token CRUD (e2e)', () => { description: 'api-token_tests-description', type: 'read-only', createdAt: expect.any(String), + updatedAt: expect.any(String), }, { id: expect.any(Number), @@ -207,6 +211,7 @@ describe('Admin API Token CRUD (e2e)', () => { description: 'api-token_tests-description-with-spaces-at-the-end', type: 'read-only', createdAt: expect.any(String), + updatedAt: expect.any(String), }, { id: expect.any(Number), @@ -214,6 +219,7 @@ describe('Admin API Token CRUD (e2e)', () => { description: '', type: 'full-access', createdAt: expect.any(String), + updatedAt: expect.any(String), }, ]); }); @@ -231,6 +237,7 @@ describe('Admin API Token CRUD (e2e)', () => { type: apiTokens[2].type, id: apiTokens[2].id, createdAt: apiTokens[2].createdAt, + updatedAt: apiTokens[2].updatedAt, }); }); @@ -257,6 +264,7 @@ describe('Admin API Token CRUD (e2e)', () => { type: apiTokens[0].type, id: apiTokens[0].id, createdAt: apiTokens[0].createdAt, + updatedAt: apiTokens[0].updatedAt, }); }); @@ -298,6 +306,7 @@ describe('Admin API Token CRUD (e2e)', () => { type: body.type, id: apiTokens[0].id, createdAt: apiTokens[0].createdAt, + updatedAt: apiTokens[0].updatedAt, }); apiTokens[0] = res.body.data; @@ -346,6 +355,7 @@ describe('Admin API Token CRUD (e2e)', () => { type: apiTokens[0].type, id: apiTokens[0].id, createdAt: apiTokens[0].createdAt, + updatedAt: apiTokens[0].updatedAt, }); apiTokens[0] = res.body.data; @@ -402,6 +412,7 @@ describe('Admin API Token CRUD (e2e)', () => { type: apiTokens[0].type, id: apiTokens[0].id, createdAt: apiTokens[0].createdAt, + updatedAt: apiTokens[0].updatedAt, }); apiTokens[0] = res.body.data; @@ -425,6 +436,7 @@ describe('Admin API Token CRUD (e2e)', () => { type: apiTokens[0].type, id: apiTokens[0].id, createdAt: apiTokens[0].createdAt, + updatedAt: apiTokens[0].updatedAt, }); apiTokens[0] = res.body.data; From b678cbcd055d3ee415574271b2ee02d4a4a35fef Mon Sep 17 00:00:00 2001 From: Simone Taeggi Date: Tue, 16 Aug 2022 15:08:42 +0200 Subject: [PATCH 02/12] remove script --- packages/core/admin/package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/core/admin/package.json b/packages/core/admin/package.json index 68ad3b234b..a17c2afa7f 100644 --- a/packages/core/admin/package.json +++ b/packages/core/admin/package.json @@ -34,8 +34,7 @@ "test:front": "cross-env IS_EE=true jest --config ./jest.config.front.js", "test:front:watch": "cross-env IS_EE=true jest --config ./jest.config.front.js --watchAll", "test:front:ce": "cross-env IS_EE=false jest --config ./jest.config.front.js", - "test:front:watch:ce": "cross-env IS_EE=false jest --config ./jest.config.front.js --watchAll", - "test:front:ce:cov": "cross-env IS_EE=false jest --config ./jest.config.front.js --coverage --collectCoverageFrom='/packages/core/admin/admin/**/*.js' --coverageDirectory='/packages/core/admin/coverage'" + "test:front:watch:ce": "cross-env IS_EE=false jest --config ./jest.config.front.js --watchAll" }, "dependencies": { "@babel/core": "7.18.10", From 2ea3c317e5ab7fe5cdbc2aced90a32f0765abab5 Mon Sep 17 00:00:00 2001 From: Simone Taeggi Date: Thu, 18 Aug 2022 09:46:39 +0200 Subject: [PATCH 03/12] add updatedAt field in the list of token --- .../ApiTokens/ListView/DynamicTable/index.js | 9 ++------- .../ApiTokens/ListView/utils/tableHeaders.js | 16 ++++++++-------- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/index.js b/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/index.js index fce83eced6..dafe850cc5 100644 --- a/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/index.js +++ b/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/index.js @@ -9,7 +9,6 @@ import { pxToRem, useTracking, } from '@strapi/helper-plugin'; -import { useIntl } from 'react-intl'; import PropTypes from 'prop-types'; import { useHistory } from 'react-router-dom'; import DeleteButton from './DeleteButton'; @@ -17,7 +16,6 @@ import UpdateButton from './UpdateButton'; import ReadButton from './ReadButton'; const TableRows = ({ canDelete, canUpdate, canRead, onClickDelete, withBulkActions, rows }) => { - const { formatMessage } = useIntl(); const [{ query }] = useQueryParams(); const [, sortOrder] = query.sort.split(':'); const { @@ -58,15 +56,12 @@ const TableRows = ({ canDelete, canUpdate, canRead, onClickDelete, withBulkActio - {formatMessage({ - id: `Settings.apiTokens.types.${apiToken.type}`, - defaultMessage: 'Type unknown', - })} + - + diff --git a/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/utils/tableHeaders.js b/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/utils/tableHeaders.js index 7f47271dc1..7e90890ceb 100644 --- a/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/utils/tableHeaders.js +++ b/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/utils/tableHeaders.js @@ -15,14 +15,6 @@ const tableHeaders = [ sortable: false, }, }, - { - name: 'type', - key: 'type', - metadatas: { - label: 'Token type', - sortable: false, - }, - }, { name: 'createdAt', key: 'createdAt', @@ -31,6 +23,14 @@ const tableHeaders = [ sortable: false, }, }, + { + name: 'updatedAt', + key: 'updatedAt', + metadatas: { + label: 'Last used', + sortable: false, + }, + }, ]; export default tableHeaders; From 88f914c6306b74e89643697fda14426bae4876b3 Mon Sep 17 00:00:00 2001 From: Simone Taeggi Date: Fri, 19 Aug 2022 17:47:52 +0200 Subject: [PATCH 04/12] change the field to the lastUsedAt field --- .../pages/ApiTokens/ListView/DynamicTable/index.js | 2 +- .../pages/ApiTokens/ListView/utils/tableHeaders.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/index.js b/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/index.js index 3679aa41c1..34b8fe90eb 100644 --- a/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/index.js +++ b/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/index.js @@ -62,7 +62,7 @@ const TableRows = ({ canDelete, canUpdate, canRead, onClickDelete, withBulkActio - + diff --git a/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/utils/tableHeaders.js b/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/utils/tableHeaders.js index 7e90890ceb..7024d00bb2 100644 --- a/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/utils/tableHeaders.js +++ b/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/utils/tableHeaders.js @@ -24,8 +24,8 @@ const tableHeaders = [ }, }, { - name: 'updatedAt', - key: 'updatedAt', + name: 'lastUsedAt', + key: 'lastUsedAt', metadatas: { label: 'Last used', sortable: false, From 6397974ebbe134d78d7bb1d1f717141d02bfb306 Mon Sep 17 00:00:00 2001 From: Simone Taeggi Date: Fri, 19 Aug 2022 18:38:51 +0200 Subject: [PATCH 05/12] add empty value without lastUpdatetAt value --- .../pages/ApiTokens/ListView/DynamicTable/index.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/index.js b/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/index.js index 34b8fe90eb..99e01edab2 100644 --- a/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/index.js +++ b/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/index.js @@ -61,9 +61,11 @@ const TableRows = ({ canDelete, canUpdate, canRead, onClickDelete, withBulkActio - - - + {apiToken.lastUsedAt && ( + + + + )} {withBulkActions && ( From 2823ab7d2493bb6445879e2fa90592819d9349ac Mon Sep 17 00:00:00 2001 From: Simone Taeggi Date: Fri, 19 Aug 2022 18:40:29 +0200 Subject: [PATCH 06/12] update snapshots --- .../ApiTokens/ListView/tests/index.test.js | 24 +++++++------------ 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/tests/index.test.js b/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/tests/index.test.js index ed83bb207c..0c1fbcb464 100644 --- a/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/tests/index.test.js +++ b/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/tests/index.test.js @@ -806,10 +806,10 @@ describe('ADMIN | Pages | API TOKENS | ListPage', () => { - Token type + Created at { - Created at + Last used { aria-colindex="3" class="c21" tabindex="-1" - > - - Type unknown - - - { + Date: Tue, 23 Aug 2022 11:58:21 +0200 Subject: [PATCH 07/12] add the correct messages when we save or edit a token --- .../SettingsPage/pages/ApiTokens/EditView/index.js | 10 +++++++++- packages/core/admin/admin/src/translations/en.json | 2 ++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/index.js b/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/index.js index ca2fdfea3f..1b25f91328 100644 --- a/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/index.js +++ b/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/index.js @@ -113,7 +113,15 @@ const ApiTokenCreateView = () => { toggleNotification({ type: 'success', - message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }), + message: isCreating + ? formatMessage({ + id: 'notification.success.tokencreated', + defaultMessage: 'API Token successfully created', + }) + : formatMessage({ + id: 'notification.success.tokenedited', + defaultMessage: 'API Token successfully edited', + }), }); trackUsageRef.current(isCreating ? 'didCreateToken' : 'didEditToken', { diff --git a/packages/core/admin/admin/src/translations/en.json b/packages/core/admin/admin/src/translations/en.json index a467d48116..1110b1f886 100644 --- a/packages/core/admin/admin/src/translations/en.json +++ b/packages/core/admin/admin/src/translations/en.json @@ -764,6 +764,8 @@ "notification.success.delete": "The item has been deleted", "notification.success.saved": "Saved", "notification.success.title": "Success:", + "notification.success.tokencreated": "API Token successfully created", + "notification.success.tokenedited": "API Token successfully edited", "notification.version.update.message": "A new version of Strapi is available!", "notification.warning.title": "Warning:", "notification.warning.404": "404 - Not found", From 3e7a45fdb889aa59e3488213f309aa925efeea5c Mon Sep 17 00:00:00 2001 From: Simone Taeggi Date: Tue, 23 Aug 2022 16:27:26 +0200 Subject: [PATCH 08/12] define a new action to prevent the access of the api token page in the settings --- packages/core/admin/server/config/admin-actions.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/core/admin/server/config/admin-actions.js b/packages/core/admin/server/config/admin-actions.js index 5f978f8e56..0bc6f717e9 100644 --- a/packages/core/admin/server/config/admin-actions.js +++ b/packages/core/admin/server/config/admin-actions.js @@ -118,12 +118,21 @@ module.exports = { category: 'users and roles', subCategory: 'roles', }, + { + uid: 'api-tokens.access', + displayName: 'Access the API tokens settings page', + pluginName: 'admin', + section: 'settings', + category: 'api tokens', + subCategory: 'api Tokens', + }, { uid: 'api-tokens.create', displayName: 'Create (generate)', pluginName: 'admin', section: 'settings', category: 'api tokens', + subCategory: 'general', }, { uid: 'api-tokens.read', @@ -131,6 +140,7 @@ module.exports = { pluginName: 'admin', section: 'settings', category: 'api tokens', + subCategory: 'general', }, { uid: 'api-tokens.update', @@ -138,6 +148,7 @@ module.exports = { pluginName: 'admin', section: 'settings', category: 'api tokens', + subCategory: 'general', }, { uid: 'api-tokens.delete', @@ -145,6 +156,7 @@ module.exports = { pluginName: 'admin', section: 'settings', category: 'api tokens', + subCategory: 'general', }, { uid: 'project-settings.update', From e3174b8a72f51654614e7c817fb16f5a9a5370bb Mon Sep 17 00:00:00 2001 From: Simone Taeggi Date: Tue, 23 Aug 2022 17:38:54 +0200 Subject: [PATCH 09/12] add the access permission in the main array --- packages/core/admin/admin/src/permissions/defaultPermissions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/admin/admin/src/permissions/defaultPermissions.js b/packages/core/admin/admin/src/permissions/defaultPermissions.js index be3e6b9b9d..5b12201ca5 100644 --- a/packages/core/admin/admin/src/permissions/defaultPermissions.js +++ b/packages/core/admin/admin/src/permissions/defaultPermissions.js @@ -76,7 +76,7 @@ const permissions = { update: [{ action: 'admin::webhooks.update', subject: null }], }, 'api-tokens': { - main: [], + main: [{ action: 'admin::api-tokens.access', subject: null }], create: [{ action: 'admin::api-tokens.create', subject: null }], delete: [{ action: 'admin::api-tokens.delete', subject: null }], read: [{ action: 'admin::api-tokens.read', subject: null }], From 568892af974644a741913e42673c1c77c3aca170 Mon Sep 17 00:00:00 2001 From: Ben Irvin Date: Wed, 24 Aug 2022 13:01:29 +0200 Subject: [PATCH 10/12] add controller tests --- .../controllers/__tests__/api-token.test.js | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/packages/core/admin/server/controllers/__tests__/api-token.test.js b/packages/core/admin/server/controllers/__tests__/api-token.test.js index ec38fa432b..55bbab0f82 100644 --- a/packages/core/admin/server/controllers/__tests__/api-token.test.js +++ b/packages/core/admin/server/controllers/__tests__/api-token.test.js @@ -154,6 +154,62 @@ describe('API Token Controller', () => { }); }); + describe('Regenerate an API token', () => { + const token = { + id: 1, + name: 'api-token_tests-regenerate', + description: 'api-token_tests-description', + type: 'read-only', + }; + + test('Regenerates an API token successfully', async () => { + const regenerate = jest.fn().mockResolvedValue(token); + const getById = jest.fn().mockResolvedValue(token); + const created = jest.fn(); + const ctx = createContext({ params: { id: token.id } }, { created }); + + global.strapi = { + admin: { + services: { + 'api-token': { + regenerate, + getById, + }, + }, + }, + }; + + await apiTokenController.regenerate(ctx); + + expect(regenerate).toHaveBeenCalledWith(token.id); + }); + + test('Fails if token not found', async () => { + const regenerate = jest.fn().mockResolvedValue(token); + const getById = jest.fn().mockResolvedValue(null); + const created = jest.fn(); + const notFound = jest.fn(); + const ctx = createContext({ params: { id: token.id } }, { created, notFound }); + + global.strapi = { + admin: { + services: { + 'api-token': { + regenerate, + getById, + }, + }, + }, + }; + + await apiTokenController.regenerate(ctx); + + expect(regenerate).not.toHaveBeenCalled(); + expect(getById).toHaveBeenCalledWith(token.id); + expect(notFound).toHaveBeenCalledWith('API Token not found'); + }); + }); + describe('Retrieve an API token', () => { const token = { id: 1, From 3017fd5e414fc3e368e3135b9995d20770ba6bb1 Mon Sep 17 00:00:00 2001 From: Simone Taeggi Date: Thu, 25 Aug 2022 08:52:42 +0200 Subject: [PATCH 11/12] update e2e test --- .../core/admin/server/tests/admin-permission.test.e2e.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/core/admin/server/tests/admin-permission.test.e2e.js b/packages/core/admin/server/tests/admin-permission.test.e2e.js index 66b5a1898c..4597200a5a 100644 --- a/packages/core/admin/server/tests/admin-permission.test.e2e.js +++ b/packages/core/admin/server/tests/admin-permission.test.e2e.js @@ -293,6 +293,12 @@ describe('Role CRUD End to End', () => { }, ], "settings": Array [ + Object { + "action": "admin::api-tokens.access", + "category": "api tokens", + "displayName": "Access the API tokens settings page", + "subCategory": "api Tokens", + }, Object { "action": "admin::api-tokens.create", "category": "api tokens", From cce909d1ae7b5bec9c00440bc0a75e084a8988a3 Mon Sep 17 00:00:00 2001 From: Simone Taeggi Date: Thu, 25 Aug 2022 10:00:52 +0200 Subject: [PATCH 12/12] add the access action to the e2e tests --- .../admin/server/tests/admin-permission.test.e2e.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/core/admin/server/tests/admin-permission.test.e2e.js b/packages/core/admin/server/tests/admin-permission.test.e2e.js index 4597200a5a..7e418618b1 100644 --- a/packages/core/admin/server/tests/admin-permission.test.e2e.js +++ b/packages/core/admin/server/tests/admin-permission.test.e2e.js @@ -790,6 +790,12 @@ describe('Role CRUD End to End', () => { }, ], "settings": Array [ + Object { + "action": "admin::api-tokens.access", + "category": "api tokens", + "displayName": "Access the API tokens settings page", + "subCategory": "api Tokens", + }, Object { "action": "admin::api-tokens.create", "category": "api tokens", @@ -1216,6 +1222,12 @@ describe('Role CRUD End to End', () => { }, ], "settings": Array [ + Object { + "action": "admin::api-tokens.access", + "category": "api tokens", + "displayName": "Access the API tokens settings page", + "subCategory": "api Tokens", + }, Object { "action": "admin::api-tokens.create", "category": "api tokens",