diff --git a/src/api/parole/policies/__tests__/is-api-token.test.js b/src/api/parole/policies/__tests__/is-api-token.test.js new file mode 100644 index 0000000..0008320 --- /dev/null +++ b/src/api/parole/policies/__tests__/is-api-token.test.js @@ -0,0 +1,19 @@ +import {describe, it, expect} from 'vitest' +import isApiToken from '../is-api-token.js' + +describe('is-api-token policy', () => { + it('autorise une requête authentifiée par token API', () => { + const ctx = {state: {auth: {strategy: {name: 'api-token'}}}} + expect(isApiToken(ctx)).toBe(true) + }) + + it('refuse une requête authentifiée autrement (ex: JWT utilisateur)', () => { + const ctx = {state: {auth: {strategy: {name: 'users-permissions'}}}} + expect(isApiToken(ctx)).toBe(false) + }) + + it('refuse une requête non authentifiée', () => { + const ctx = {state: {}} + expect(isApiToken(ctx)).toBe(false) + }) +}) diff --git a/src/api/parole/policies/is-api-token.js b/src/api/parole/policies/is-api-token.js new file mode 100644 index 0000000..ef061d2 --- /dev/null +++ b/src/api/parole/policies/is-api-token.js @@ -0,0 +1,5 @@ +'use strict'; + +module.exports = policyContext => { + return policyContext.state?.auth?.strategy?.name === 'api-token' +} diff --git a/src/api/parole/routes/export.js b/src/api/parole/routes/export.js index 3067d5a..18b242b 100644 --- a/src/api/parole/routes/export.js +++ b/src/api/parole/routes/export.js @@ -12,7 +12,7 @@ module.exports = { method: 'POST', path: '/paroles/bulk-translate', handler: 'parole.bulkTranslate', - config: { policies: [], middlewares: [] }, + config: { policies: ['api::parole.is-api-token'], middlewares: [] }, }, ], };