From c7e77d25a02c7b08a94662f70996740e7b29cda6 Mon Sep 17 00:00:00 2001 From: David Mehren Date: Sat, 5 Mar 2022 18:45:53 +0100 Subject: [PATCH] test: support running e2e tests with mariadb Signed-off-by: David Mehren --- package.json | 2 ++ test/test-setup.ts | 47 ++++++++++++++++++++++------------------ yarn.lock | 53 +++++++++++++++++++++++++++++++++++++++------- 3 files changed, 73 insertions(+), 29 deletions(-) diff --git a/package.json b/package.json index dc91ced40..a7916221c 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/test/test-setup.ts b/test/test-setup.ts index 17ea3e07d..f9d6e9dac 100644 --- a/test/test-setup.ts +++ b/test/test-setup.ts @@ -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', diff --git a/yarn.lock b/yarn.lock index 0f0ba2364..1c769a951 100644 --- a/yarn.lock +++ b/yarn.lock @@ -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"