test: support running e2e tests with mariadb

Signed-off-by: David Mehren <git@herrmehren.de>
This commit is contained in:
David Mehren 2022-03-05 18:45:53 +01:00
parent 552cb05d92
commit c7e77d25a0
3 changed files with 73 additions and 29 deletions

View file

@ -48,6 +48,7 @@
"file-type": "16.5.3",
"joi": "17.6.0",
"minio": "7.0.26",
"mysql": "^2.18.1",
"nest-router": "1.0.9",
"node-fetch": "2.6.7",
"passport": "0.5.2",
@ -72,6 +73,7 @@
"@types/express": "4.17.13",
"@types/express-session": "1.17.4",
"@types/jest": "27.4.1",
"@types/mysql": "^2",
"@types/node": "16.11.26",
"@types/passport-local": "1.0.34",
"@types/pg": "^8",

View file

@ -86,12 +86,12 @@ export class TestSetup {
await appConnection.close();
}
switch (connectionOptions.type) {
case 'postgres': {
case 'postgres':
case 'mariadb': {
const connection = await createConnection({
type: 'postgres',
type: connectionOptions.type,
username: 'hedgedoc',
password: 'hedgedoc',
database: 'postgres',
});
await connection.query(`DROP DATABASE ${connectionOptions.database}`);
await connection.close();
@ -121,24 +121,28 @@ export class TestSetupBuilder {
* @private
*/
private static async setupTestDB(dbName: string) {
switch (process.env.HEDGEDOC_TEST_DB_TYPE || 'sqlite') {
case 'sqlite':
return;
case 'postgres': {
// Create a connection to internal postgres database to then create a test db
const connection = await createConnection({
type: 'postgres',
username: 'hedgedoc',
password: 'hedgedoc',
database: 'postgres',
});
await connection.query(`CREATE DATABASE ${dbName}`);
await connection.close();
return;
}
default:
throw new Error('Unknown database type in HEDGEDOC_TEST_DB_TYPE');
const dbType = process.env.HEDGEDOC_TEST_DB_TYPE;
if (!dbType || dbType === 'sqlite') {
return;
}
if (!['postgres', 'mariadb'].includes(dbType)) {
throw new Error('Unknown database type in HEDGEDOC_TEST_DB_TYPE');
}
const connection = await createConnection({
type: dbType as 'postgres' | 'mariadb',
username: dbType === 'mariadb' ? 'root' : 'hedgedoc',
password: 'hedgedoc',
});
await connection.query(`CREATE DATABASE ${dbName}`);
if (dbType === 'mariadb') {
await connection.query(
`GRANT ALL PRIVILEGES ON ${dbName}.* TO 'hedgedoc'@'%'`,
);
}
await connection.close();
}
private static getTestDBConf(dbName: string): TypeOrmModuleOptions {
@ -152,8 +156,9 @@ export class TestSetupBuilder {
dropSchema: true,
};
case 'postgres':
case 'mariadb':
return {
type: 'postgres',
type: process.env.HEDGEDOC_TEST_DB_TYPE as 'postgres' | 'mariadb',
database: dbName,
username: 'hedgedoc',
password: 'hedgedoc',

View file

@ -1724,6 +1724,15 @@ __metadata:
languageName: node
linkType: hard
"@types/mysql@npm:^2":
version: 2.15.21
resolution: "@types/mysql@npm:2.15.21"
dependencies:
"@types/node": "*"
checksum: 6f526e0183c2d03628ca3bdeec839900403863641d61397de3aa0431b8e92457f1580de16b54ee3cd81ccb3968f949a5fa9be939a2101f2148ed5ff3c775c0a7
languageName: node
linkType: hard
"@types/node-fetch@npm:2.6.1, @types/node-fetch@npm:^2.5.0":
version: 2.6.1
resolution: "@types/node-fetch@npm:2.6.1"
@ -2821,6 +2830,13 @@ __metadata:
languageName: node
linkType: hard
"bignumber.js@npm:9.0.0":
version: 9.0.0
resolution: "bignumber.js@npm:9.0.0"
checksum: 51f37890bca58bded63720add832b1c4898cf5b8ad95b5d4d9c3e763c461163d0355d11d91b740b0216b02e4e8cbb02455b28ee32140b775d96a39bbd817fdf6
languageName: node
linkType: hard
"binary-extensions@npm:^2.0.0":
version: 2.2.0
resolution: "binary-extensions@npm:2.2.0"
@ -5375,6 +5391,7 @@ __metadata:
"@types/express-session": 1.17.4
"@types/jest": 27.4.1
"@types/minio": 7.0.12
"@types/mysql": ^2
"@types/node": 16.11.26
"@types/node-fetch": 2.6.1
"@types/passport-http-bearer": 1.0.37
@ -5403,6 +5420,7 @@ __metadata:
joi: 17.6.0
minio: 7.0.26
mocked-env: 1.3.5
mysql: ^2.18.1
nest-router: 1.0.9
node-fetch: 2.6.7
passport: 0.5.2
@ -7391,6 +7409,18 @@ __metadata:
languageName: node
linkType: hard
"mysql@npm:^2.18.1":
version: 2.18.1
resolution: "mysql@npm:2.18.1"
dependencies:
bignumber.js: 9.0.0
readable-stream: 2.3.7
safe-buffer: 5.1.2
sqlstring: 2.3.1
checksum: 430dec8525e849bbb53f78ffc7aa85b2d1535f49f96ae06064089219cfabfdb9b4051e1fabcbacc0e5b85174ae4c762b071b99d4fb4d062e98f90e723b1def0a
languageName: node
linkType: hard
"mz@npm:^2.4.0":
version: 2.7.0
resolution: "mz@npm:2.7.0"
@ -8557,7 +8587,7 @@ __metadata:
languageName: node
linkType: hard
"readable-stream@npm:^2.0.6, readable-stream@npm:^2.2.2":
"readable-stream@npm:2.3.7, readable-stream@npm:^2.0.6, readable-stream@npm:^2.2.2":
version: 2.3.7
resolution: "readable-stream@npm:2.3.7"
dependencies:
@ -8808,6 +8838,13 @@ __metadata:
languageName: node
linkType: hard
"safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1":
version: 5.1.2
resolution: "safe-buffer@npm:5.1.2"
checksum: f2f1f7943ca44a594893a852894055cf619c1fbcb611237fc39e461ae751187e7baf4dc391a72125e0ac4fb2d8c5c0b3c71529622e6a58f46b960211e704903c
languageName: node
linkType: hard
"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0":
version: 5.2.1
resolution: "safe-buffer@npm:5.2.1"
@ -8815,13 +8852,6 @@ __metadata:
languageName: node
linkType: hard
"safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1":
version: 5.1.2
resolution: "safe-buffer@npm:5.1.2"
checksum: f2f1f7943ca44a594893a852894055cf619c1fbcb611237fc39e461ae751187e7baf4dc391a72125e0ac4fb2d8c5c0b3c71529622e6a58f46b960211e704903c
languageName: node
linkType: hard
"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.0.2, safer-buffer@npm:^2.1.0, safer-buffer@npm:~2.1.0":
version: 2.1.2
resolution: "safer-buffer@npm:2.1.2"
@ -9134,6 +9164,13 @@ __metadata:
languageName: node
linkType: hard
"sqlstring@npm:2.3.1":
version: 2.3.1
resolution: "sqlstring@npm:2.3.1"
checksum: de4299cf9bd0f49abae5b4eddde42c7ae7c447e035498ec50b3264610d6f0efbe433eeed2d20d48b6362bf46fd96c85cf6db240e994dbe6d5c3f9dac6d7ffd31
languageName: node
linkType: hard
"sshpk@npm:^1.7.0":
version: 1.17.0
resolution: "sshpk@npm:1.17.0"