strapi/test/api.js

105 lines
2.2 KiB
JavaScript
Raw Normal View History

'use strict';
const path = require('path');
2019-03-06 19:19:33 +01:00
const execa = require('execa');
const yargs = require('yargs');
2019-03-06 19:19:33 +01:00
2022-03-25 09:02:19 +01:00
process.env.NODE_ENV = 'test';
2019-03-06 19:19:33 +01:00
const appName = 'testApp';
process.env.ENV_PATH = path.resolve(__dirname, '..', appName, '.env');
const { cleanTestApp, generateTestApp } = require('./helpers/test-app-generator');
2019-03-06 19:19:33 +01:00
const databases = {
postgres: {
client: 'postgres',
2021-06-29 16:27:35 +02:00
connection: {
host: '127.0.0.1',
port: 5432,
database: 'strapi_test',
username: 'strapi',
password: 'strapi',
2022-11-19 01:04:54 +01:00
schema: 'myschema',
2021-06-29 16:27:35 +02:00
},
},
mysql: {
client: 'mysql',
2021-06-29 16:27:35 +02:00
connection: {
host: '127.0.0.1',
port: 3306,
database: 'strapi_test',
username: 'strapi',
password: 'strapi',
},
},
sqlite: {
client: 'sqlite',
2021-08-11 09:34:55 +02:00
connection: {
2021-06-29 16:27:35 +02:00
filename: './tmp/data.db',
},
2021-08-11 09:34:55 +02:00
useNullAsDefault: true,
},
2019-03-06 19:19:33 +01:00
};
const jestCmd =
'jest --config jest.config.api.js --verbose --runInBand --forceExit --detectOpenHandles'.split(
' '
);
2022-08-08 23:33:39 +02:00
const runAllTests = async (args) => {
return execa('yarn', [...jestCmd, ...args], {
stdio: 'inherit',
cwd: path.resolve(__dirname, '..'),
2019-03-06 19:19:33 +01:00
env: {
// if STRAPI_LICENSE is in the env the test will run in ee automatically
STRAPI_DISABLE_EE: !process.env.STRAPI_LICENSE,
2019-03-06 19:19:33 +01:00
FORCE_COLOR: 1,
ENV_PATH: process.env.ENV_PATH,
JWT_SECRET: 'aSecret',
2019-03-06 19:19:33 +01:00
},
});
};
const main = async ({ database, generateApp }, args) => {
try {
if (generateApp) {
await cleanTestApp(appName);
await generateTestApp({ appName, database });
}
2019-03-06 19:19:33 +01:00
await runAllTests(args).catch(() => {
2022-11-21 14:36:21 +01:00
process.exit(1);
2019-03-06 19:19:33 +01:00
});
} catch (error) {
2021-06-29 16:27:35 +02:00
console.error(error);
2022-11-21 14:36:21 +01:00
process.exit(1);
}
2019-03-06 19:19:33 +01:00
};
yargs
.parserConfiguration({
'unknown-options-as-args': true,
})
.command(
2019-08-05 09:10:00 +02:00
'$0',
'run end to end tests',
2022-08-08 23:33:39 +02:00
(yarg) => {
yarg.option('database', {
2019-08-05 09:10:00 +02:00
alias: 'db',
describe: 'choose a database',
choices: Object.keys(databases),
2019-08-05 09:10:00 +02:00
default: 'sqlite',
});
yarg.boolean('generate-app');
},
2022-08-08 23:33:39 +02:00
(argv) => {
const { database, generateApp = true } = argv;
2019-08-05 09:10:00 +02:00
main({ generateApp, database: databases[database] }, argv._);
2019-08-05 09:10:00 +02:00
}
)
2022-08-08 23:33:39 +02:00
.help()
.parse();