mirror of
https://github.com/Unleash/unleash.git
synced 2025-02-09 00:18:00 +01:00
fix: Make e2e test more stable (#767)
make sure we destroy all the stores which should also cancel any background work they have for the database.
This commit is contained in:
parent
f98a902615
commit
9bd23dc735
@ -9,14 +9,15 @@ const getLogger = require('../../../fixtures/no-logger');
|
|||||||
const MASKED_VALUE = '*****';
|
const MASKED_VALUE = '*****';
|
||||||
|
|
||||||
let stores;
|
let stores;
|
||||||
|
let db;
|
||||||
|
|
||||||
test.before(async () => {
|
test.before(async () => {
|
||||||
const db = await dbInit('addon_api_serial', getLogger);
|
db = await dbInit('addon_api_serial', getLogger);
|
||||||
stores = db.stores;
|
stores = db.stores;
|
||||||
});
|
});
|
||||||
|
|
||||||
test.after(async () => {
|
test.after(async () => {
|
||||||
await stores.db.destroy();
|
await db.destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
test.serial('gets all addons', async t => {
|
test.serial('gets all addons', async t => {
|
||||||
|
@ -7,14 +7,15 @@ const { setupApp } = require('../../helpers/test-helper');
|
|||||||
const getLogger = require('../../../fixtures/no-logger');
|
const getLogger = require('../../../fixtures/no-logger');
|
||||||
|
|
||||||
let stores;
|
let stores;
|
||||||
|
let db;
|
||||||
|
|
||||||
test.before(async () => {
|
test.before(async () => {
|
||||||
const db = await dbInit('context_api_serial', getLogger);
|
db = await dbInit('context_api_serial', getLogger);
|
||||||
stores = db.stores;
|
stores = db.stores;
|
||||||
});
|
});
|
||||||
|
|
||||||
test.after(async () => {
|
test.after(async () => {
|
||||||
await stores.db.destroy();
|
await db.destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
test.serial('gets all context fields', async t => {
|
test.serial('gets all context fields', async t => {
|
||||||
|
@ -6,14 +6,15 @@ const dbInit = require('../../helpers/database-init');
|
|||||||
const getLogger = require('../../../fixtures/no-logger');
|
const getLogger = require('../../../fixtures/no-logger');
|
||||||
|
|
||||||
let stores;
|
let stores;
|
||||||
|
let db;
|
||||||
|
|
||||||
test.before(async () => {
|
test.before(async () => {
|
||||||
const db = await dbInit('event_api_serial', getLogger);
|
db = await dbInit('event_api_serial', getLogger);
|
||||||
stores = db.stores;
|
stores = db.stores;
|
||||||
});
|
});
|
||||||
|
|
||||||
test.after(async () => {
|
test.after(async () => {
|
||||||
await stores.db.destroy();
|
await db.destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
test.serial('returns events', async t => {
|
test.serial('returns events', async t => {
|
||||||
|
@ -6,14 +6,15 @@ const dbInit = require('../../helpers/database-init');
|
|||||||
const getLogger = require('../../../fixtures/no-logger');
|
const getLogger = require('../../../fixtures/no-logger');
|
||||||
|
|
||||||
let stores;
|
let stores;
|
||||||
|
let db;
|
||||||
|
|
||||||
test.before(async () => {
|
test.before(async () => {
|
||||||
const db = await dbInit('archive_serial', getLogger);
|
db = await dbInit('archive_serial', getLogger);
|
||||||
stores = db.stores;
|
stores = db.stores;
|
||||||
});
|
});
|
||||||
|
|
||||||
test.after(async () => {
|
test.after(async () => {
|
||||||
await stores.db.destroy();
|
await db.destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
test.serial('returns three archived toggles', async t => {
|
test.serial('returns three archived toggles', async t => {
|
||||||
|
@ -6,14 +6,15 @@ const dbInit = require('../../helpers/database-init');
|
|||||||
const getLogger = require('../../../fixtures/no-logger');
|
const getLogger = require('../../../fixtures/no-logger');
|
||||||
|
|
||||||
let stores;
|
let stores;
|
||||||
|
let db;
|
||||||
|
|
||||||
test.before(async () => {
|
test.before(async () => {
|
||||||
const db = await dbInit('feature_api_auth', getLogger);
|
db = await dbInit('feature_api_auth', getLogger);
|
||||||
stores = db.stores;
|
stores = db.stores;
|
||||||
});
|
});
|
||||||
|
|
||||||
test.after(async () => {
|
test.after(async () => {
|
||||||
await stores.db.destroy();
|
await db.destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
test.serial('creates new feature toggle with createdBy', async t => {
|
test.serial('creates new feature toggle with createdBy', async t => {
|
||||||
|
@ -9,14 +9,15 @@ const dbInit = require('../../helpers/database-init');
|
|||||||
const getLogger = require('../../../fixtures/no-logger');
|
const getLogger = require('../../../fixtures/no-logger');
|
||||||
|
|
||||||
let stores;
|
let stores;
|
||||||
|
let db;
|
||||||
|
|
||||||
test.before(async () => {
|
test.before(async () => {
|
||||||
const db = await dbInit('feature_api_custom_auth', getLogger);
|
db = await dbInit('feature_api_custom_auth', getLogger);
|
||||||
stores = db.stores;
|
stores = db.stores;
|
||||||
});
|
});
|
||||||
|
|
||||||
test.after(async () => {
|
test.after(async () => {
|
||||||
await stores.db.destroy();
|
await db.destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
test.serial('should require authenticated user', async t => {
|
test.serial('should require authenticated user', async t => {
|
||||||
|
@ -7,14 +7,15 @@ const { setupApp } = require('../../helpers/test-helper');
|
|||||||
const getLogger = require('../../../fixtures/no-logger');
|
const getLogger = require('../../../fixtures/no-logger');
|
||||||
|
|
||||||
let stores;
|
let stores;
|
||||||
|
let db;
|
||||||
|
|
||||||
test.before(async () => {
|
test.before(async () => {
|
||||||
const db = await dbInit('feature_api_serial', getLogger);
|
db = await dbInit('feature_api_serial', getLogger);
|
||||||
stores = db.stores;
|
stores = db.stores;
|
||||||
});
|
});
|
||||||
|
|
||||||
test.after(async () => {
|
test.after(async () => {
|
||||||
await stores.db.destroy();
|
await db.destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
test.serial('returns list of feature toggles', async t => {
|
test.serial('returns list of feature toggles', async t => {
|
||||||
|
@ -6,16 +6,17 @@ const { setupApp } = require('../../helpers/test-helper');
|
|||||||
const getLogger = require('../../../fixtures/no-logger');
|
const getLogger = require('../../../fixtures/no-logger');
|
||||||
|
|
||||||
let stores;
|
let stores;
|
||||||
|
let db;
|
||||||
let reset = () => {};
|
let reset = () => {};
|
||||||
|
|
||||||
test.before(async () => {
|
test.before(async () => {
|
||||||
const db = await dbInit('metrics_serial', getLogger);
|
db = await dbInit('metrics_serial', getLogger);
|
||||||
stores = db.stores;
|
stores = db.stores;
|
||||||
reset = db.reset;
|
reset = db.reset;
|
||||||
});
|
});
|
||||||
|
|
||||||
test.after(async () => {
|
test.after(async () => {
|
||||||
await stores.db.destroy();
|
await db.destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
test.afterEach(async () => {
|
test.afterEach(async () => {
|
||||||
|
@ -7,14 +7,15 @@ const { setupApp } = require('../../helpers/test-helper');
|
|||||||
const getLogger = require('../../../fixtures/no-logger');
|
const getLogger = require('../../../fixtures/no-logger');
|
||||||
|
|
||||||
let stores;
|
let stores;
|
||||||
|
let db;
|
||||||
|
|
||||||
test.before(async () => {
|
test.before(async () => {
|
||||||
const db = await dbInit('state_api_serial', getLogger);
|
db = await dbInit('state_api_serial', getLogger);
|
||||||
stores = db.stores;
|
stores = db.stores;
|
||||||
});
|
});
|
||||||
|
|
||||||
test.after(async () => {
|
test.after(async () => {
|
||||||
await stores.db.destroy();
|
await db.destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
test.serial('exports strategies and features as json by default', async t => {
|
test.serial('exports strategies and features as json by default', async t => {
|
||||||
|
@ -7,14 +7,15 @@ const { setupApp } = require('../../helpers/test-helper');
|
|||||||
const getLogger = require('../../../fixtures/no-logger');
|
const getLogger = require('../../../fixtures/no-logger');
|
||||||
|
|
||||||
let stores;
|
let stores;
|
||||||
|
let db;
|
||||||
|
|
||||||
test.before(async () => {
|
test.before(async () => {
|
||||||
const db = await dbInit('strategy_api_serial', getLogger);
|
db = await dbInit('strategy_api_serial', getLogger);
|
||||||
stores = db.stores;
|
stores = db.stores;
|
||||||
});
|
});
|
||||||
|
|
||||||
test.after(async () => {
|
test.after(async () => {
|
||||||
await stores.db.destroy();
|
await db.destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
test.serial('gets all strategies', async t => {
|
test.serial('gets all strategies', async t => {
|
||||||
|
@ -6,14 +6,15 @@ const { setupApp } = require('../../helpers/test-helper');
|
|||||||
const getLogger = require('../../../fixtures/no-logger');
|
const getLogger = require('../../../fixtures/no-logger');
|
||||||
|
|
||||||
let stores;
|
let stores;
|
||||||
|
let db;
|
||||||
|
|
||||||
test.before(async () => {
|
test.before(async () => {
|
||||||
const db = await dbInit('tag_types_api_serial', getLogger);
|
db = await dbInit('tag_types_api_serial', getLogger);
|
||||||
stores = db.stores;
|
stores = db.stores;
|
||||||
});
|
});
|
||||||
|
|
||||||
test.after(async () => {
|
test.after(async () => {
|
||||||
await stores.db.destroy();
|
await db.destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
test.serial('returns list of tag-types', async t => {
|
test.serial('returns list of tag-types', async t => {
|
||||||
|
@ -6,14 +6,15 @@ const { setupApp } = require('../../helpers/test-helper');
|
|||||||
const getLogger = require('../../../fixtures/no-logger');
|
const getLogger = require('../../../fixtures/no-logger');
|
||||||
|
|
||||||
let stores;
|
let stores;
|
||||||
|
let db;
|
||||||
|
|
||||||
test.before(async () => {
|
test.before(async () => {
|
||||||
const db = await dbInit('tag_api_serial', getLogger);
|
db = await dbInit('tag_api_serial', getLogger);
|
||||||
stores = db.stores;
|
stores = db.stores;
|
||||||
});
|
});
|
||||||
|
|
||||||
test.after(async () => {
|
test.after(async () => {
|
||||||
await stores.db.destroy();
|
await db.destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
test.serial('returns list of tags', async t => {
|
test.serial('returns list of tags', async t => {
|
||||||
|
@ -6,14 +6,15 @@ const dbInit = require('../../helpers/database-init');
|
|||||||
const getLogger = require('../../../fixtures/no-logger');
|
const getLogger = require('../../../fixtures/no-logger');
|
||||||
|
|
||||||
let stores;
|
let stores;
|
||||||
|
let db;
|
||||||
|
|
||||||
test.before(async () => {
|
test.before(async () => {
|
||||||
const db = await dbInit('feature_api_client', getLogger);
|
db = await dbInit('feature_api_client', getLogger);
|
||||||
stores = db.stores;
|
stores = db.stores;
|
||||||
});
|
});
|
||||||
|
|
||||||
test.after(async () => {
|
test.after(async () => {
|
||||||
await stores.db.destroy();
|
await db.destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
test.serial('returns four feature toggles', async t => {
|
test.serial('returns four feature toggles', async t => {
|
||||||
|
@ -8,14 +8,15 @@ const dbInit = require('../../helpers/database-init');
|
|||||||
const getLogger = require('../../../fixtures/no-logger');
|
const getLogger = require('../../../fixtures/no-logger');
|
||||||
|
|
||||||
let stores;
|
let stores;
|
||||||
|
let db;
|
||||||
|
|
||||||
test.before(async () => {
|
test.before(async () => {
|
||||||
const db = await dbInit('metrics_api_client', getLogger);
|
db = await dbInit('metrics_api_client', getLogger);
|
||||||
stores = db.stores;
|
stores = db.stores;
|
||||||
});
|
});
|
||||||
|
|
||||||
test.after(async () => {
|
test.after(async () => {
|
||||||
await stores.db.destroy();
|
await db.destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
test.serial('should be possble to send metrics', async t => {
|
test.serial('should be possble to send metrics', async t => {
|
||||||
|
@ -15,14 +15,15 @@ const asyncFilter = async (arr, predicate) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
let stores;
|
let stores;
|
||||||
|
let db;
|
||||||
|
|
||||||
test.before(async () => {
|
test.before(async () => {
|
||||||
const db = await dbInit('register_client', getLogger);
|
db = await dbInit('register_client', getLogger);
|
||||||
stores = db.stores;
|
stores = db.stores;
|
||||||
});
|
});
|
||||||
|
|
||||||
test.after(async () => {
|
test.after(async () => {
|
||||||
await stores.db.destroy();
|
await db.destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
test.serial('should register client', async t => {
|
test.serial('should register client', async t => {
|
||||||
|
@ -6,14 +6,15 @@ const dbInit = require('./helpers/database-init');
|
|||||||
const getLogger = require('../fixtures/no-logger');
|
const getLogger = require('../fixtures/no-logger');
|
||||||
|
|
||||||
let stores;
|
let stores;
|
||||||
|
let db;
|
||||||
|
|
||||||
test.before(async () => {
|
test.before(async () => {
|
||||||
const db = await dbInit('health_api', getLogger);
|
db = await dbInit('health_api', getLogger);
|
||||||
stores = db.stores;
|
stores = db.stores;
|
||||||
});
|
});
|
||||||
|
|
||||||
test.after(async () => {
|
test.after(async () => {
|
||||||
await stores.db.destroy();
|
await db.destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('returns health good', async t => {
|
test('returns health good', async t => {
|
||||||
|
@ -107,5 +107,13 @@ module.exports = async function init(databaseSchema = 'test', getLogger) {
|
|||||||
await resetDatabase(stores);
|
await resetDatabase(stores);
|
||||||
await setupDatabase(stores);
|
await setupDatabase(stores);
|
||||||
},
|
},
|
||||||
|
destroy: async () => {
|
||||||
|
const { clientInstanceStore, clientMetricsStore } = stores;
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
clientInstanceStore.destroy();
|
||||||
|
clientMetricsStore.destroy();
|
||||||
|
db.destroy(error => (error ? reject(error) : resolve()));
|
||||||
|
});
|
||||||
|
},
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -11,6 +11,7 @@ const {
|
|||||||
const permissions = require('../../../lib/permissions');
|
const permissions = require('../../../lib/permissions');
|
||||||
const User = require('../../../lib/user');
|
const User = require('../../../lib/user');
|
||||||
|
|
||||||
|
let db;
|
||||||
let stores;
|
let stores;
|
||||||
let accessService;
|
let accessService;
|
||||||
|
|
||||||
@ -38,7 +39,7 @@ const createSuperUser = async () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
test.before(async () => {
|
test.before(async () => {
|
||||||
const db = await dbInit('access_service_serial', getLogger);
|
db = await dbInit('access_service_serial', getLogger);
|
||||||
stores = db.stores;
|
stores = db.stores;
|
||||||
// projectStore = stores.projectStore;
|
// projectStore = stores.projectStore;
|
||||||
accessService = new AccessService(stores, { getLogger });
|
accessService = new AccessService(stores, { getLogger });
|
||||||
@ -50,7 +51,7 @@ test.before(async () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test.after(async () => {
|
test.after(async () => {
|
||||||
await stores.db.destroy();
|
await db.destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
test.serial('should have access to admin addons', async t => {
|
test.serial('should have access to admin addons', async t => {
|
||||||
|
@ -6,10 +6,11 @@ const ClientMetricsService = require('../../../lib/services/client-metrics');
|
|||||||
const { APPLICATION_CREATED } = require('../../../lib/event-type');
|
const { APPLICATION_CREATED } = require('../../../lib/event-type');
|
||||||
|
|
||||||
let stores;
|
let stores;
|
||||||
|
let db;
|
||||||
let clientMetricsService;
|
let clientMetricsService;
|
||||||
|
|
||||||
test.before(async () => {
|
test.before(async () => {
|
||||||
const db = await dbInit('client_metrics_service_serial', getLogger);
|
db = await dbInit('client_metrics_service_serial', getLogger);
|
||||||
stores = db.stores;
|
stores = db.stores;
|
||||||
clientMetricsService = new ClientMetricsService(stores, {
|
clientMetricsService = new ClientMetricsService(stores, {
|
||||||
getLogger,
|
getLogger,
|
||||||
@ -19,7 +20,7 @@ test.before(async () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test.after(async () => {
|
test.after(async () => {
|
||||||
await stores.db.destroy();
|
await db.destroy();
|
||||||
});
|
});
|
||||||
test.serial('Apps registered should be announced', async t => {
|
test.serial('Apps registered should be announced', async t => {
|
||||||
t.plan(3);
|
t.plan(3);
|
||||||
|
@ -11,13 +11,14 @@ const { UPDATE_PROJECT } = require('../../../lib/permissions');
|
|||||||
const NotFoundError = require('../../../lib/error/notfound-error');
|
const NotFoundError = require('../../../lib/error/notfound-error');
|
||||||
|
|
||||||
let stores;
|
let stores;
|
||||||
// let projectStore;
|
let db;
|
||||||
|
|
||||||
let projectService;
|
let projectService;
|
||||||
let accessService;
|
let accessService;
|
||||||
let user;
|
let user;
|
||||||
|
|
||||||
test.before(async () => {
|
test.before(async () => {
|
||||||
const db = await dbInit('project_service_serial', getLogger);
|
db = await dbInit('project_service_serial', getLogger);
|
||||||
stores = db.stores;
|
stores = db.stores;
|
||||||
user = await stores.userStore.insert(
|
user = await stores.userStore.insert(
|
||||||
new User({ name: 'Some Name', email: 'test@getunleash.io' }),
|
new User({ name: 'Some Name', email: 'test@getunleash.io' }),
|
||||||
@ -28,7 +29,7 @@ test.before(async () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test.after(async () => {
|
test.after(async () => {
|
||||||
await stores.db.destroy();
|
await db.destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
test.serial('should have default project', async t => {
|
test.serial('should have default project', async t => {
|
||||||
|
@ -10,17 +10,18 @@ const {
|
|||||||
const dbInit = require('../helpers/database-init');
|
const dbInit = require('../helpers/database-init');
|
||||||
const getLogger = require('../../fixtures/no-logger');
|
const getLogger = require('../../fixtures/no-logger');
|
||||||
|
|
||||||
|
let db;
|
||||||
let stores;
|
let stores;
|
||||||
let eventStore;
|
let eventStore;
|
||||||
|
|
||||||
test.before(async () => {
|
test.before(async () => {
|
||||||
const db = await dbInit('event_store_serial', getLogger);
|
db = await dbInit('event_store_serial', getLogger);
|
||||||
stores = db.stores;
|
stores = db.stores;
|
||||||
eventStore = stores.eventStore;
|
eventStore = stores.eventStore;
|
||||||
});
|
});
|
||||||
|
|
||||||
test.after(async () => {
|
test.after(async () => {
|
||||||
await stores.db.destroy();
|
await db.destroy();
|
||||||
});
|
});
|
||||||
test.serial('Should include id and createdAt when saving', async t => {
|
test.serial('Should include id and createdAt when saving', async t => {
|
||||||
const clock = sinon.useFakeTimers();
|
const clock = sinon.useFakeTimers();
|
||||||
|
@ -5,16 +5,17 @@ const dbInit = require('../helpers/database-init');
|
|||||||
const getLogger = require('../../fixtures/no-logger');
|
const getLogger = require('../../fixtures/no-logger');
|
||||||
|
|
||||||
let stores;
|
let stores;
|
||||||
|
let db;
|
||||||
let projectStore;
|
let projectStore;
|
||||||
|
|
||||||
test.before(async () => {
|
test.before(async () => {
|
||||||
const db = await dbInit('project_store_serial', getLogger);
|
db = await dbInit('project_store_serial', getLogger);
|
||||||
stores = db.stores;
|
stores = db.stores;
|
||||||
projectStore = stores.projectStore;
|
projectStore = stores.projectStore;
|
||||||
});
|
});
|
||||||
|
|
||||||
test.after(async () => {
|
test.after(async () => {
|
||||||
await stores.db.destroy();
|
await db.destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
test.serial('should have default project', async t => {
|
test.serial('should have default project', async t => {
|
||||||
|
@ -5,14 +5,15 @@ const dbInit = require('../helpers/database-init');
|
|||||||
const getLogger = require('../../fixtures/no-logger');
|
const getLogger = require('../../fixtures/no-logger');
|
||||||
|
|
||||||
let stores;
|
let stores;
|
||||||
|
let db;
|
||||||
|
|
||||||
test.before(async () => {
|
test.before(async () => {
|
||||||
const db = await dbInit('setting_store_serial', getLogger);
|
db = await dbInit('setting_store_serial', getLogger);
|
||||||
stores = db.stores;
|
stores = db.stores;
|
||||||
});
|
});
|
||||||
|
|
||||||
test.after(async () => {
|
test.after(async () => {
|
||||||
await stores.db.destroy();
|
await db.destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
test.serial('should have api secret stored', async t => {
|
test.serial('should have api secret stored', async t => {
|
||||||
@ -20,7 +21,7 @@ test.serial('should have api secret stored', async t => {
|
|||||||
t.assert(secret);
|
t.assert(secret);
|
||||||
});
|
});
|
||||||
|
|
||||||
test.serial('should insert arbitarty value', async t => {
|
test.serial('should insert arbitrary value', async t => {
|
||||||
const value = { b: 'hello' };
|
const value = { b: 'hello' };
|
||||||
await stores.settingStore.insert('unleash.custom', value);
|
await stores.settingStore.insert('unleash.custom', value);
|
||||||
const ret = await stores.settingStore.get('unleash.custom');
|
const ret = await stores.settingStore.get('unleash.custom');
|
||||||
|
@ -12,14 +12,15 @@ const dbInit = require('../helpers/database-init');
|
|||||||
const getLogger = require('../../fixtures/no-logger');
|
const getLogger = require('../../fixtures/no-logger');
|
||||||
|
|
||||||
let stores;
|
let stores;
|
||||||
|
let db;
|
||||||
|
|
||||||
test.before(async () => {
|
test.before(async () => {
|
||||||
const db = await dbInit('user_store_serial', getLogger);
|
db = await dbInit('user_store_serial', getLogger);
|
||||||
stores = db.stores;
|
stores = db.stores;
|
||||||
});
|
});
|
||||||
|
|
||||||
test.after(async () => {
|
test.after(async () => {
|
||||||
await stores.db.destroy();
|
await db.destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
test.serial('should have no users', async t => {
|
test.serial('should have no users', async t => {
|
||||||
|
Loading…
Reference in New Issue
Block a user