Update tests

This commit is contained in:
Rémi de Juvigny 2022-12-21 12:33:08 +01:00
parent bc890ae9d3
commit d90f3524f7
3 changed files with 65 additions and 59 deletions

View File

@ -11,5 +11,5 @@ module.exports = async ({ strapi }) => {
auditLogsService.register();
}
await executeCERegister({ strapi });
executeCERegister({ strapi });
};

View File

@ -7,11 +7,14 @@ jest.mock('../../../../server/register');
describe('Audit logs service', () => {
afterEach(() => {
jest.resetAllMocks();
jest.resetModules();
jest.useRealTimers();
});
afterAll(() => {
jest.resetAllMocks();
});
describe('Init with audit logs disabled', () => {
beforeAll(() => {
jest.mock('@strapi/strapi/lib/utils/ee', () => ({
@ -25,14 +28,7 @@ describe('Audit logs service', () => {
const eeAdminRegister = require('../../register');
const mockRegister = jest.fn();
global.strapi = {
admin: {
services: {
permission: {
actionProvider: { registerMany: jest.fn() },
},
},
},
const strapi = {
container: {
register: mockRegister,
},
@ -46,38 +42,62 @@ describe('Audit logs service', () => {
describe('Init with audit logs enabled', () => {
const mockRegister = jest.fn();
const mockAddContentType = jest.fn();
const mockGet = jest.fn((name) => {
if (name === 'content-types') {
return {
add: mockAddContentType,
};
}
});
beforeEach(() => {
const strapi = {
admin: {
services: {
permission: {
actionProvider: { registerMany: jest.fn() },
},
},
},
container: {
register: mockRegister,
get: mockGet,
},
entityService: {
create: jest.fn(),
},
eventHub: createEventHub(),
requestContext: {
get() {
return {
state: {
user: {
id: 1,
},
},
};
},
},
};
const mockSaveEvent = jest.fn();
beforeAll(() => {
jest.mock('@strapi/strapi/lib/utils/ee', () => ({
features: {
// We only enabled audit logs
isEnabled: (feature) => feature === 'audit-logs',
},
}));
global.strapi = {
admin: {
services: {
permission: {
actionProvider: { registerMany: jest.fn() },
},
},
},
container: {
register: mockRegister,
},
eventHub: createEventHub(),
requestContext: {
get() {
return {
state: {
user: {
id: 1,
},
},
};
},
},
};
jest.mock('@strapi/provider-audit-logs-local', () => ({
register: jest.fn(),
saveEvent: mockSaveEvent,
}));
});
afterEach(() => {
mockSaveEvent.mockClear();
});
it('should register and init the audit logs service when registered', async () => {
@ -89,23 +109,22 @@ describe('Audit logs service', () => {
});
it('should emit an event and capture it in the audit logs', async () => {
const logSpy = jest.spyOn(console, 'log');
const auditLogsService = createAuditLogsService(strapi);
auditLogsService.register();
jest.useFakeTimers().setSystemTime(new Date('1970-01-01T00:00:00.000Z'));
await strapi.eventHub.emit('entry.create', { meta: 'test' });
// TODO: Replace with a test to save to db
const [message, payload] = logSpy.mock.lastCall;
expect(message).toBe('Saving event');
expect(payload).toMatchObject({
action: 'entry.create',
date: '1970-01-01T00:00:00.000Z',
payload: { meta: 'test' },
userId: 1,
});
// Sends the processed event to a provider
expect(mockSaveEvent).toHaveBeenCalledTimes(1);
expect(mockSaveEvent).toHaveBeenCalledWith(
expect.objectContaining({
action: 'entry.create',
date: '1970-01-01T00:00:00.000Z',
payload: { meta: 'test' },
userId: 1,
})
);
});
it('ignores events that are not in the event map', async () => {
@ -120,14 +139,5 @@ describe('Audit logs service', () => {
expect(logSpy).not.toHaveBeenCalled();
});
it('should throw and error when name is empty', async () => {
const auditLogsService = createAuditLogsService(strapi);
auditLogsService.register();
await expect(() => {
return strapi.eventHub.emit('', { meta: 'test' });
}).rejects.toThrowError('Name is required');
});
});
});

View File

@ -55,10 +55,6 @@ const createAuditLogsService = (strapi) => {
};
const handleEvent = async (name, ...args) => {
if (!name) {
throw Error('Name is required');
}
const processedEvent = processEvent(name, ...args);
if (processedEvent) {