From e05f55a934d64736ca38fc52f792e733870876e3 Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Wed, 29 Nov 2023 15:53:03 +0100 Subject: [PATCH 01/38] feat: add tests --- API-Project/jest.config.js | 13 ++ API-Project/package-lock.json | 190 ++++++++++++++++++++- API-Project/package.json | 7 +- API-Project/src/gateways/recipe.gateway.ts | 1 - API-Project/src/server.ts | 6 +- API-Project/tests/app.spec.ts | 11 ++ API-Project/tsconfig.json | 2 +- 7 files changed, 220 insertions(+), 10 deletions(-) create mode 100644 API-Project/jest.config.js create mode 100644 API-Project/tests/app.spec.ts diff --git a/API-Project/jest.config.js b/API-Project/jest.config.js new file mode 100644 index 0000000..333758b --- /dev/null +++ b/API-Project/jest.config.js @@ -0,0 +1,13 @@ +module.exports = { + preset: 'ts-jest', + testEnvironment: 'node', + moduleNameMapper: { + '^@/(.*)$': '/src/$1', + }, + testMatch: ['/tests/**/*.spec.ts'], + globals: { + 'ts-jest': { + tsconfig: 'tsconfig.json', + }, + }, +}; \ No newline at end of file diff --git a/API-Project/package-lock.json b/API-Project/package-lock.json index cebc1eb..5acf996 100644 --- a/API-Project/package-lock.json +++ b/API-Project/package-lock.json @@ -17,13 +17,15 @@ "morgan": "^1.10.0", "nodemon": "^3.0.1", "pg": "^8.11.3", + "supertest": "^6.3.3", "ts-node": "^10.9.1", "tsup": "^7.2.0", "typescript": "^5.2.2" }, "devDependencies": { - "@types/jest": "^29.5.8", + "@types/jest": "^29.5.10", "@types/pg": "^8.10.9", + "@types/supertest": "^2.0.16", "jest": "^29.7.0", "ts-jest": "^29.1.1" } @@ -1246,6 +1248,12 @@ "@types/node": "*" } }, + "node_modules/@types/cookiejar": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz", + "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", + "dev": true + }, "node_modules/@types/express": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", @@ -1307,9 +1315,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.8", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.8.tgz", - "integrity": "sha512-fXEFTxMV2Co8ZF5aYFJv+YeA08RTYJfhtN5c9JSv/mFEMe+xxjufCb+PHL+bJcMs/ebPUsBu+UNTEz+ydXrR6g==", + "version": "29.5.10", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.10.tgz", + "integrity": "sha512-tE4yxKEphEyxj9s4inideLHktW/x6DwesIwWZ9NN1FKf9zbJYsnhBoA9vrHA/IuIOKwPa5PcFBNV4lpMIOEzyQ==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -1440,6 +1448,25 @@ "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "dev": true }, + "node_modules/@types/superagent": { + "version": "4.1.24", + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.24.tgz", + "integrity": "sha512-mEafCgyKiMFin24SDzWN7yAADt4gt6YawFiNMp0QS5ZPboORfyxFt0s3VzJKhTaKg9py/4FUmrHLTNfJKt9Rbw==", + "dev": true, + "dependencies": { + "@types/cookiejar": "*", + "@types/node": "*" + } + }, + "node_modules/@types/supertest": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.16.tgz", + "integrity": "sha512-6c2ogktZ06tr2ENoZivgm7YnprnhYE4ZoXGMY+oA7IuAf17M8FWvujXZGmxLv8y0PTyts4x5A+erSwVUFA8XSg==", + "dev": true, + "dependencies": { + "@types/superagent": "*" + } + }, "node_modules/@types/yargs": { "version": "17.0.31", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.31.tgz", @@ -1574,6 +1601,16 @@ "node": ">=8" } }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, "node_modules/babel-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", @@ -2051,6 +2088,17 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", @@ -2059,6 +2107,14 @@ "node": ">= 6" } }, + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2102,6 +2158,11 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, + "node_modules/cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==" + }, "node_modules/create-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", @@ -2185,6 +2246,14 @@ "node": ">= 0.4" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -2211,6 +2280,15 @@ "node": ">=8" } }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, "node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -2485,6 +2563,11 @@ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + }, "node_modules/fastq": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", @@ -2543,6 +2626,33 @@ "node": ">=8" } }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/formidable": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz", + "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==", + "dependencies": { + "dezalgo": "^1.0.4", + "hexoid": "^1.0.0", + "once": "^1.4.0", + "qs": "^6.11.0" + }, + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -2772,6 +2882,14 @@ "node": ">=16.0.0" } }, + "node_modules/hexoid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", + "engines": { + "node": ">=8" + } + }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -4996,6 +5114,70 @@ "node": ">=8" } }, + "node_modules/superagent": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz", + "integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==", + "dependencies": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.4", + "debug": "^4.3.4", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^2.1.2", + "methods": "^1.1.2", + "mime": "2.6.0", + "qs": "^6.11.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=6.4.0 <13 || >=14" + } + }, + "node_modules/superagent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/superagent/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/superagent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/supertest": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.3.tgz", + "integrity": "sha512-EMCG6G8gDu5qEqRQ3JjjPs6+FYT1a7Hv5ApHvtSghmOFJYtsU5S+pSb6Y2EUeCEY3CmEL3mmQ8YWlPOzQomabA==", + "dependencies": { + "methods": "^1.1.2", + "superagent": "^8.0.5" + }, + "engines": { + "node": ">=6.4.0" + } + }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", diff --git a/API-Project/package.json b/API-Project/package.json index 659fb81..140209f 100644 --- a/API-Project/package.json +++ b/API-Project/package.json @@ -7,7 +7,8 @@ "start": "node dist/server.js", "build": "tsup src/server.ts --format cjs --clean", "dev": "nodemon --watch src -e js,ts,json --exec \"ts-node src/server.ts\"", - "test": "jest --passWithNoTests" + "test": "jest", + "test:watch": "jest --watchAll" }, "author": "", "license": "ISC", @@ -20,13 +21,15 @@ "morgan": "^1.10.0", "nodemon": "^3.0.1", "pg": "^8.11.3", + "supertest": "^6.3.3", "ts-node": "^10.9.1", "tsup": "^7.2.0", "typescript": "^5.2.2" }, "devDependencies": { - "@types/jest": "^29.5.8", + "@types/jest": "^29.5.10", "@types/pg": "^8.10.9", + "@types/supertest": "^2.0.16", "jest": "^29.7.0", "ts-jest": "^29.1.1" } diff --git a/API-Project/src/gateways/recipe.gateway.ts b/API-Project/src/gateways/recipe.gateway.ts index 6e99f61..c245ea0 100644 --- a/API-Project/src/gateways/recipe.gateway.ts +++ b/API-Project/src/gateways/recipe.gateway.ts @@ -55,7 +55,6 @@ export class RecipeGateway { res.rows[0].description, Number(res.rows[0].time), steps, ingredients); - console.log(ingredients); return recipe; } diff --git a/API-Project/src/server.ts b/API-Project/src/server.ts index e850f26..b727f29 100644 --- a/API-Project/src/server.ts +++ b/API-Project/src/server.ts @@ -7,7 +7,7 @@ import { RecipesController } from "./controllers/recipes.controller"; import { StepsController } from "./controllers/steps.controller"; let helmet = require("helmet"); -let app = express(); +const app = express(); app.use(helmet.hidePoweredBy()); app.get('/', (req, res) => { @@ -20,4 +20,6 @@ app.use('/steps', StepsController) const port = process.env.PORT || 3000; -app.listen(port, () => console.log(`App listenning on PORT ${port}`)); \ No newline at end of file +app.listen(port, () => console.log(`App listenning on PORT ${port}`)); + +export default app; \ No newline at end of file diff --git a/API-Project/tests/app.spec.ts b/API-Project/tests/app.spec.ts new file mode 100644 index 0000000..e3919b3 --- /dev/null +++ b/API-Project/tests/app.spec.ts @@ -0,0 +1,11 @@ +import request from 'supertest'; +import app from '../src/server'; + +describe('GET /api/endpoint', () => { + it('should return a 200 status code', async () => { + const response = await request(app).get('/'); + expect(response.status).toBe(200); + }); + + // Add more test cases as needed +}); \ No newline at end of file diff --git a/API-Project/tsconfig.json b/API-Project/tsconfig.json index 544a4ea..a942d1b 100644 --- a/API-Project/tsconfig.json +++ b/API-Project/tsconfig.json @@ -26,7 +26,7 @@ /* Modules */ "module": "commonjs", /* Specify what module code is generated. */ - "rootDir": "./src", /* Specify the root folder within your source files. */ + "rootDir": ".", /* Specify the root folder within your source files. */ // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ From 2808d3fac982fc8c3e1015f11a28e5e71ce1f69d Mon Sep 17 00:00:00 2001 From: Remi R Date: Thu, 30 Nov 2023 08:25:52 +0100 Subject: [PATCH 02/38] feat: close server when running tests --- API-Project/package.json | 2 +- API-Project/src/server.ts | 2 +- API-Project/tests/app.spec.ts | 6 ++++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/API-Project/package.json b/API-Project/package.json index 140209f..2a2d5fb 100644 --- a/API-Project/package.json +++ b/API-Project/package.json @@ -7,7 +7,7 @@ "start": "node dist/server.js", "build": "tsup src/server.ts --format cjs --clean", "dev": "nodemon --watch src -e js,ts,json --exec \"ts-node src/server.ts\"", - "test": "jest", + "test": "jest --detectOpenHandles", "test:watch": "jest --watchAll" }, "author": "", diff --git a/API-Project/src/server.ts b/API-Project/src/server.ts index b727f29..6ab84fc 100644 --- a/API-Project/src/server.ts +++ b/API-Project/src/server.ts @@ -20,6 +20,6 @@ app.use('/steps', StepsController) const port = process.env.PORT || 3000; -app.listen(port, () => console.log(`App listenning on PORT ${port}`)); +export const server = app.listen(port, () => console.log(`App listenning on PORT ${port}`)); export default app; \ No newline at end of file diff --git a/API-Project/tests/app.spec.ts b/API-Project/tests/app.spec.ts index e3919b3..e14d333 100644 --- a/API-Project/tests/app.spec.ts +++ b/API-Project/tests/app.spec.ts @@ -1,5 +1,5 @@ import request from 'supertest'; -import app from '../src/server'; +import app, {server} from '../src/server'; describe('GET /api/endpoint', () => { it('should return a 200 status code', async () => { @@ -7,5 +7,7 @@ describe('GET /api/endpoint', () => { expect(response.status).toBe(200); }); - // Add more test cases as needed + // Ecrire d'autres tests ici + + server.close() }); \ No newline at end of file From 3ee3149d504d6bcb19e167b89baa821828ed018d Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 08:30:14 +0100 Subject: [PATCH 03/38] get modifications --- .drone.yml | 8 ++++---- API-Project/jest.config.js | 13 ------------- API-Project/package-lock.json | 19 +++++++++++++++++++ API-Project/package.json | 12 +++++++++++- 4 files changed, 34 insertions(+), 18 deletions(-) delete mode 100644 API-Project/jest.config.js diff --git a/.drone.yml b/.drone.yml index 9c63a1b..e678012 100644 --- a/.drone.yml +++ b/.drone.yml @@ -25,7 +25,7 @@ steps: - npm install - npm run build - - name: test + - name: publish-jest-reports image: node:latest environment: DB_USERNAME: @@ -40,7 +40,7 @@ steps: from_secret: SECRET_DB_PORT commands: - cd ./API-Project - - npm run test + - npm run test:coverage depends_on: [ api-build ] - name: docker-build-and-push @@ -102,5 +102,5 @@ steps: - unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ - export PATH=$SONAR_SCANNER_HOME/bin:$PATH - export SONAR_SCANNER_OPTS="-server" - - sonar-scanner -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar - depends_on: [ api-build ] \ No newline at end of file + - sonar-scanner -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.testExecutionReportPaths=./coverage/sonar-report.xml + depends_on: [ publish-jest-reports ] \ No newline at end of file diff --git a/API-Project/jest.config.js b/API-Project/jest.config.js deleted file mode 100644 index 333758b..0000000 --- a/API-Project/jest.config.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - moduleNameMapper: { - '^@/(.*)$': '/src/$1', - }, - testMatch: ['/tests/**/*.spec.ts'], - globals: { - 'ts-jest': { - tsconfig: 'tsconfig.json', - }, - }, -}; \ No newline at end of file diff --git a/API-Project/package-lock.json b/API-Project/package-lock.json index 5acf996..9787305 100644 --- a/API-Project/package-lock.json +++ b/API-Project/package-lock.json @@ -27,6 +27,7 @@ "@types/pg": "^8.10.9", "@types/supertest": "^2.0.16", "jest": "^29.7.0", + "jest-sonar-reporter": "^2.0.0", "ts-jest": "^29.1.1" } }, @@ -3662,6 +3663,18 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-sonar-reporter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jest-sonar-reporter/-/jest-sonar-reporter-2.0.0.tgz", + "integrity": "sha512-ZervDCgEX5gdUbdtWsjdipLN3bKJwpxbvhkYNXTAYvAckCihobSLr9OT/IuyNIRT1EZMDDwR6DroWtrq+IL64w==", + "dev": true, + "dependencies": { + "xml": "^1.0.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/jest-util": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", @@ -5661,6 +5674,12 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/xml": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", + "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", + "dev": true + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/API-Project/package.json b/API-Project/package.json index 140209f..3cb773a 100644 --- a/API-Project/package.json +++ b/API-Project/package.json @@ -8,7 +8,8 @@ "build": "tsup src/server.ts --format cjs --clean", "dev": "nodemon --watch src -e js,ts,json --exec \"ts-node src/server.ts\"", "test": "jest", - "test:watch": "jest --watchAll" + "test:watch": "jest --watchAll", + "test:coverage": "jest --coverage" }, "author": "", "license": "ISC", @@ -31,6 +32,15 @@ "@types/pg": "^8.10.9", "@types/supertest": "^2.0.16", "jest": "^29.7.0", + "jest-sonar-reporter": "^2.0.0", "ts-jest": "^29.1.1" + }, + "jest": { + "testResultsProcessor": "jest-sonar-reporter", + "preset": "ts-jest" + }, + "jestSonar": { + "reportPath": "./reports", + "reportFile": "report.test.xml" } } From 77100f812979b13fceee569a7518019097835c75 Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 09:27:44 +0100 Subject: [PATCH 04/38] working on test and sonar --- .drone.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index 16637b8..ef9c9e3 100644 --- a/.drone.yml +++ b/.drone.yml @@ -40,7 +40,7 @@ steps: from_secret: SECRET_DB_PORT commands: - cd ./API-Project - - npm run test:coverage + - npm run test:coverage --outputDirectory=./jest-reports depends_on: [ api-build ] - name: docker-build-and-push @@ -102,5 +102,5 @@ steps: - unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ - export PATH=$SONAR_SCANNER_HOME/bin:$PATH - export SONAR_SCANNER_OPTS="-server" - - sonar-scanner -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.testExecutionReportPaths=./reports/report.test.xml + - sonar-scanner -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.testExecutionReportPaths=./API-Project/jest-reports/report.test.xml depends_on: [ publish-jest-reports ] \ No newline at end of file From 8f4a20a3782fdd81bf777182bdf48d05d876405d Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 09:28:48 +0100 Subject: [PATCH 05/38] working on test and sonar --- .drone.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.drone.yml b/.drone.yml index ef9c9e3..1a12839 100644 --- a/.drone.yml +++ b/.drone.yml @@ -39,6 +39,7 @@ steps: DB_PORT: from_secret: SECRET_DB_PORT commands: + - pwd - cd ./API-Project - npm run test:coverage --outputDirectory=./jest-reports depends_on: [ api-build ] From 75c0d8e656b7691d6975922485ac2bbf8998b1df Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 09:30:02 +0100 Subject: [PATCH 06/38] working on test and sonar --- .drone.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 1a12839..a64c990 100644 --- a/.drone.yml +++ b/.drone.yml @@ -39,9 +39,11 @@ steps: DB_PORT: from_secret: SECRET_DB_PORT commands: - - pwd - cd ./API-Project - npm run test:coverage --outputDirectory=./jest-reports + - pwd + - ls + - ls ./jest-reports depends_on: [ api-build ] - name: docker-build-and-push From 8333c093d1b4679dfe1076707ac0ff5f544e9302 Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 09:31:36 +0100 Subject: [PATCH 07/38] working on test and sonar --- .drone.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index a64c990..c5be551 100644 --- a/.drone.yml +++ b/.drone.yml @@ -40,7 +40,7 @@ steps: from_secret: SECRET_DB_PORT commands: - cd ./API-Project - - npm run test:coverage --outputDirectory=./jest-reports + - npm run test:coverage - pwd - ls - ls ./jest-reports @@ -105,5 +105,5 @@ steps: - unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ - export PATH=$SONAR_SCANNER_HOME/bin:$PATH - export SONAR_SCANNER_OPTS="-server" - - sonar-scanner -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.testExecutionReportPaths=./API-Project/jest-reports/report.test.xml + - sonar-scanner -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.testExecutionReportPaths=./API-Project/reports/report.test.xml depends_on: [ publish-jest-reports ] \ No newline at end of file From 4b8c84706246acf3e519456baac46eec5068ef91 Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 09:32:38 +0100 Subject: [PATCH 08/38] working on test and sonar --- .drone.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index c5be551..607510f 100644 --- a/.drone.yml +++ b/.drone.yml @@ -43,7 +43,7 @@ steps: - npm run test:coverage - pwd - ls - - ls ./jest-reports + - ls ./reports depends_on: [ api-build ] - name: docker-build-and-push @@ -105,5 +105,6 @@ steps: - unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ - export PATH=$SONAR_SCANNER_HOME/bin:$PATH - export SONAR_SCANNER_OPTS="-server" + - ls ./API-Project - sonar-scanner -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.testExecutionReportPaths=./API-Project/reports/report.test.xml depends_on: [ publish-jest-reports ] \ No newline at end of file From 395754856429ac9f60352cb98c52adedf55b9432 Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 09:35:57 +0100 Subject: [PATCH 09/38] working on test and sonar --- .drone.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index 607510f..26ed5ca 100644 --- a/.drone.yml +++ b/.drone.yml @@ -105,6 +105,5 @@ steps: - unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ - export PATH=$SONAR_SCANNER_HOME/bin:$PATH - export SONAR_SCANNER_OPTS="-server" - - ls ./API-Project - - sonar-scanner -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.testExecutionReportPaths=./API-Project/reports/report.test.xml + - sonar-scanner -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.tests=./API-Project/tests -D sonar.testExecutionReportPaths=./API-Project/reports/report.test.xml depends_on: [ publish-jest-reports ] \ No newline at end of file From 6d669567519fe55a5b91dcdfc82eb618c951b77a Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 09:40:16 +0100 Subject: [PATCH 10/38] working on test and sonar --- API-Project/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/API-Project/package.json b/API-Project/package.json index 1160fe4..958f36b 100644 --- a/API-Project/package.json +++ b/API-Project/package.json @@ -37,7 +37,8 @@ }, "jest": { "testResultsProcessor": "jest-sonar-reporter", - "preset": "ts-jest" + "preset": "ts-jest", + "testMatch": ["/tests/**/*.spec.ts"] }, "jestSonar": { "reportPath": "./reports", From dde3156142294af88757459803a71517cc1862c5 Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 09:41:26 +0100 Subject: [PATCH 11/38] working on test and sonar --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 26ed5ca..8203515 100644 --- a/.drone.yml +++ b/.drone.yml @@ -105,5 +105,5 @@ steps: - unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ - export PATH=$SONAR_SCANNER_HOME/bin:$PATH - export SONAR_SCANNER_OPTS="-server" - - sonar-scanner -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.tests=./API-Project/tests -D sonar.testExecutionReportPaths=./API-Project/reports/report.test.xml + - sonar-scanner -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.testExecutionReportPaths=./API-Project/reports/report.test.xml depends_on: [ publish-jest-reports ] \ No newline at end of file From 6391d3ee2518a66e3fb3731f04a6e154dfb23bd7 Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 09:42:52 +0100 Subject: [PATCH 12/38] working on test and sonar --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 8203515..26ed5ca 100644 --- a/.drone.yml +++ b/.drone.yml @@ -105,5 +105,5 @@ steps: - unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ - export PATH=$SONAR_SCANNER_HOME/bin:$PATH - export SONAR_SCANNER_OPTS="-server" - - sonar-scanner -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.testExecutionReportPaths=./API-Project/reports/report.test.xml + - sonar-scanner -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.tests=./API-Project/tests -D sonar.testExecutionReportPaths=./API-Project/reports/report.test.xml depends_on: [ publish-jest-reports ] \ No newline at end of file From 95c5ef3b52777d4b2318adeaf7eec6c4be0b108a Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 09:43:58 +0100 Subject: [PATCH 13/38] working on test and sonar --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 26ed5ca..ccfecf7 100644 --- a/.drone.yml +++ b/.drone.yml @@ -105,5 +105,5 @@ steps: - unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ - export PATH=$SONAR_SCANNER_HOME/bin:$PATH - export SONAR_SCANNER_OPTS="-server" - - sonar-scanner -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.tests=./API-Project/tests -D sonar.testExecutionReportPaths=./API-Project/reports/report.test.xml + - sonar-scanner -X -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.tests=./API-Project/tests -D sonar.testExecutionReportPaths=./API-Project/reports/report.test.xml depends_on: [ publish-jest-reports ] \ No newline at end of file From fe499b36a2c2ec09fa2d8c39e6102db156559bd4 Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 09:57:43 +0100 Subject: [PATCH 14/38] working on test and sonar --- API-Project/package.json | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/API-Project/package.json b/API-Project/package.json index 958f36b..f839064 100644 --- a/API-Project/package.json +++ b/API-Project/package.json @@ -38,10 +38,16 @@ "jest": { "testResultsProcessor": "jest-sonar-reporter", "preset": "ts-jest", - "testMatch": ["/tests/**/*.spec.ts"] - }, - "jestSonar": { - "reportPath": "./reports", - "reportFile": "report.test.xml" + "testMatch": ["/tests/**/*.spec.ts"], + "reporters": [ + "default", + [ + "jest-sonar-reporter", + { + "outputDirectory": "./reports", + "outputName": "report.test.xml" + } + ] + ] } } From 20729472ce57a1ef517746b7a0976724fe02704f Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 10:06:00 +0100 Subject: [PATCH 15/38] working on test and sonar --- API-Project/package.json | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/API-Project/package.json b/API-Project/package.json index f839064..e877614 100644 --- a/API-Project/package.json +++ b/API-Project/package.json @@ -36,18 +36,11 @@ "ts-jest": "^29.1.1" }, "jest": { - "testResultsProcessor": "jest-sonar-reporter", "preset": "ts-jest", - "testMatch": ["/tests/**/*.spec.ts"], - "reporters": [ - "default", - [ - "jest-sonar-reporter", - { - "outputDirectory": "./reports", - "outputName": "report.test.xml" - } - ] - ] + "testMatch": ["/tests/**/*.spec.ts"] + }, + "jestSonar": { + "reportPath": "./reports", + "reportFile": "report.test.xml" } } From f098aa924a299e3878b4b59d6ecff97f90396965 Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 10:07:29 +0100 Subject: [PATCH 16/38] working on test and sonar --- .drone.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index ccfecf7..cee84ae 100644 --- a/.drone.yml +++ b/.drone.yml @@ -41,9 +41,7 @@ steps: commands: - cd ./API-Project - npm run test:coverage - - pwd - ls - - ls ./reports depends_on: [ api-build ] - name: docker-build-and-push From 50c47747e09f2ddba720e4cfcbdd95bbb269b813 Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 10:09:52 +0100 Subject: [PATCH 17/38] working on test and sonar --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index cee84ae..f0b5949 100644 --- a/.drone.yml +++ b/.drone.yml @@ -103,5 +103,5 @@ steps: - unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ - export PATH=$SONAR_SCANNER_HOME/bin:$PATH - export SONAR_SCANNER_OPTS="-server" - - sonar-scanner -X -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.tests=./API-Project/tests -D sonar.testExecutionReportPaths=./API-Project/reports/report.test.xml + - sonar-scanner -X -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.testExecutionReportPaths=./API-Project/reports/report.test.xml depends_on: [ publish-jest-reports ] \ No newline at end of file From 018f274bf7c9d434b80fc6c6bf1f00a6d9007dec Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 10:23:51 +0100 Subject: [PATCH 18/38] working on test and sonar --- .drone.yml | 5 +++-- API-Project/package.json | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.drone.yml b/.drone.yml index f0b5949..66df4fa 100644 --- a/.drone.yml +++ b/.drone.yml @@ -41,7 +41,8 @@ steps: commands: - cd ./API-Project - npm run test:coverage - - ls + - mkdir reports + - cp -r ./coverage/* ./reports depends_on: [ api-build ] - name: docker-build-and-push @@ -103,5 +104,5 @@ steps: - unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ - export PATH=$SONAR_SCANNER_HOME/bin:$PATH - export SONAR_SCANNER_OPTS="-server" - - sonar-scanner -X -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.testExecutionReportPaths=./API-Project/reports/report.test.xml + - sonar-scanner -X -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.tests=./API-Project/tests -D sonar.testExecutionReportPaths=./API-Project/reports/report.test.xml depends_on: [ publish-jest-reports ] \ No newline at end of file diff --git a/API-Project/package.json b/API-Project/package.json index e877614..6fca1ed 100644 --- a/API-Project/package.json +++ b/API-Project/package.json @@ -37,7 +37,9 @@ }, "jest": { "preset": "ts-jest", - "testMatch": ["/tests/**/*.spec.ts"] + "testMatch": ["/tests/**/*.spec.ts"], + "coverageReporters": ["json", "lcov", "text", "clover"], + "coverageDirectory": "./coverage" }, "jestSonar": { "reportPath": "./reports", From d7028d016ac4c220df48cbd7a8e36b977ede2559 Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 10:27:53 +0100 Subject: [PATCH 19/38] working on test and sonar --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 66df4fa..6cb469a 100644 --- a/.drone.yml +++ b/.drone.yml @@ -104,5 +104,5 @@ steps: - unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ - export PATH=$SONAR_SCANNER_HOME/bin:$PATH - export SONAR_SCANNER_OPTS="-server" - - sonar-scanner -X -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.tests=./API-Project/tests -D sonar.testExecutionReportPaths=./API-Project/reports/report.test.xml + - sonar-scanner -X -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.tests=./API-Project/tests -D sonar.testExecutionReportPaths=./API-Project/reports/report.test.xml -D sonar.host.url=https://codefirst.iut.uca.fr/sonar depends_on: [ publish-jest-reports ] \ No newline at end of file From e23b1bb4d40fe63af6a4c86feebc27daa2b93d14 Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 10:31:34 +0100 Subject: [PATCH 20/38] working on test and sonar --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 6cb469a..b96c392 100644 --- a/.drone.yml +++ b/.drone.yml @@ -104,5 +104,5 @@ steps: - unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ - export PATH=$SONAR_SCANNER_HOME/bin:$PATH - export SONAR_SCANNER_OPTS="-server" - - sonar-scanner -X -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.tests=./API-Project/tests -D sonar.testExecutionReportPaths=./API-Project/reports/report.test.xml -D sonar.host.url=https://codefirst.iut.uca.fr/sonar + - sonar-scanner -X -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.testExecutionReportPaths=./API-Project/reports/report.test.xml -D sonar.host.url=https://codefirst.iut.uca.fr/sonar depends_on: [ publish-jest-reports ] \ No newline at end of file From 96ddbd46099179df11de0789504335dcbaa3ba1c Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 10:37:37 +0100 Subject: [PATCH 21/38] working on test and sonar --- .drone.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.drone.yml b/.drone.yml index b96c392..5bd951a 100644 --- a/.drone.yml +++ b/.drone.yml @@ -43,6 +43,7 @@ steps: - npm run test:coverage - mkdir reports - cp -r ./coverage/* ./reports + - ls -R ./reports depends_on: [ api-build ] - name: docker-build-and-push From 1f3011177cb3bed261077c4b11d979fa71ca7f38 Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 10:40:55 +0100 Subject: [PATCH 22/38] working on test and sonar --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 5bd951a..f10d13f 100644 --- a/.drone.yml +++ b/.drone.yml @@ -105,5 +105,5 @@ steps: - unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ - export PATH=$SONAR_SCANNER_HOME/bin:$PATH - export SONAR_SCANNER_OPTS="-server" - - sonar-scanner -X -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.testExecutionReportPaths=./API-Project/reports/report.test.xml -D sonar.host.url=https://codefirst.iut.uca.fr/sonar + - sonar-scanner -X -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.testExecutionReportPaths=./API-Project/reports/lcov.info -D sonar.host.url=https://codefirst.iut.uca.fr/sonar depends_on: [ publish-jest-reports ] \ No newline at end of file From a3cf39004c3a5ea843a67e8031b0c91190ff8248 Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 10:57:22 +0100 Subject: [PATCH 23/38] working on test and sonar --- .drone.yml | 2 +- API-Project/package.json | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.drone.yml b/.drone.yml index f10d13f..b90cb06 100644 --- a/.drone.yml +++ b/.drone.yml @@ -105,5 +105,5 @@ steps: - unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ - export PATH=$SONAR_SCANNER_HOME/bin:$PATH - export SONAR_SCANNER_OPTS="-server" - - sonar-scanner -X -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.testExecutionReportPaths=./API-Project/reports/lcov.info -D sonar.host.url=https://codefirst.iut.uca.fr/sonar + - sonar-scanner -X -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar depends_on: [ publish-jest-reports ] \ No newline at end of file diff --git a/API-Project/package.json b/API-Project/package.json index 6fca1ed..66fe741 100644 --- a/API-Project/package.json +++ b/API-Project/package.json @@ -38,11 +38,10 @@ "jest": { "preset": "ts-jest", "testMatch": ["/tests/**/*.spec.ts"], - "coverageReporters": ["json", "lcov", "text", "clover"], - "coverageDirectory": "./coverage" + "testResultsProcessor": "jest-sonar-reporter" }, "jestSonar": { - "reportPath": "./reports", - "reportFile": "report.test.xml" + "reportPath": "./coverage", + "reportFile": "sonar-report.test.xml" } } From 5655984c3f63451dfb4bcf818123dffba3fad3c0 Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 10:58:54 +0100 Subject: [PATCH 24/38] working on test and sonar --- .drone.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.drone.yml b/.drone.yml index b90cb06..2724c63 100644 --- a/.drone.yml +++ b/.drone.yml @@ -41,9 +41,6 @@ steps: commands: - cd ./API-Project - npm run test:coverage - - mkdir reports - - cp -r ./coverage/* ./reports - - ls -R ./reports depends_on: [ api-build ] - name: docker-build-and-push @@ -105,5 +102,5 @@ steps: - unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ - export PATH=$SONAR_SCANNER_HOME/bin:$PATH - export SONAR_SCANNER_OPTS="-server" - - sonar-scanner -X -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar + - sonar-scanner -X -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.testExecutionReportPaths=test-report.xml depends_on: [ publish-jest-reports ] \ No newline at end of file From d922e80e5b5ca6e7a087c225ac59fb4906b7dd6f Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 11:00:10 +0100 Subject: [PATCH 25/38] working on test and sonar --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 2724c63..3c550b7 100644 --- a/.drone.yml +++ b/.drone.yml @@ -102,5 +102,5 @@ steps: - unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ - export PATH=$SONAR_SCANNER_HOME/bin:$PATH - export SONAR_SCANNER_OPTS="-server" - - sonar-scanner -X -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.testExecutionReportPaths=test-report.xml + - sonar-scanner -X -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.testExecutionReportPaths=./API-Project/coverage/sonar-report.test.xml depends_on: [ publish-jest-reports ] \ No newline at end of file From 59f87bec57b12b6d242b1aecf689e19453d18dcc Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 11:02:16 +0100 Subject: [PATCH 26/38] working on test and sonar --- .drone.yml | 2 +- API-Project/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index 3c550b7..dea009b 100644 --- a/.drone.yml +++ b/.drone.yml @@ -102,5 +102,5 @@ steps: - unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ - export PATH=$SONAR_SCANNER_HOME/bin:$PATH - export SONAR_SCANNER_OPTS="-server" - - sonar-scanner -X -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.testExecutionReportPaths=./API-Project/coverage/sonar-report.test.xml + - sonar-scanner -X -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.testExecutionReportPaths=./API-Project/coverage/sonar-report.xml depends_on: [ publish-jest-reports ] \ No newline at end of file diff --git a/API-Project/package.json b/API-Project/package.json index 66fe741..3d6ade9 100644 --- a/API-Project/package.json +++ b/API-Project/package.json @@ -42,6 +42,6 @@ }, "jestSonar": { "reportPath": "./coverage", - "reportFile": "sonar-report.test.xml" + "reportFile": "sonar-report.xml" } } From 4ba1c8918ce8a15b3ed4915e84bd42719eaa2691 Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 11:05:16 +0100 Subject: [PATCH 27/38] working on test and sonar --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index dea009b..696ca16 100644 --- a/.drone.yml +++ b/.drone.yml @@ -102,5 +102,5 @@ steps: - unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ - export PATH=$SONAR_SCANNER_HOME/bin:$PATH - export SONAR_SCANNER_OPTS="-server" - - sonar-scanner -X -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.testExecutionReportPaths=./API-Project/coverage/sonar-report.xml + - sonar-scanner -X -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.testExecutionReportPaths=./API-Project/coverage/sonar-report.xml -D sonar.test.inclusions=**/*.spec.ts depends_on: [ publish-jest-reports ] \ No newline at end of file From cd19a51619f99ed4bded1de065c3a002eebf7038 Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 11:24:14 +0100 Subject: [PATCH 28/38] resolving bugs and security mentionned by sonar --- API-Project/src/controllers/ingredients.controller.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/API-Project/src/controllers/ingredients.controller.ts b/API-Project/src/controllers/ingredients.controller.ts index 8945ea5..822ca95 100644 --- a/API-Project/src/controllers/ingredients.controller.ts +++ b/API-Project/src/controllers/ingredients.controller.ts @@ -51,7 +51,6 @@ IngredientsController.get('/letter/:letter', async (req, res) => { /** To get one ingredient by id */ IngredientsController.get('/:id', async (req, res) => { - console const id = Number(req.params.id); if (!Number.isInteger(id)) { From 3b25db6749310446af4f4fd5a184bd876182eef1 Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 11:32:51 +0100 Subject: [PATCH 29/38] working on test and sonar --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 696ca16..ec72df4 100644 --- a/.drone.yml +++ b/.drone.yml @@ -102,5 +102,5 @@ steps: - unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ - export PATH=$SONAR_SCANNER_HOME/bin:$PATH - export SONAR_SCANNER_OPTS="-server" - - sonar-scanner -X -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.testExecutionReportPaths=./API-Project/coverage/sonar-report.xml -D sonar.test.inclusions=**/*.spec.ts + - sonar-scanner -X -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.genericcoverage.unitTestReportPaths=./API-Project/coverage/sonar-report.xml depends_on: [ publish-jest-reports ] \ No newline at end of file From 0a6bf924c0db0b23e9e5de64b40eb634f911d487 Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 11:41:58 +0100 Subject: [PATCH 30/38] working on test and sonar --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index ec72df4..2105983 100644 --- a/.drone.yml +++ b/.drone.yml @@ -102,5 +102,5 @@ steps: - unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ - export PATH=$SONAR_SCANNER_HOME/bin:$PATH - export SONAR_SCANNER_OPTS="-server" - - sonar-scanner -X -D sonar.projectKey=LeftOvers_Api -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar -D sonar.genericcoverage.unitTestReportPaths=./API-Project/coverage/sonar-report.xml + - sonar-scanner -D sonar.projectKey=LeftOvers_Api -D sonar.host.url=https://codefirst.iut.uca.fr/sonar depends_on: [ publish-jest-reports ] \ No newline at end of file From 5847b9e091a726ac50bfb09ab0dc9f320b9a7508 Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 11:44:03 +0100 Subject: [PATCH 31/38] working on test and sonar --- .drone.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 2105983..e520f50 100644 --- a/.drone.yml +++ b/.drone.yml @@ -94,7 +94,8 @@ steps: SONAR_TOKEN: from_secret: SONAR_TOKEN settings: - sources: ./API-Project + sources: ./API-Project/src + tests: ./API-Project/tests commands: - export SONAR_SCANNER_VERSION=4.7.0.2747 - export SONAR_SCANNER_HOME=$HOME/.sonar/sonar-scanner-$SONAR_SCANNER_VERSION-linux From bb9ac057ae29f87c1539ba321f45de75bfd4b265 Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 11:48:40 +0100 Subject: [PATCH 32/38] working on test and sonar --- .drone.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.drone.yml b/.drone.yml index e520f50..7754c7c 100644 --- a/.drone.yml +++ b/.drone.yml @@ -96,6 +96,8 @@ steps: settings: sources: ./API-Project/src tests: ./API-Project/tests + sonar.testExecutionReportPaths: ./API-Project/coverage/sonar-report.xml + javascript.lcov.reportPaths: ./API-Project/coverage/lcov.info commands: - export SONAR_SCANNER_VERSION=4.7.0.2747 - export SONAR_SCANNER_HOME=$HOME/.sonar/sonar-scanner-$SONAR_SCANNER_VERSION-linux From ff12235c6224516225f70aa7b781e7d3e2c42af2 Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Thu, 30 Nov 2023 11:59:06 +0100 Subject: [PATCH 33/38] working on test and sonar --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 7754c7c..ec9dadf 100644 --- a/.drone.yml +++ b/.drone.yml @@ -105,5 +105,5 @@ steps: - unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ - export PATH=$SONAR_SCANNER_HOME/bin:$PATH - export SONAR_SCANNER_OPTS="-server" - - sonar-scanner -D sonar.projectKey=LeftOvers_Api -D sonar.host.url=https://codefirst.iut.uca.fr/sonar + - sonar-scanner -X -D sonar.projectKey=LeftOvers_Api -D sonar.host.url=https://codefirst.iut.uca.fr/sonar depends_on: [ publish-jest-reports ] \ No newline at end of file From 8c399384c3332cf0d977b67b842cfc503b1c3289 Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Fri, 1 Dec 2023 08:28:25 +0100 Subject: [PATCH 34/38] feat: add route multiples ingredients to find a recipe --- .../src/controllers/recipes.controller.ts | 26 ++++++++++++++++ API-Project/src/gateways/recipe.gateway.ts | 30 +++++++++++++++++++ 2 files changed, 56 insertions(+) diff --git a/API-Project/src/controllers/recipes.controller.ts b/API-Project/src/controllers/recipes.controller.ts index 74639a8..a716874 100644 --- a/API-Project/src/controllers/recipes.controller.ts +++ b/API-Project/src/controllers/recipes.controller.ts @@ -40,4 +40,30 @@ RecipesController.get('/:id', async (req, res) => { } }) +RecipesController.get('/withingr/:ids', async (req, res) => { + let ids: number[] = []; + let raw_ids = String(req.params.ids).split(':') + for (let key in raw_ids) { + const test = Number(raw_ids[key]) + if (Number.isNaN(test) || !Number.isInteger(test)) { + res.status(400).json('A parameter is not an integer') + } + ids.push(Number(test)) + } + + try { + const recipes = await recipes_gw.getIdsRecipesThatContainsIngredients(ids) + + if (recipes.length == 0) { + res.status(404).json('no data found') + } + else { + res.status(200).json(recipes) + } + } catch (error) { + const error_error = error as Error + res.status(500).send(error_error.message) + } +}) + export { RecipesController } \ No newline at end of file diff --git a/API-Project/src/gateways/recipe.gateway.ts b/API-Project/src/gateways/recipe.gateway.ts index c245ea0..a087d84 100644 --- a/API-Project/src/gateways/recipe.gateway.ts +++ b/API-Project/src/gateways/recipe.gateway.ts @@ -58,4 +58,34 @@ export class RecipeGateway { return recipe; } + + async getIdsRecipesThatContainsIngredients(ids: number[]) : Promise { + let recipes: Recipe[] = [] + + const client = await this.connection.getPoolClient() + + let query_list_text = '($1' + for (let count = 1; count < ids.length; count++) { + query_list_text = query_list_text + ', $' + String(count+1) + } + query_list_text = query_list_text + ')' + + const query = { + text: 'SELECT idRecipe FROM Composed GROUP BY idRecipe HAVING COUNT(DISTINCT idIngredient) = COUNT(DISTINCT CASE WHEN idIngredient IN ' + query_list_text + ' THEN idIngredient END)', + values: ids + } + + const res = await client.query(query) + + client.release() + + for(var key in res.rows) { + const recipe = await this.getById(Number(res.rows[key].idrecipe)) + if (recipe != null) { + recipes.push(recipe) + } + } + + return recipes + } } \ No newline at end of file From 3254de4433d3a448b0a3ff99161804216cd4e527 Mon Sep 17 00:00:00 2001 From: Remi REGNAULT Date: Fri, 1 Dec 2023 08:49:53 +0100 Subject: [PATCH 35/38] fix: working on code smells --- API-Project/src/gateways/recipe.gateway.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/API-Project/src/gateways/recipe.gateway.ts b/API-Project/src/gateways/recipe.gateway.ts index a087d84..779f22f 100644 --- a/API-Project/src/gateways/recipe.gateway.ts +++ b/API-Project/src/gateways/recipe.gateway.ts @@ -79,7 +79,7 @@ export class RecipeGateway { client.release() - for(var key in res.rows) { + for(let key in res.rows) { const recipe = await this.getById(Number(res.rows[key].idrecipe)) if (recipe != null) { recipes.push(recipe) From f20a74266797c69a94bd78f0e2374803b1135615 Mon Sep 17 00:00:00 2001 From: Rayhan Hassou Date: Wed, 6 Dec 2023 10:09:09 +0100 Subject: [PATCH 36/38] modify filter route --- API-Project/src/gateways/ingredients.gateway.ts | 4 ++-- API-Project/src/gateways/recipe.gateway.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/API-Project/src/gateways/ingredients.gateway.ts b/API-Project/src/gateways/ingredients.gateway.ts index 76c6ba6..cd476cf 100644 --- a/API-Project/src/gateways/ingredients.gateway.ts +++ b/API-Project/src/gateways/ingredients.gateway.ts @@ -74,7 +74,7 @@ export class IngredientsGateway { const client = await this.connection.getPoolClient() const query = { - text: 'SELECT * FROM Ingredients i WHERE LOWER(SUBSTRING(i.name, 1, 1)) = $1', + text: 'SELECT * FROM Ingredients i WHERE LOWER(SUBSTRING(i.name, 1, 1)) = $1 ORDER BY i.name', values: [letter.toLowerCase()], }; @@ -100,7 +100,7 @@ export class IngredientsGateway { const client = await this.connection.getPoolClient() const query = { - text: 'SELECT * FROM Ingredients WHERE LOWER(name) LIKE $1', + text: 'SELECT * FROM Ingredients WHERE LOWER(name) LIKE $1 ORDER BY name', values: [`%${prompt.toLowerCase()}%`], }; diff --git a/API-Project/src/gateways/recipe.gateway.ts b/API-Project/src/gateways/recipe.gateway.ts index 779f22f..68e7a08 100644 --- a/API-Project/src/gateways/recipe.gateway.ts +++ b/API-Project/src/gateways/recipe.gateway.ts @@ -29,7 +29,7 @@ export class RecipeGateway { recipes.push(recipe); } - return recipes + return recipes as Recipe[]; } async getById(id: number) : Promise{ @@ -86,6 +86,6 @@ export class RecipeGateway { } } - return recipes + return recipes as Recipe[]; } } \ No newline at end of file From ab59eef2d5ef3effc9be3f1e5f987a40d22b33c9 Mon Sep 17 00:00:00 2001 From: Rayhan Hassou Date: Wed, 6 Dec 2023 10:14:18 +0100 Subject: [PATCH 37/38] upgrade filter function --- API-Project/src/gateways/ingredients.gateway.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/API-Project/src/gateways/ingredients.gateway.ts b/API-Project/src/gateways/ingredients.gateway.ts index cd476cf..caaa347 100644 --- a/API-Project/src/gateways/ingredients.gateway.ts +++ b/API-Project/src/gateways/ingredients.gateway.ts @@ -100,9 +100,16 @@ export class IngredientsGateway { const client = await this.connection.getPoolClient() const query = { - text: 'SELECT * FROM Ingredients WHERE LOWER(name) LIKE $1 ORDER BY name', - values: [`%${prompt.toLowerCase()}%`], + text: ` + CREATE EXTENSION IF NOT EXISTS pg_trgm; -- Vérifie si l'extension est déjà installée, sinon l'installe + SELECT * + FROM Ingredients + WHERE LOWER(name) LIKE $1 + ORDER BY similarity(name, $2) DESC, name ASC; + `, + values: [`%${prompt.toLowerCase()}%`, prompt.toLowerCase()], }; + const res = await client.query(query); From c1caef080b86437da5085667b76acbba854afcdf Mon Sep 17 00:00:00 2001 From: Rayhan Hassou Date: Wed, 6 Dec 2023 10:19:25 +0100 Subject: [PATCH 38/38] change --- API-Project/src/gateways/ingredients.gateway.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/API-Project/src/gateways/ingredients.gateway.ts b/API-Project/src/gateways/ingredients.gateway.ts index caaa347..31f9f77 100644 --- a/API-Project/src/gateways/ingredients.gateway.ts +++ b/API-Project/src/gateways/ingredients.gateway.ts @@ -101,7 +101,7 @@ export class IngredientsGateway { const query = { text: ` - CREATE EXTENSION IF NOT EXISTS pg_trgm; -- Vérifie si l'extension est déjà installée, sinon l'installe + CREATE EXTENSION IF NOT EXISTS pg_trgm; SELECT * FROM Ingredients WHERE LOWER(name) LIKE $1