| 
									
										
										
										
											2020-10-27 11:27:17 +01:00
										 |  |  | 'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-29 12:33:08 +02:00
										 |  |  | const path = require('path'); | 
					
						
							| 
									
										
										
										
											2019-03-06 19:19:33 +01:00
										 |  |  | const execa = require('execa'); | 
					
						
							| 
									
										
										
										
											2019-04-18 16:01:31 +02:00
										 |  |  | 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'; | 
					
						
							| 
									
										
										
										
											2022-01-07 16:43:40 +01:00
										 |  |  | 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 = { | 
					
						
							| 
									
										
										
										
											2019-07-18 16:25:20 +02:00
										 |  |  |   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
										 |  |  |     }, | 
					
						
							| 
									
										
										
										
											2019-07-18 16:25:20 +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', | 
					
						
							|  |  |  |     }, | 
					
						
							| 
									
										
										
										
											2019-07-18 16:25:20 +02:00
										 |  |  |   }, | 
					
						
							|  |  |  |   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-07-18 16:25:20 +02:00
										 |  |  |   }, | 
					
						
							| 
									
										
										
										
											2019-03-06 19:19:33 +01:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-27 19:49:37 +02: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) => { | 
					
						
							| 
									
										
										
										
											2022-10-27 19:49:37 +02:00
										 |  |  |   return execa('yarn', [...jestCmd, ...args], { | 
					
						
							| 
									
										
										
										
											2019-03-12 11:41:38 +01:00
										 |  |  |     stdio: 'inherit', | 
					
						
							| 
									
										
										
										
											2021-03-29 12:33:08 +02:00
										 |  |  |     cwd: path.resolve(__dirname, '..'), | 
					
						
							| 
									
										
										
										
											2019-03-06 19:19:33 +01:00
										 |  |  |     env: { | 
					
						
							| 
									
										
										
										
											2022-10-27 19:49:37 +02:00
										 |  |  |       // 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, | 
					
						
							| 
									
										
										
										
											2022-01-07 16:43:40 +01:00
										 |  |  |       ENV_PATH: process.env.ENV_PATH, | 
					
						
							| 
									
										
										
										
											2022-03-21 10:20:46 +01:00
										 |  |  |       JWT_SECRET: 'aSecret', | 
					
						
							| 
									
										
										
										
											2019-03-06 19:19:33 +01:00
										 |  |  |     }, | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-27 19:49:37 +02:00
										 |  |  | const main = async ({ database, generateApp }, args) => { | 
					
						
							| 
									
										
										
										
											2019-03-12 11:41:38 +01:00
										 |  |  |   try { | 
					
						
							| 
									
										
										
										
											2022-10-27 19:49:37 +02:00
										 |  |  |     if (generateApp) { | 
					
						
							|  |  |  |       await cleanTestApp(appName); | 
					
						
							|  |  |  |       await generateTestApp({ appName, database }); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2019-03-06 19:19:33 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-24 17:01:51 +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
										 |  |  |     }); | 
					
						
							| 
									
										
										
										
											2019-03-12 11:41:38 +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-12 11:41:38 +01:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2019-03-06 19:19:33 +01:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-18 16:01:31 +02:00
										 |  |  | yargs | 
					
						
							| 
									
										
										
										
											2022-10-27 19:49:37 +02:00
										 |  |  |   .parserConfiguration({ | 
					
						
							|  |  |  |     'unknown-options-as-args': true, | 
					
						
							|  |  |  |   }) | 
					
						
							| 
									
										
										
										
											2019-04-18 16:01:31 +02:00
										 |  |  |   .command( | 
					
						
							| 
									
										
										
										
											2019-08-05 09:10:00 +02:00
										 |  |  |     '$0', | 
					
						
							| 
									
										
										
										
											2019-04-18 16:01:31 +02:00
										 |  |  |     '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', | 
					
						
							| 
									
										
										
										
											2019-04-18 16:01:31 +02:00
										 |  |  |         choices: Object.keys(databases), | 
					
						
							| 
									
										
										
										
											2019-08-05 09:10:00 +02:00
										 |  |  |         default: 'sqlite', | 
					
						
							| 
									
										
										
										
											2019-04-18 16:01:31 +02:00
										 |  |  |       }); | 
					
						
							| 
									
										
										
										
											2022-10-27 19:49:37 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |       yarg.boolean('generate-app'); | 
					
						
							| 
									
										
										
										
											2019-04-18 16:01:31 +02:00
										 |  |  |     }, | 
					
						
							| 
									
										
										
										
											2022-08-08 23:33:39 +02:00
										 |  |  |     (argv) => { | 
					
						
							| 
									
										
										
										
											2022-10-27 19:49:37 +02:00
										 |  |  |       const { database, generateApp = true } = argv; | 
					
						
							| 
									
										
										
										
											2019-08-05 09:10:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-27 19:49:37 +02:00
										 |  |  |       main({ generateApp, database: databases[database] }, argv._); | 
					
						
							| 
									
										
										
										
											2019-08-05 09:10:00 +02:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2019-04-18 16:01:31 +02:00
										 |  |  |   ) | 
					
						
							| 
									
										
										
										
											2022-08-08 23:33:39 +02:00
										 |  |  |   .help() | 
					
						
							|  |  |  |   .parse(); |