From 111d3935d113f2a50a4188ce4375e7706ceba08c Mon Sep 17 00:00:00 2001 From: Miguel de Barros Date: Thu, 2 Mar 2023 15:38:50 +0200 Subject: [PATCH] fix(mojaloop/#3152): initial open settlementWindow is failing on clean install (#946) fix(mojaloop/#3152): initial open settlementWindow is failing on clean install - https://github.com/mojaloop/project/issues/3152 - updated seeds/settlementWindow2Open.js to - handle an array being returned from the knex.insert operation - to throw unexpected errors to force the migration scripts to hard fail, so we don't have a soft failure in future that requires deep "investigation" to find something that should be easily noticed - fixed unit tests, improved descriptions and code-coverage This issue was introduced in [Knex v2.4.0](https://github.com/knex/knex/releases/tag/2.4.0) with the following change: - MySQL: Add assertion for basic where clause not to be object or array - [knex/issues/#1227](https://github.com/knex/knex/issues/1227) - https://github.com/knex/knex/issues/1227 chore: updated dependencies and fixed unit tests - updated dependencies - ~fixed api changes on Glob dependency~ (reverted due to a license issue with v9.x) - Glob dependency added to upgrade exception list due to v9.x introducing a dependency Package "path-scurry@1.6.1" licensed under "BlueOak-1.0.0" which is not permitted by the Mojaloop License Policy --- .ncurc.yaml | 4 +- package-lock.json | 304 ++++++++++-------- package.json | 8 +- seeds/settlementWindow2Open.js | 16 +- test/unit/seeds/settlementWindow2Open.test.js | 60 +++- 5 files changed, 244 insertions(+), 148 deletions(-) diff --git a/.ncurc.yaml b/.ncurc.yaml index 6f4aa8bc8..cb0bf9680 100644 --- a/.ncurc.yaml +++ b/.ncurc.yaml @@ -5,5 +5,7 @@ reject: [ # TODO: New versions from 2.2.0 onwards introduce a newer incompatible version of the ILP-Packet that is not compatible with the Mojaloop Specification "ilp-packet", # TODO: v6+ (ref: https://github.com/sindresorhus/get-port/releases/tag/v6.0.0) is an ESM library and thus not compatible with CommonJS. Future story needed to resolve. - "get-port" + "get-port", + # TODO: Glob v9.x introducing a dependency Package "path-scurry@1.6.1" which is licensed under "BlueOak-1.0.0" which is not permitted by the Mojaloop License Policy + "glob" ] diff --git a/package-lock.json b/package-lock.json index 2aa88f5af..aed3d7764 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@mojaloop/central-ledger", - "version": "17.0.0", + "version": "17.0.1-snapshot.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mojaloop/central-ledger", - "version": "17.0.0", + "version": "17.0.1-snapshot.2", "license": "Apache-2.0", "dependencies": { "@hapi/good": "9.0.1", @@ -19,7 +19,7 @@ "@mojaloop/central-services-health": "14.0.1", "@mojaloop/central-services-logger": "11.2.0", "@mojaloop/central-services-metrics": "12.0.5", - "@mojaloop/central-services-shared": "17.5.0", + "@mojaloop/central-services-shared": "17.5.1", "@mojaloop/central-services-stream": "11.0.0", "@mojaloop/event-sdk": "11.0.2", "@mojaloop/ml-number": "11.2.1", @@ -39,7 +39,7 @@ "glob": "8.1.0", "hapi-auth-basic": "5.0.0", "hapi-auth-bearer-token": "8.0.0", - "hapi-swagger": "16.0.0", + "hapi-swagger": "16.0.1", "ilp-packet": "2.2.0", "knex": "2.4.2", "lodash": "4.17.21", @@ -56,7 +56,7 @@ "jsdoc": "4.0.2", "jsonpath": "1.1.1", "nodemon": "2.0.20", - "npm-check-updates": "16.7.9", + "npm-check-updates": "16.7.10", "nyc": "15.1.0", "pre-commit": "1.2.2", "proxyquire": "2.1.3", @@ -2037,22 +2037,22 @@ } }, "node_modules/@mojaloop/central-services-shared": { - "version": "17.5.0", - "resolved": "https://registry.npmjs.org/@mojaloop/central-services-shared/-/central-services-shared-17.5.0.tgz", - "integrity": "sha512-CryFlPzpbfRNU2qHnMhuOE+k5idYENDLOfCfToq4dQ2Idm0paJ6H/cC0TVOprVJFL5uH5G2NtSkQbEYLW8dpow==", + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/@mojaloop/central-services-shared/-/central-services-shared-17.5.1.tgz", + "integrity": "sha512-yn1B8XGHSIUljJSxe+s7WcOKe62vgvmlJRpriVcFhg2TErXypUV5GJ/3QeKx/uPbGqucawqlqt5EaPRiklZqCQ==", "dependencies": { "@hapi/catbox": "12.0.0", "@hapi/catbox-memory": "5.0.1", - "axios": "1.2.2", + "axios": "1.3.4", "clone": "2.1.2", "dotenv": "16.0.3", "env-var": "7.3.0", "event-stream": "4.0.1", - "immutable": "4.2.2", + "immutable": "4.2.4", "lodash": "4.17.21", "mustache": "4.2.0", "openapi-backend": "5.6.2", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "rc": "1.2.8", "shins": "2.6.0", "uuid4": "2.0.3", @@ -2119,6 +2119,31 @@ "@hapi/topo": "^6.0.0" } }, + "node_modules/@mojaloop/central-services-shared/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@mojaloop/central-services-shared/node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/@mojaloop/central-services-stream": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/@mojaloop/central-services-stream/-/central-services-stream-11.0.0.tgz", @@ -2343,9 +2368,9 @@ } }, "node_modules/@npmcli/installed-package-contents": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.1.tgz", - "integrity": "sha512-GIykAFdOVK31Q1/zAtT5MbxqQL2vyl9mvFJv+OGu01zxbhL3p0xc8gJjdNGX1mWmUT43aEKVO2L6V/2j4TOsAA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz", + "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==", "dev": true, "dependencies": { "npm-bundled": "^3.0.0", @@ -3152,9 +3177,9 @@ } }, "node_modules/axios": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.2.tgz", - "integrity": "sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz", + "integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==", "dependencies": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -3621,9 +3646,9 @@ } }, "node_modules/cacache/node_modules/minipass": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.3.tgz", - "integrity": "sha512-OW2r4sQ0sI+z5ckEt5c1Tri4xTgZwYDxpE54eqWlQloQRoWtXjqt9udJ5Z4dSv7wK+nfFI7FRXyCpBSft+gpFw==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", + "integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", "dev": true, "engines": { "node": ">=8" @@ -7224,6 +7249,17 @@ "node": ">= 6" } }, + "node_modules/glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/global-dirs": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", @@ -7574,9 +7610,9 @@ "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" }, "node_modules/hapi-swagger": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/hapi-swagger/-/hapi-swagger-16.0.0.tgz", - "integrity": "sha512-GRZgojvk3cQS6XyCIwE7YtujNr+kTw9py07/VKcFiTF/CVyf3neHZP2ra6ThZCH1wVjP3hp6zBD9g3QbDpG7Ww==", + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/hapi-swagger/-/hapi-swagger-16.0.1.tgz", + "integrity": "sha512-G07CZ7t6ytZt7Om0sTvpwxvuoLb260dlBdHjxwilsX7WboBAItdm4xXTkfJoe/KpjXatyqVVT5uVckBrhvFY6g==", "dependencies": { "@hapi/boom": "^10.0.0", "@hapi/hoek": "^10.0.1", @@ -8349,9 +8385,9 @@ } }, "node_modules/immutable": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.2.tgz", - "integrity": "sha512-fTMKDwtbvO5tldky9QZ2fMX7slR0mYpY5nbnFWYp0fOzDhHqhgIw9KoYgxLWsoNTS9ZHGauHj18DTyEw6BK3Og==" + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.4.tgz", + "integrity": "sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w==" }, "node_modules/import-fresh": { "version": "3.3.0", @@ -10288,14 +10324,18 @@ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" }, "node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.2.tgz", + "integrity": "sha512-xy4q7wou3vUoC9k1xGTXc+awNdGaGVHtFUaey8tiX4H1QRc04DZ/rmDFwNm2EBsuYEhAZ6SgMmYf3InGY6OauA==", + "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minimist": { @@ -10841,9 +10881,9 @@ } }, "node_modules/node-gyp/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", + "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", "dev": true, "dependencies": { "inherits": "^2.0.3", @@ -11056,9 +11096,9 @@ } }, "node_modules/npm-check-updates": { - "version": "16.7.9", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.7.9.tgz", - "integrity": "sha512-2/T9PB0W1uABB1N11jdnPauqNLXMhPUyC0DBeeGlUktcGl/412f40iqFsnNGCqIAag/C37SjLNiW2/yuD7Salw==", + "version": "16.7.10", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.7.10.tgz", + "integrity": "sha512-sLDgYD8ebkH9Jd6mPIq7UDGLr3DAxkHl6ZuJrEF4rauLv6DqHBxtnF16MHUPN+/eBt5QbH4GL/+nxfSAFm3TfQ==", "dev": true, "dependencies": { "chalk": "^5.2.0", @@ -11074,9 +11114,9 @@ "json-parse-helpfulerror": "^1.0.3", "jsonlines": "^0.1.1", "lodash": "^4.17.21", - "minimatch": "^6.2.0", + "minimatch": "^7.0.1", "p-map": "^4.0.0", - "pacote": "15.1.0", + "pacote": "15.1.1", "parse-github-url": "^1.0.2", "progress": "^2.0.3", "prompts-ncu": "^2.5.1", @@ -11121,21 +11161,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/npm-check-updates/node_modules/minimatch": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", - "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/npm-check-updates/node_modules/rimraf": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.1.2.tgz", @@ -11283,9 +11308,9 @@ } }, "node_modules/npm-registry-fetch/node_modules/minipass": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.3.tgz", - "integrity": "sha512-OW2r4sQ0sI+z5ckEt5c1Tri4xTgZwYDxpE54eqWlQloQRoWtXjqt9udJ5Z4dSv7wK+nfFI7FRXyCpBSft+gpFw==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", + "integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", "dev": true, "engines": { "node": ">=8" @@ -12176,9 +12201,9 @@ } }, "node_modules/pacote": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.1.0.tgz", - "integrity": "sha512-FFcjtIl+BQNfeliSm7MZz5cpdohvUV1yjGnqgVM4UnVF7JslRY0ImXAygdaCDV0jjUADEWu4y5xsDV8brtrTLg==", + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.1.1.tgz", + "integrity": "sha512-eeqEe77QrA6auZxNHIp+1TzHQ0HBKf5V6c8zcaYZ134EJe1lCi+fjXATkNiEEfbG+e50nu02GLvUtmZcGOYabQ==", "dev": true, "dependencies": { "@npmcli/git": "^4.0.0", @@ -12220,9 +12245,9 @@ } }, "node_modules/pacote/node_modules/minipass": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.3.tgz", - "integrity": "sha512-OW2r4sQ0sI+z5ckEt5c1Tri4xTgZwYDxpE54eqWlQloQRoWtXjqt9udJ5Z4dSv7wK+nfFI7FRXyCpBSft+gpFw==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", + "integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", "dev": true, "engines": { "node": ">=8" @@ -14447,9 +14472,9 @@ } }, "node_modules/sigstore/node_modules/minipass": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.3.tgz", - "integrity": "sha512-OW2r4sQ0sI+z5ckEt5c1Tri4xTgZwYDxpE54eqWlQloQRoWtXjqt9udJ5Z4dSv7wK+nfFI7FRXyCpBSft+gpFw==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", + "integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", "dev": true, "engines": { "node": ">=8" @@ -14733,9 +14758,9 @@ } }, "node_modules/ssri/node_modules/minipass": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.3.tgz", - "integrity": "sha512-OW2r4sQ0sI+z5ckEt5c1Tri4xTgZwYDxpE54eqWlQloQRoWtXjqt9udJ5Z4dSv7wK+nfFI7FRXyCpBSft+gpFw==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", + "integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", "dev": true, "engines": { "node": ">=8" @@ -16139,9 +16164,9 @@ } }, "node_modules/tuf-js/node_modules/minipass": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.3.tgz", - "integrity": "sha512-OW2r4sQ0sI+z5ckEt5c1Tri4xTgZwYDxpE54eqWlQloQRoWtXjqt9udJ5Z4dSv7wK+nfFI7FRXyCpBSft+gpFw==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", + "integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", "dev": true, "engines": { "node": ">=8" @@ -18986,22 +19011,22 @@ } }, "@mojaloop/central-services-shared": { - "version": "17.5.0", - "resolved": "https://registry.npmjs.org/@mojaloop/central-services-shared/-/central-services-shared-17.5.0.tgz", - "integrity": "sha512-CryFlPzpbfRNU2qHnMhuOE+k5idYENDLOfCfToq4dQ2Idm0paJ6H/cC0TVOprVJFL5uH5G2NtSkQbEYLW8dpow==", + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/@mojaloop/central-services-shared/-/central-services-shared-17.5.1.tgz", + "integrity": "sha512-yn1B8XGHSIUljJSxe+s7WcOKe62vgvmlJRpriVcFhg2TErXypUV5GJ/3QeKx/uPbGqucawqlqt5EaPRiklZqCQ==", "requires": { "@hapi/catbox": "12.0.0", "@hapi/catbox-memory": "5.0.1", - "axios": "1.2.2", + "axios": "1.3.4", "clone": "2.1.2", "dotenv": "16.0.3", "env-var": "7.3.0", "event-stream": "4.0.1", - "immutable": "4.2.2", + "immutable": "4.2.4", "lodash": "4.17.21", "mustache": "4.2.0", "openapi-backend": "5.6.2", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "rc": "1.2.8", "shins": "2.6.0", "uuid4": "2.0.3", @@ -19036,6 +19061,25 @@ "@hapi/hoek": "^10.0.0", "@hapi/topo": "^6.0.0" } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } } } }, @@ -19205,9 +19249,9 @@ } }, "@npmcli/installed-package-contents": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.1.tgz", - "integrity": "sha512-GIykAFdOVK31Q1/zAtT5MbxqQL2vyl9mvFJv+OGu01zxbhL3p0xc8gJjdNGX1mWmUT43aEKVO2L6V/2j4TOsAA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz", + "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==", "dev": true, "requires": { "npm-bundled": "^3.0.0", @@ -19881,9 +19925,9 @@ } }, "axios": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.2.tgz", - "integrity": "sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz", + "integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==", "requires": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -20225,9 +20269,9 @@ } }, "minipass": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.3.tgz", - "integrity": "sha512-OW2r4sQ0sI+z5ckEt5c1Tri4xTgZwYDxpE54eqWlQloQRoWtXjqt9udJ5Z4dSv7wK+nfFI7FRXyCpBSft+gpFw==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", + "integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", "dev": true } } @@ -22941,6 +22985,16 @@ "inherits": "2", "minimatch": "^5.0.1", "once": "^1.3.0" + }, + "dependencies": { + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "requires": { + "brace-expansion": "^2.0.1" + } + } } }, "glob-parent": { @@ -23378,9 +23432,9 @@ } }, "hapi-swagger": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/hapi-swagger/-/hapi-swagger-16.0.0.tgz", - "integrity": "sha512-GRZgojvk3cQS6XyCIwE7YtujNr+kTw9py07/VKcFiTF/CVyf3neHZP2ra6ThZCH1wVjP3hp6zBD9g3QbDpG7Ww==", + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/hapi-swagger/-/hapi-swagger-16.0.1.tgz", + "integrity": "sha512-G07CZ7t6ytZt7Om0sTvpwxvuoLb260dlBdHjxwilsX7WboBAItdm4xXTkfJoe/KpjXatyqVVT5uVckBrhvFY6g==", "requires": { "@hapi/boom": "^10.0.0", "@hapi/hoek": "^10.0.1", @@ -23828,9 +23882,9 @@ } }, "immutable": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.2.tgz", - "integrity": "sha512-fTMKDwtbvO5tldky9QZ2fMX7slR0mYpY5nbnFWYp0fOzDhHqhgIw9KoYgxLWsoNTS9ZHGauHj18DTyEw6BK3Og==" + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.4.tgz", + "integrity": "sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w==" }, "import-fresh": { "version": "3.3.0", @@ -25303,9 +25357,10 @@ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" }, "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.2.tgz", + "integrity": "sha512-xy4q7wou3vUoC9k1xGTXc+awNdGaGVHtFUaey8tiX4H1QRc04DZ/rmDFwNm2EBsuYEhAZ6SgMmYf3InGY6OauA==", + "dev": true, "requires": { "brace-expansion": "^2.0.1" } @@ -25742,9 +25797,9 @@ } }, "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", + "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -25907,9 +25962,9 @@ } }, "npm-check-updates": { - "version": "16.7.9", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.7.9.tgz", - "integrity": "sha512-2/T9PB0W1uABB1N11jdnPauqNLXMhPUyC0DBeeGlUktcGl/412f40iqFsnNGCqIAag/C37SjLNiW2/yuD7Salw==", + "version": "16.7.10", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.7.10.tgz", + "integrity": "sha512-sLDgYD8ebkH9Jd6mPIq7UDGLr3DAxkHl6ZuJrEF4rauLv6DqHBxtnF16MHUPN+/eBt5QbH4GL/+nxfSAFm3TfQ==", "dev": true, "requires": { "chalk": "^5.2.0", @@ -25925,9 +25980,9 @@ "json-parse-helpfulerror": "^1.0.3", "jsonlines": "^0.1.1", "lodash": "^4.17.21", - "minimatch": "^6.2.0", + "minimatch": "^7.0.1", "p-map": "^4.0.0", - "pacote": "15.1.0", + "pacote": "15.1.1", "parse-github-url": "^1.0.2", "progress": "^2.0.3", "prompts-ncu": "^2.5.1", @@ -25956,15 +26011,6 @@ "integrity": "sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==", "dev": true }, - "minimatch": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", - "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, "rimraf": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.1.2.tgz", @@ -26077,9 +26123,9 @@ } }, "minipass": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.3.tgz", - "integrity": "sha512-OW2r4sQ0sI+z5ckEt5c1Tri4xTgZwYDxpE54eqWlQloQRoWtXjqt9udJ5Z4dSv7wK+nfFI7FRXyCpBSft+gpFw==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", + "integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", "dev": true }, "minipass-fetch": { @@ -26767,9 +26813,9 @@ } }, "pacote": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.1.0.tgz", - "integrity": "sha512-FFcjtIl+BQNfeliSm7MZz5cpdohvUV1yjGnqgVM4UnVF7JslRY0ImXAygdaCDV0jjUADEWu4y5xsDV8brtrTLg==", + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.1.1.tgz", + "integrity": "sha512-eeqEe77QrA6auZxNHIp+1TzHQ0HBKf5V6c8zcaYZ134EJe1lCi+fjXATkNiEEfbG+e50nu02GLvUtmZcGOYabQ==", "dev": true, "requires": { "@npmcli/git": "^4.0.0", @@ -26802,9 +26848,9 @@ } }, "minipass": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.3.tgz", - "integrity": "sha512-OW2r4sQ0sI+z5ckEt5c1Tri4xTgZwYDxpE54eqWlQloQRoWtXjqt9udJ5Z4dSv7wK+nfFI7FRXyCpBSft+gpFw==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", + "integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", "dev": true } } @@ -28528,9 +28574,9 @@ } }, "minipass": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.3.tgz", - "integrity": "sha512-OW2r4sQ0sI+z5ckEt5c1Tri4xTgZwYDxpE54eqWlQloQRoWtXjqt9udJ5Z4dSv7wK+nfFI7FRXyCpBSft+gpFw==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", + "integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", "dev": true }, "minipass-fetch": { @@ -28768,9 +28814,9 @@ }, "dependencies": { "minipass": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.3.tgz", - "integrity": "sha512-OW2r4sQ0sI+z5ckEt5c1Tri4xTgZwYDxpE54eqWlQloQRoWtXjqt9udJ5Z4dSv7wK+nfFI7FRXyCpBSft+gpFw==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", + "integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", "dev": true } } @@ -29875,9 +29921,9 @@ } }, "minipass": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.3.tgz", - "integrity": "sha512-OW2r4sQ0sI+z5ckEt5c1Tri4xTgZwYDxpE54eqWlQloQRoWtXjqt9udJ5Z4dSv7wK+nfFI7FRXyCpBSft+gpFw==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", + "integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", "dev": true }, "minipass-fetch": { diff --git a/package.json b/package.json index fde14231b..dd3893a47 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mojaloop/central-ledger", - "version": "17.0.0", + "version": "17.0.1-snapshot.2", "description": "Central ledger hosted by a scheme to record and settle transfers", "license": "Apache-2.0", "author": "ModusBox", @@ -87,7 +87,7 @@ "@mojaloop/central-services-health": "14.0.1", "@mojaloop/central-services-logger": "11.2.0", "@mojaloop/central-services-metrics": "12.0.5", - "@mojaloop/central-services-shared": "17.5.0", + "@mojaloop/central-services-shared": "17.5.1", "@mojaloop/central-services-stream": "11.0.0", "@mojaloop/event-sdk": "11.0.2", "@mojaloop/ml-number": "11.2.1", @@ -107,7 +107,7 @@ "glob": "8.1.0", "hapi-auth-basic": "5.0.0", "hapi-auth-bearer-token": "8.0.0", - "hapi-swagger": "16.0.0", + "hapi-swagger": "16.0.1", "ilp-packet": "2.2.0", "knex": "2.4.2", "lodash": "4.17.21", @@ -127,7 +127,7 @@ "jsdoc": "4.0.2", "jsonpath": "1.1.1", "nodemon": "2.0.20", - "npm-check-updates": "16.7.9", + "npm-check-updates": "16.7.10", "nyc": "15.1.0", "pre-commit": "1.2.2", "proxyquire": "2.1.3", diff --git a/seeds/settlementWindow2Open.js b/seeds/settlementWindow2Open.js index f0a08c61f..0eb4ad33f 100644 --- a/seeds/settlementWindow2Open.js +++ b/seeds/settlementWindow2Open.js @@ -48,9 +48,19 @@ exports.seed = async function (knex) { .leftJoin('settlementWindowStateChange AS swsc', 'swsc.settlementWindowStateChangeId', 'sw.currentStateChangeId') .where('swsc.settlementWindowStateId', '=', settlementWindowState) if (settlementWindowStateChangeList.length < 1) { - const settlementWindowId = await knex('settlementWindow').insert(initialSettlementWindow) + const insertInitialSettlementWindowResult = await knex('settlementWindow').insert(initialSettlementWindow) + if (!insertInitialSettlementWindowResult || (insertInitialSettlementWindowResult?.length !== 1)) { + throw Error('insertInitialSettlementWindowResult undefined') + } + const settlementWindowId = insertInitialSettlementWindowResult[0] + initialSettlementWindowStateChange.settlementWindowId = settlementWindowId - const settlementWindowStateChangeId = await knex('settlementWindowStateChange').insert(initialSettlementWindowStateChange) + const insertInitialSettlementWindowStateChangeResult = await knex('settlementWindowStateChange').insert(initialSettlementWindowStateChange) + if (!insertInitialSettlementWindowStateChangeResult || (insertInitialSettlementWindowStateChangeResult?.length !== 1)) { + throw Error('insertInitialSettlementWindowStateChangeResult undefined') + } + const settlementWindowStateChangeId = insertInitialSettlementWindowStateChangeResult[0] + await knex('settlementWindow') .where('settlementWindowId', '=', settlementWindowId) .update({ @@ -62,7 +72,7 @@ exports.seed = async function (knex) { if (err.code === 'ER_DUP_ENTRY') return -1001 else { console.log(`Uploading seeds for initial settlementWindow has failed with the following error: ${err}`) - return -1000 + throw err } } } diff --git a/test/unit/seeds/settlementWindow2Open.test.js b/test/unit/seeds/settlementWindow2Open.test.js index b5708adcf..137f012a5 100644 --- a/test/unit/seeds/settlementWindow2Open.test.js +++ b/test/unit/seeds/settlementWindow2Open.test.js @@ -29,7 +29,7 @@ const Sinon = require('sinon') const Logger = require('@mojaloop/central-services-logger') const Model = require('../../../seeds/settlementWindow2Open') -Test('Settlement Window2 Open', async (settlementWindow2OpenTest) => { +Test('Settlement Window2 Open seed should', async (settlementWindow2OpenTest) => { let sandbox settlementWindow2OpenTest.beforeEach(t => { @@ -42,10 +42,10 @@ Test('Settlement Window2 Open', async (settlementWindow2OpenTest) => { t.end() }) - await settlementWindow2OpenTest.test('seed should', async (test) => { + await settlementWindow2OpenTest.test('create an "OPEN" settlementWindow', async (test) => { const knexStub = sandbox.stub() knexStub.returns({ - insert: sandbox.stub().returns(true), + insert: sandbox.stub().returns([1]), // we return a single row id on a successful insert select: sandbox.stub().returns({ leftJoin: sandbox.stub().returns({ where: sandbox.stub().returns([]) @@ -68,10 +68,10 @@ Test('Settlement Window2 Open', async (settlementWindow2OpenTest) => { } }) - await settlementWindow2OpenTest.test('seed should', async (test) => { + await settlementWindow2OpenTest.test('skip creating a new settlementWindow as an "OPEN" settlementWindow already exists', async (test) => { const knexStub = sandbox.stub() knexStub.returns({ - insert: sandbox.stub().returns(true), + insert: sandbox.stub().returns([1]), // we return a single row id on a successful insert select: sandbox.stub().returns({ leftJoin: sandbox.stub().returns({ where: sandbox.stub().returns([1]) @@ -94,7 +94,7 @@ Test('Settlement Window2 Open', async (settlementWindow2OpenTest) => { } }) - await settlementWindow2OpenTest.test('seed should', async (test) => { + await settlementWindow2OpenTest.test('handle a DuplicateEntryError when creating a settlementWindow', async (test) => { function DuplicateEntryError (message) { this.name = 'DuplicateEntryError' this.message = message || '' @@ -115,18 +115,56 @@ Test('Settlement Window2 Open', async (settlementWindow2OpenTest) => { } }) - await settlementWindow2OpenTest.test('seed should', async (test) => { + await settlementWindow2OpenTest.test('fail completely if an unknown error is thrown', async (test) => { const knexStub = sandbox.stub() + + const errorMessage = 'test error' + knexStub.returns({ - insert: sandbox.stub().throws(new Error()) + insert: sandbox.stub().throws(new Error(errorMessage)), // we return a single row id on a successful insert + select: sandbox.stub().returns({ + leftJoin: sandbox.stub().returns({ + where: sandbox.stub().returns([]) + }) + }), + where: sandbox.stub().returns({ + update: sandbox.stub() + }) }) + try { - const result = await Model.seed(knexStub) - test.equal(result, -1000, 'Generic error intercepted and logged') + await Model.seed(knexStub) + test.fail('an error should have been thrown') + } catch (err) { + Logger.error(`settlementWindow2Open seed failed with error - ${err}`) + test.equal(err.message, errorMessage, 'Test error intercepted, logged and re-thrown') + test.pass() test.end() + } + }) + + await settlementWindow2OpenTest.test('fail completely if no result is returned on the first insert', async (test) => { + const knexStub = sandbox.stub() + + knexStub.returns({ + insert: sandbox.stub().returns([]), // we return a single row id on a successful insert + select: sandbox.stub().returns({ + leftJoin: sandbox.stub().returns({ + where: sandbox.stub().returns([]) + }) + }), + where: sandbox.stub().returns({ + update: sandbox.stub() + }) + }) + + try { + await Model.seed(knexStub) + test.fail('an error should have been thrown') } catch (err) { Logger.error(`settlementWindow2Open seed failed with error - ${err}`) - test.fail() + test.equal(err.message, 'insertInitialSettlementWindowResult undefined', 'Test error intercepted, logged and re-thrown') + test.pass() test.end() } })