2021-08-12 15:04:37 +02:00
|
|
|
import supertest from 'supertest';
|
|
|
|
import { createServices } from '../../services';
|
|
|
|
import { createTestConfig } from '../../../test/config/test-config';
|
2017-01-06 15:58:02 +01:00
|
|
|
|
2021-08-12 15:04:37 +02:00
|
|
|
import createStores from '../../../test/fixtures/store';
|
2021-05-28 11:10:24 +02:00
|
|
|
|
2021-08-12 15:04:37 +02:00
|
|
|
import getApp from '../../app';
|
2023-05-03 11:46:33 +02:00
|
|
|
import {
|
|
|
|
FeatureCreatedEvent,
|
|
|
|
ProjectUserAddedEvent,
|
|
|
|
ProjectUserRemovedEvent,
|
|
|
|
} from '../../types/events';
|
2017-01-06 15:58:02 +01:00
|
|
|
|
2022-05-30 16:44:37 +02:00
|
|
|
async function getSetup(anonymise: boolean = false) {
|
2017-01-06 15:58:02 +01:00
|
|
|
const base = `/random${Math.round(Math.random() * 1000)}`;
|
2021-08-12 15:04:37 +02:00
|
|
|
const stores = createStores();
|
2021-04-22 10:07:10 +02:00
|
|
|
const config = createTestConfig({
|
|
|
|
server: { baseUriPath: base },
|
2022-08-26 08:22:42 +02:00
|
|
|
experimental: { flags: { anonymiseEventLog: anonymise } },
|
2017-01-06 15:58:02 +01:00
|
|
|
});
|
2021-04-22 10:07:10 +02:00
|
|
|
const services = createServices(stores, config);
|
2022-01-06 10:31:00 +01:00
|
|
|
const app = await getApp(config, stores, services);
|
2017-01-06 15:58:02 +01:00
|
|
|
|
2017-06-28 10:20:22 +02:00
|
|
|
return { base, eventStore: stores.eventStore, request: supertest(app) };
|
2017-01-06 15:58:02 +01:00
|
|
|
}
|
|
|
|
|
2022-01-06 10:31:00 +01:00
|
|
|
test('should get empty events list via admin', async () => {
|
2021-05-28 11:10:24 +02:00
|
|
|
expect.assertions(1);
|
2022-01-06 10:31:00 +01:00
|
|
|
const { request, base } = await getSetup();
|
2017-01-06 15:58:02 +01:00
|
|
|
return request
|
2017-06-28 10:20:22 +02:00
|
|
|
.get(`${base}/api/admin/events`)
|
2017-01-06 15:58:02 +01:00
|
|
|
.expect('Content-Type', /json/)
|
|
|
|
.expect(200)
|
2021-08-12 15:04:37 +02:00
|
|
|
.expect((res) => {
|
2021-05-28 11:10:24 +02:00
|
|
|
expect(res.body.events.length === 0).toBe(true);
|
2017-01-06 15:58:02 +01:00
|
|
|
});
|
|
|
|
});
|
2022-05-30 16:44:37 +02:00
|
|
|
|
|
|
|
test('should get events list via admin', async () => {
|
|
|
|
const { request, base, eventStore } = await getSetup();
|
|
|
|
eventStore.store(
|
|
|
|
new FeatureCreatedEvent({
|
|
|
|
createdBy: 'some@email.com',
|
|
|
|
data: { name: 'test', project: 'default' },
|
|
|
|
featureName: 'test',
|
|
|
|
project: 'default',
|
|
|
|
tags: [],
|
|
|
|
}),
|
|
|
|
);
|
|
|
|
const { body } = await request
|
|
|
|
.get(`${base}/api/admin/events`)
|
|
|
|
.expect('Content-Type', /json/)
|
|
|
|
.expect(200);
|
|
|
|
|
|
|
|
expect(body.events.length).toBe(1);
|
|
|
|
expect(body.events[0].createdBy).toBe('some@email.com');
|
|
|
|
});
|
|
|
|
|
|
|
|
test('should anonymise events list via admin', async () => {
|
|
|
|
const { request, base, eventStore } = await getSetup(true);
|
|
|
|
eventStore.store(
|
|
|
|
new FeatureCreatedEvent({
|
|
|
|
createdBy: 'some@email.com',
|
|
|
|
data: { name: 'test', project: 'default' },
|
|
|
|
featureName: 'test',
|
|
|
|
project: 'default',
|
|
|
|
tags: [],
|
|
|
|
}),
|
|
|
|
);
|
|
|
|
const { body } = await request
|
|
|
|
.get(`${base}/api/admin/events`)
|
|
|
|
.expect('Content-Type', /json/)
|
|
|
|
.expect(200);
|
|
|
|
|
|
|
|
expect(body.events.length).toBe(1);
|
|
|
|
expect(body.events[0].createdBy).toBe('676212ff7@unleash.run');
|
|
|
|
});
|
2023-05-03 11:46:33 +02:00
|
|
|
|
|
|
|
test('should also anonymise email fields in data and preData properties', async () => {
|
|
|
|
const email1 = 'test1@email.com';
|
|
|
|
const email2 = 'test2@email.com';
|
|
|
|
|
|
|
|
const { request, base, eventStore } = await getSetup(true);
|
|
|
|
eventStore.store(
|
|
|
|
new ProjectUserAddedEvent({
|
|
|
|
createdBy: 'some@email.com',
|
|
|
|
data: { name: 'test', project: 'default', email: email1 },
|
|
|
|
project: 'default',
|
|
|
|
}),
|
|
|
|
);
|
|
|
|
eventStore.store(
|
|
|
|
new ProjectUserRemovedEvent({
|
|
|
|
createdBy: 'some@email.com',
|
|
|
|
preData: { name: 'test', project: 'default', email: email2 },
|
|
|
|
project: 'default',
|
|
|
|
}),
|
|
|
|
);
|
|
|
|
const { body } = await request
|
|
|
|
.get(`${base}/api/admin/events`)
|
|
|
|
.expect('Content-Type', /json/)
|
|
|
|
.expect(200);
|
|
|
|
|
|
|
|
expect(body.events.length).toBe(2);
|
|
|
|
expect(body.events[0].data.email).not.toBe(email1);
|
|
|
|
expect(body.events[1].preData.email).not.toBe(email2);
|
|
|
|
});
|