feat: Separate api token serializers and do not show token except creation

This commit is contained in:
Faruk AYDIN
2025-04-15 11:33:35 +02:00
parent 90acfb7a24
commit 0d6dbffd8e
6 changed files with 45 additions and 3 deletions

View File

@@ -5,7 +5,7 @@ export default async (request, response) => {
const apiToken = await ApiToken.query().insertAndFetch({}); const apiToken = await ApiToken.query().insertAndFetch({});
renderObject(response, apiToken, { renderObject(response, apiToken, {
serializer: 'AdminApiToken', serializer: 'AdminApiTokenFull',
status: 201, status: 201,
}); });
}; };

View File

@@ -0,0 +1,10 @@
const adminApiTokenFullSerializer = (apiToken) => {
return {
id: apiToken.id,
token: apiToken.token,
createdAt: apiToken.createdAt.getTime(),
updatedAt: apiToken.updatedAt.getTime(),
};
};
export default adminApiTokenFullSerializer;

View File

@@ -0,0 +1,24 @@
import { describe, it, expect, beforeEach } from 'vitest';
import adminApiTokenFullSerializer from './api-token-full.ee.js';
import { createApiToken } from '../../../test/factories/api-token.js';
describe('adminApiTokenFullSerializer', () => {
let apiToken;
beforeEach(async () => {
apiToken = await createApiToken();
});
it('should return api token data', async () => {
const expectedPayload = {
id: apiToken.id,
token: apiToken.token,
createdAt: apiToken.createdAt.getTime(),
updatedAt: apiToken.updatedAt.getTime(),
};
expect(adminApiTokenFullSerializer(apiToken)).toStrictEqual(
expectedPayload
);
});
});

View File

@@ -1,7 +1,10 @@
const adminApiTokenSerializer = (apiToken) => { const adminApiTokenSerializer = (apiToken) => {
return { return {
id: apiToken.id, id: apiToken.id,
token: apiToken.token, token:
apiToken.token.substring(0, 4) +
'...' +
apiToken.token.substring(apiToken.token.length - 4),
createdAt: apiToken.createdAt.getTime(), createdAt: apiToken.createdAt.getTime(),
updatedAt: apiToken.updatedAt.getTime(), updatedAt: apiToken.updatedAt.getTime(),
}; };

View File

@@ -12,7 +12,10 @@ describe('adminApiTokenSerializer', () => {
it('should return api token data', async () => { it('should return api token data', async () => {
const expectedPayload = { const expectedPayload = {
id: apiToken.id, id: apiToken.id,
token: apiToken.token, token:
apiToken.token.substring(0, 4) +
'...' +
apiToken.token.substring(apiToken.token.length - 4),
createdAt: apiToken.createdAt.getTime(), createdAt: apiToken.createdAt.getTime(),
updatedAt: apiToken.updatedAt.getTime(), updatedAt: apiToken.updatedAt.getTime(),
}; };

View File

@@ -4,6 +4,7 @@ import permissionSerializer from './permission.js';
import adminSamlAuthProviderSerializer from './admin-saml-auth-provider.ee.js'; import adminSamlAuthProviderSerializer from './admin-saml-auth-provider.ee.js';
import adminTemplateSerializer from './admin/template.ee.js'; import adminTemplateSerializer from './admin/template.ee.js';
import adminApiTokenSerializer from './admin/api-token.ee.js'; import adminApiTokenSerializer from './admin/api-token.ee.js';
import adminApiTokenFullSerializer from './admin/api-token-full.ee.js';
import templateSerializer from './template.ee.js'; import templateSerializer from './template.ee.js';
import samlAuthProviderSerializer from './saml-auth-provider.ee.js'; import samlAuthProviderSerializer from './saml-auth-provider.ee.js';
import samlAuthProviderRoleMappingSerializer from './role-mapping.ee.js'; import samlAuthProviderRoleMappingSerializer from './role-mapping.ee.js';
@@ -32,6 +33,7 @@ const serializers = {
AdminSamlAuthProvider: adminSamlAuthProviderSerializer, AdminSamlAuthProvider: adminSamlAuthProviderSerializer,
AdminTemplate: adminTemplateSerializer, AdminTemplate: adminTemplateSerializer,
AdminApiToken: adminApiTokenSerializer, AdminApiToken: adminApiTokenSerializer,
AdminApiTokenFull: adminApiTokenFullSerializer,
Template: templateSerializer, Template: templateSerializer,
SamlAuthProvider: samlAuthProviderSerializer, SamlAuthProvider: samlAuthProviderSerializer,
RoleMapping: samlAuthProviderRoleMappingSerializer, RoleMapping: samlAuthProviderRoleMappingSerializer,