76 lines
1.7 KiB
JavaScript
Raw Normal View History

'use strict';
2020-12-29 16:43:53 +01:00
const path = require('path');
const _ = require('lodash');
const dotenv = require('dotenv');
const strapi = require('../../core/strapi/lib');
2020-12-29 16:43:53 +01:00
const { createUtils } = require('./utils');
const superAdminCredentials = {
email: 'admin@strapi.io',
firstname: 'admin',
lastname: 'admin',
password: 'Password123',
};
const superAdminLoginInfo = _.pick(superAdminCredentials, ['email', 'password']);
const TEST_APP_URL = path.resolve(__dirname, '../../../testApp');
const createStrapiInstance = async ({
ensureSuperAdmin = true,
2022-09-01 17:24:34 +02:00
logLevel = 'error',
bypassAuth = true,
2023-05-29 15:36:40 +02:00
bootstrap,
} = {}) => {
// read .env file as it could have been updated
dotenv.config({ path: process.env.ENV_PATH });
2022-03-15 11:02:00 +01:00
const options = {
appDir: TEST_APP_URL,
distDir: TEST_APP_URL,
};
const instance = strapi(options);
if (bypassAuth) {
instance.container.get('auth').register('content-api', {
name: 'test-auth',
authenticate() {
return { authenticated: true };
},
2022-08-08 15:50:34 +02:00
verify() {},
});
}
2023-05-29 15:36:40 +02:00
if (bootstrap) {
const modules = instance.container.get('modules');
const originalBootstrap = modules.bootstrap;
// decorate modules bootstrap
modules.bootstrap = async () => {
await originalBootstrap();
await bootstrap({ strapi: instance });
};
}
2021-09-08 18:23:52 +02:00
await instance.load();
instance.log.level = logLevel;
2022-07-12 17:51:18 +02:00
await instance.server.listen();
const utils = createUtils(instance);
if (ensureSuperAdmin) {
await utils.createUserIfNotExists(superAdminCredentials);
}
return instance;
};
module.exports = {
createStrapiInstance,
superAdmin: {
loginInfo: superAdminLoginInfo,
credentials: superAdminCredentials,
},
};