diff --git a/README.md b/README.md index 940d1858..08fa4005 100644 --- a/README.md +++ b/README.md @@ -57,8 +57,6 @@ The following parameters can be set in config files or in env variables: ## Testing - Run tools/mock-project-service app -- Run `npm run init-db` -- Run `npm run create-index` - Run `npm run test` to execute unit tests - Run `npm run cov` to execute unit tests and generate coverage report. diff --git a/package-lock.json b/package-lock.json index d5c316ef..0e7b62ea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -564,12 +564,12 @@ "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" }, "@types/serve-static": { - "version": "1.13.5", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.5.tgz", - "integrity": "sha512-6M64P58N+OXjU432WoLLBQxbA0LRGBCRm7aAGQJ+SMC1IMl0dgRVi9EFfoDcS2a7Xogygk/eGN94CfwU9UF7UQ==", + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.6.tgz", + "integrity": "sha512-nuRJmv7jW7VmCVTn+IgYDkkbbDGyIINOeu/G0d74X3lm6E5KfMeQPJhxIt1ayQeQB3cSxvYs1RA/wipYoFB4EA==", "requires": { - "@types/express-serve-static-core": "*", - "@types/mime": "*" + "@types/mime": "*", + "@types/node": "*" } }, "abbrev": { @@ -600,9 +600,9 @@ "dev": true }, "agent-base": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.1.tgz", - "integrity": "sha512-01q25QQDwLSsyfhrKbn8yuur+JNw0H+0Y4JiGIKd3z9aYk/w/2kxD/Upc+t2ZBBSUNff50VjPsSW2YxM8QYKVg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "requires": { "debug": "4" }, @@ -822,65 +822,6 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, - "auth0-js": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/auth0-js/-/auth0-js-9.14.0.tgz", - "integrity": "sha512-40gIBUejmYAYse06ck6sxdNO0KU0pX+KDIQsWAkcyFtI0HU6dY5aeHxZfVYkYjtbArKr5s13LuZFdKrUiGyCqQ==", - "requires": { - "base64-js": "^1.3.0", - "idtoken-verifier": "^2.0.3", - "js-cookie": "^2.2.0", - "qs": "^6.7.0", - "superagent": "^5.3.1", - "url-join": "^4.0.1", - "winchan": "^0.2.2" - }, - "dependencies": { - "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", - "requires": { - "ms": "2.1.2" - } - }, - "mime": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", - "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "superagent": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-5.3.1.tgz", - "integrity": "sha512-wjJ/MoTid2/RuGCOFtlacyGNxN9QLMgcpYLDQlWFIhhdJ93kNscFonGvrpAHSCVjRVj++DGCglocF7Aej1KHvQ==", - "requires": { - "component-emitter": "^1.3.0", - "cookiejar": "^2.1.2", - "debug": "^4.1.1", - "fast-safe-stringify": "^2.0.7", - "form-data": "^3.0.0", - "formidable": "^1.2.2", - "methods": "^1.1.2", - "mime": "^2.4.6", - "qs": "^6.9.4", - "readable-stream": "^3.6.0", - "semver": "^7.3.2" - }, - "dependencies": { - "qs": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz", - "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==" - } - } - } - } - }, "available-typed-arrays": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", @@ -900,11 +841,11 @@ "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==" }, "axios": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.12.0.tgz", - "integrity": "sha1-uQewIhzDTsHJ+sGOx/B935V4W6Q=", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", "requires": { - "follow-redirects": "0.0.7" + "follow-redirects": "1.5.10" } }, "babel-runtime": { @@ -928,11 +869,6 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, - "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" - }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -1463,11 +1399,6 @@ } } }, - "crypto-js": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.3.0.tgz", - "integrity": "sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==" - }, "crypto-random-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", @@ -1651,13 +1582,6 @@ "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" - }, - "dependencies": { - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - } } }, "ecdsa-sig-formatter": { @@ -1769,11 +1693,6 @@ "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", "dev": true }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" - }, "escape-goat": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", @@ -2352,12 +2271,21 @@ "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" }, "follow-redirects": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz", - "integrity": "sha1-NLkLqyqRGqNHVx2pDyK9NuzYqRk=", + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", "requires": { - "debug": "^2.2.0", - "stream-consume": "^0.1.0" + "debug": "=3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } } }, "foreach": { @@ -2764,19 +2692,6 @@ "safer-buffer": ">= 2.1.2 < 3" } }, - "idtoken-verifier": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/idtoken-verifier/-/idtoken-verifier-2.1.0.tgz", - "integrity": "sha512-X0423UM4Rc5bFb39Ai0YHr35rcexlu4oakKdYzSGZxtoPy84P86hhAbzlpgbgomcLOFRgzgKRvhY7YjO5g8OPA==", - "requires": { - "base64-js": "^1.3.0", - "crypto-js": "^3.2.1", - "es6-promise": "^4.2.8", - "jsbn": "^1.1.0", - "unfetch": "^4.1.0", - "url-join": "^4.0.1" - } - }, "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", @@ -3336,11 +3251,6 @@ "@hapi/topo": "^5.0.0" } }, - "js-cookie": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz", - "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==" - }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -3358,9 +3268,9 @@ } }, "jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha1-sBMHyym2GKHtJux56RH4A8TaAEA=" + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, "jsesc": { "version": "2.5.2", @@ -3476,9 +3386,9 @@ } }, "jwks-rsa": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-1.10.1.tgz", - "integrity": "sha512-UmjOsATVu7eQr17wbBCS+BSoz5LFtl57PtNXHbHFeT1WKomHykCHtn7c8inWVI7tpnsy6CZ1KOMJTgipFwXPig==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-1.11.0.tgz", + "integrity": "sha512-G7ZgXZ3dlGbOUBQwgF+U/SVzOlI9KxJ9Uzp61bue2S5TV0h7c+kJRCl3bEPkC5PVmeu7/h82B3uQALVJMjzt/Q==", "requires": { "@types/express-jwt": "0.0.42", "axios": "^0.19.2", @@ -3488,17 +3398,10 @@ "jsonwebtoken": "^8.5.1", "limiter": "^1.1.5", "lru-memoizer": "^2.1.2", - "ms": "^2.1.2" + "ms": "^2.1.2", + "proxy-from-env": "^1.1.0" }, "dependencies": { - "axios": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", - "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", - "requires": { - "follow-redirects": "1.5.10" - } - }, "debug": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", @@ -3507,29 +3410,6 @@ "ms": "2.1.2" } }, - "follow-redirects": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", - "requires": { - "debug": "=3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -3569,31 +3449,6 @@ "package-json": "^6.3.0" } }, - "le_node": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/le_node/-/le_node-1.8.0.tgz", - "integrity": "sha512-NXzjxBskZ4QawTNwlGdRG05jYU0LhV2nxxmP3x7sRMHyROV0jPdyyikO9at+uYrWX3VFt0Y/am11oKITedx0iw==", - "requires": { - "babel-runtime": "6.6.1", - "codependency": "0.1.4", - "json-stringify-safe": "5.0.1", - "lodash": "4.17.11", - "reconnect-core": "1.3.0", - "semver": "5.1.0" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - }, - "semver": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz", - "integrity": "sha1-hfLPhVBGXE3wAM99hvawVBBqueU=" - } - } - }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -4096,9 +3951,9 @@ } }, "nan": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", - "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", "optional": true }, "natural-compare": { @@ -4995,6 +4850,11 @@ "ipaddr.js": "1.9.1" } }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -5039,6 +4899,31 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" }, + "r7insight_node": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/r7insight_node/-/r7insight_node-1.8.4.tgz", + "integrity": "sha512-6cQrzLkaOxdv/SRFXWRJjgFr8a3nXUOT/4IMFuBv+mWzBnu5DJl+HzONAsWYvclrlZnvfa54PaIPqPuPRSlbrQ==", + "requires": { + "babel-runtime": "6.6.1", + "codependency": "0.1.4", + "json-stringify-safe": "5.0.1", + "lodash": "4.17.15", + "reconnect-core": "1.3.0", + "semver": "5.1.0" + }, + "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "semver": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz", + "integrity": "sha1-hfLPhVBGXE3wAM99hvawVBBqueU=" + } + } + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -5632,13 +5517,6 @@ "jsbn": "~0.1.0", "safer-buffer": "^2.0.2", "tweetnacl": "~0.14.0" - }, - "dependencies": { - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - } } }, "stack-trace": { @@ -5680,11 +5558,6 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" }, - "stream-consume": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.1.tgz", - "integrity": "sha512-tNa3hzgkjEP7XbCkbRXe1jpg+ievoa0O4SCFlMOYEscGSS4JJsckGL8swUyAa/ApGU3Ae4t6Honor4HhL+tRyg==" - }, "string-width": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", @@ -5859,17 +5732,16 @@ } }, "tc-core-library-js": { - "version": "github:appirio-tech/tc-core-library-js#6cb5a71b16966222f4b30e96bbee79c73a5fd71e", - "from": "github:appirio-tech/tc-core-library-js#feature/auth0-proxy-server", + "version": "github:appirio-tech/tc-core-library-js#081138e1f5eae76171abeff34b8f326b3fb2b504", + "from": "github:appirio-tech/tc-core-library-js#v2.6.5", "requires": { - "auth0-js": "^9.4.2", - "axios": "^0.12.0", + "axios": "^0.19.0", "bunyan": "^1.8.12", - "jsonwebtoken": "^8.3.0", - "jwks-rsa": "^1.3.0", - "le_node": "^1.3.1", - "lodash": "^4.17.10", + "jsonwebtoken": "^8.5.1", + "jwks-rsa": "^1.6.0", + "lodash": "^4.17.15", "millisecond": "^0.1.2", + "r7insight_node": "^1.8.4", "request": "^2.88.0" } }, @@ -6041,11 +5913,6 @@ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.11.0.tgz", "integrity": "sha512-xY96SsN3NA461qIRKZ/+qox37YXPtSBswMGfiNptr+wrt6ds4HaMw23TP612fEyGekRE6LNRiLYr/aqbHXNedw==" }, - "unfetch": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", - "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==" - }, "uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", @@ -6147,11 +6014,6 @@ "punycode": "^2.1.0" } }, - "url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" - }, "url-parse-lax": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", @@ -6304,11 +6166,6 @@ "string-width": "^4.0.0" } }, - "winchan": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/winchan/-/winchan-0.2.2.tgz", - "integrity": "sha512-pvN+IFAbRP74n/6mc6phNyCH8oVkzXsto4KCHPJ2AScniAnA1AmeLI03I2BzjePpaClGSI4GUMowzsD3qz5PRQ==" - }, "winston": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz", diff --git a/package.json b/package.json index a3115fe7..00388944 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "pg-hstore": "^2.3.3", "sequelize": "^6.3.5", "superagent": "^6.1.0", - "tc-core-library-js": "github:appirio-tech/tc-core-library-js#feature/auth0-proxy-server", + "tc-core-library-js": "github:appirio-tech/tc-core-library-js#v2.6.5", "util": "^0.12.3", "uuid": "^8.3.1", "winston": "^3.3.3" diff --git a/test/unit/JobCandidateService.test.js b/test/unit/JobCandidateService.test.js index 4eceeb33..e3e93f8c 100644 --- a/test/unit/JobCandidateService.test.js +++ b/test/unit/JobCandidateService.test.js @@ -19,38 +19,48 @@ const JobCandidate = models.JobCandidate const Job = models.Job describe('jobCandidate service test', () => { + beforeEach(() => { + sinon.restore() + }) + describe('create job candidate test', () => { + let stubESCreate + beforeEach(() => { + stubESCreate = sinon.stub(esClient, 'create').callsFake(async () => {}) + }) + it('create job candidate with booking manager success ', async () => { const jobCandidateRes = _.cloneDeep(jobCandidateResponseBody) - const stubCreate = sinon.stub(JobCandidate, 'create').callsFake(() => { + const stubDBCreate = sinon.stub(JobCandidate, 'create').callsFake(() => { return jobCandidateResponseBody }) + const entity = await service.createJobCandidate(bookingManagerUser, jobCandidateRequestBody) expect(entity).to.deep.eql(jobCandidateRes.dataValues) - expect(stubCreate.calledOnce).to.be.true - stubCreate.restore() + expect(stubDBCreate.calledOnce).to.be.true + expect(stubESCreate.calledOnce).to.be.true }) it('create job candidate with connect user success ', async () => { const jobCandidateRes = _.cloneDeep(jobCandidateResponseBody) - const stubCreate = sinon.stub(JobCandidate, 'create').callsFake(() => { + const stubDBCreate = sinon.stub(JobCandidate, 'create').callsFake(() => { return jobCandidateRes }) const entity = await service.createJobCandidate(connectUser, jobCandidateRequestBody) expect(entity).to.deep.eql(jobCandidateRes.dataValues) - expect(stubCreate.calledOnce).to.be.true - stubCreate.restore() + expect(stubDBCreate.calledOnce).to.be.true + expect(stubESCreate.calledOnce).to.be.true }) it('create job candidate with topcoder user success', async () => { const jobCandidateRes = _.cloneDeep(jobCandidateResponseBody) - const stubCreate = sinon.stub(JobCandidate, 'create').callsFake(() => { + const stubDBCreate = sinon.stub(JobCandidate, 'create').callsFake(() => { return jobCandidateRes }) const entity = await service.createJobCandidate(topCoderUser, jobCandidateRequestBody) expect(entity).to.deep.eql(jobCandidateRes.dataValues) - expect(stubCreate.calledOnce).to.be.true - stubCreate.restore() + expect(stubDBCreate.calledOnce).to.be.true + expect(stubDBCreate.calledOnce).to.be.true }) }) @@ -63,7 +73,6 @@ describe('jobCandidate service test', () => { const entity = await service.getJobCandidate(jobCandidateResponseBody.dataValues.id) expect(entity).to.deep.eql(jobCandidateRes.dataValues) expect(stubJobCandidateFindOne.calledOnce).to.be.true - stubJobCandidateFindOne.restore() }) it('get job candidate with candidate not exist success', async () => { @@ -76,12 +85,16 @@ describe('jobCandidate service test', () => { } catch (error) { expect(error.message).to.equal(`JobCandidate with id: ${jobCandidateResponseBody.dataValues.id} doesn't exists.`) expect(stubJobCandidateFindOne.calledOnce).to.be.true - stubJobCandidateFindOne.restore() } }) }) describe('fully update job candidate test', () => { + let stubESUpdate + beforeEach(() => { + stubESUpdate = sinon.stub(esClient, 'update').callsFake(() => {}) + }) + it('fully update job candidate test with booking manager success', async () => { const jobCandidateRes = _.cloneDeep(jobCandidateResponseBody) const stubJobCandidateFindOne = sinon.stub(JobCandidate, 'findOne').callsFake(() => { @@ -94,14 +107,11 @@ describe('jobCandidate service test', () => { const stubJobFindOne = sinon.stub(Job, 'findOne').callsFake(() => { return _.cloneDeep(jobResponseBody) }) - const stubES = sinon.stub(esClient, 'update').callsFake(() => {}) const entity = await service.fullyUpdateJobCandidate(bookingManagerUser, jobCandidateResponseBody.dataValues.id, fullyUpdateJobCandidateRequestBody) expect(entity).to.deep.eql(jobCandidateRes.dataValues) expect(stubJobCandidateFindOne.calledOnce).to.be.true expect(stubJobFindOne.calledOnce).to.be.true - stubJobCandidateFindOne.restore() - stubJobFindOne.restore() - stubES.restore() + expect(stubESUpdate.calledOnce).to.be.true }) it('fully update job candidate test with connect user success', async () => { @@ -115,14 +125,11 @@ describe('jobCandidate service test', () => { const stubJobFindOne = sinon.stub(Job, 'findOne').callsFake(() => { return _.cloneDeep(jobResponseBody) }) - const stubES = sinon.stub(esClient, 'update').callsFake(() => {}) const entity = await service.fullyUpdateJobCandidate(connectUser, jobCandidateResponseBody.dataValues.id, fullyUpdateJobCandidateRequestBody) expect(entity).to.deep.eql(jobCandidateRes.dataValues) expect(stubJobCandidateFindOne.calledOnce).to.be.true expect(stubJobFindOne.calledOnce).to.be.true - stubJobCandidateFindOne.restore() - stubJobFindOne.restore() - stubES.restore() + expect(stubESUpdate.calledOnce).to.be.true }) it('fully update job candidate test with topcoder user success', async () => { @@ -136,19 +143,13 @@ describe('jobCandidate service test', () => { const stubJobFindOne = sinon.stub(Job, 'findOne').callsFake(() => { return _.cloneDeep(jobResponseBody) }) - const stubES = sinon.stub(esClient, 'update').callsFake(() => {}) const user = _.assign({}, topCoderUser, { userId: 40152856 }) - try { - const entity = await service.fullyUpdateJobCandidate(user, jobCandidateResponseBody.dataValues.id, fullyUpdateJobCandidateRequestBody) - expect(entity).to.deep.eql(jobCandidateRes.dataValues) - expect(stubJobCandidateFindOne.calledOnce).to.be.true - expect(stubJobFindOne.calledOnce).to.be.true - } catch (err) { - console.log(err.message) - } - stubJobCandidateFindOne.restore() - stubJobFindOne.restore() - stubES.restore() + + const entity = await service.fullyUpdateJobCandidate(user, jobCandidateResponseBody.dataValues.id, fullyUpdateJobCandidateRequestBody) + expect(entity).to.deep.eql(jobCandidateRes.dataValues) + expect(stubJobCandidateFindOne.calledOnce).to.be.true + expect(stubJobFindOne.calledOnce).to.be.true + expect(stubESUpdate.calledOnce).to.be.true }) it('fully update job candidate test with topcoder user failed', async () => { @@ -168,13 +169,17 @@ describe('jobCandidate service test', () => { } catch (error) { expect(error.message).to.equal('You are not allowed to perform this action!') } - - stubJobCandidateFindOne.restore() - stubJobFindOne.restore() + expect(stubJobCandidateFindOne.calledOnce).to.be.true + expect(stubJobFindOne.calledOnce).to.be.true }) }) describe('partially update job candidate test', () => { + let stubESUpdate + beforeEach(() => { + stubESUpdate = sinon.stub(esClient, 'update').callsFake(() => {}) + }) + it('partially update job candidate test with booking manager success', async () => { const jobCandidateRes = _.cloneDeep(jobCandidateResponseBody) const stubJobCandidateFindOne = sinon.stub(JobCandidate, 'findOne').callsFake(() => { @@ -186,14 +191,12 @@ describe('jobCandidate service test', () => { const stubJobFindOne = sinon.stub(Job, 'findOne').callsFake(() => { return _.cloneDeep(jobResponseBody) }) - const stubES = sinon.stub(esClient, 'update').callsFake(() => {}) + const entity = await service.partiallyUpdateJobCandidate(bookingManagerUser, jobCandidateResponseBody.dataValues.id, partiallyUpdateJobCandidateRequestBody) expect(entity).to.deep.eql(jobCandidateRes.dataValues) expect(stubJobCandidateFindOne.calledOnce).to.be.true expect(stubJobFindOne.calledOnce).to.be.true - stubJobCandidateFindOne.restore() - stubJobFindOne.restore() - stubES.restore() + expect(stubESUpdate.calledOnce).to.be.true }) it('partially update job candidate test with connect user success', async () => { @@ -207,14 +210,11 @@ describe('jobCandidate service test', () => { const stubJobFindOne = sinon.stub(Job, 'findOne').callsFake(() => { return _.cloneDeep(jobResponseBody) }) - const stubES = sinon.stub(esClient, 'update').callsFake(() => {}) const entity = await service.partiallyUpdateJobCandidate(connectUser, jobCandidateResponseBody.dataValues.id, partiallyUpdateJobCandidateRequestBody) expect(entity).to.deep.eql(jobCandidateRes.dataValues) expect(stubJobCandidateFindOne.calledOnce).to.be.true expect(stubJobFindOne.calledOnce).to.be.true - stubJobCandidateFindOne.restore() - stubJobFindOne.restore() - stubES.restore() + expect(stubESUpdate.calledOnce).to.be.true }) it('partially update job candidate test with topcoder user failed', async () => { @@ -234,8 +234,8 @@ describe('jobCandidate service test', () => { } catch (error) { expect(error.message).to.equal('You are not allowed to perform this action!') } - stubJobCandidateFindOne.restore() - stubJobFindOne.restore() + expect(stubJobCandidateFindOne.calledOnce).to.be.true + expect(stubJobFindOne.calledOnce).to.be.true }) it('partially update job candidate test with job not exist', async () => { @@ -248,14 +248,11 @@ describe('jobCandidate service test', () => { const stubJobFindOne = sinon.stub(Job, 'findOne').callsFake(() => { return null }) - const stubES = sinon.stub(esClient, 'update').callsFake(() => {}) await service.partiallyUpdateJobCandidate(bookingManagerUser, jobCandidateResponseBody.dataValues.id, partiallyUpdateJobCandidateRequestBody) expect(stubJobCandidateFindOne.calledOnce).to.be.true expect(stubJobFindOne.calledOnce).to.be.true - stubJobCandidateFindOne.restore() - stubJobFindOne.restore() - stubES.restore() + expect(stubESUpdate.calledOnce).to.be.true }) }) @@ -267,11 +264,10 @@ describe('jobCandidate service test', () => { update: () => { return null } } }) - const stubES = sinon.stub(esClient, 'delete').callsFake(() => {}) + const stubESDelete = sinon.stub(esClient, 'delete').callsFake(() => {}) await service.deleteJobCandidate(bookingManagerUser, jobCandidateResponseBody.dataValues.id) expect(stubJobCandidateFindOne.calledOnce).to.be.true - stubJobCandidateFindOne.restore() - stubES.restore() + expect(stubESDelete.calledOnce).to.be.true }) it('delete job candidate test with connect user success', async () => { @@ -313,7 +309,6 @@ describe('jobCandidate service test', () => { const entity = await service.searchJobCandidates({ sortBy: 'id', sortOrder: 'asc', page: 1, perPage: 1, jobId: '36762910-4efa-4db4-9b2a-c9ab54c232ed' }) expect(entity.result[0]).to.deep.eql(jobCandidateResponseBody.dataValues) expect(stub.calledOnce).to.be.true - stub.restore() }) it('search job candidates without query parameters success', async () => { @@ -335,7 +330,6 @@ describe('jobCandidate service test', () => { const entity = await service.searchJobCandidates({}) expect(entity.result[0]).to.deep.eql(jobCandidateResponseBody.dataValues) expect(stub.calledOnce).to.be.true - stub.restore() }) }) }) diff --git a/test/unit/JobService.test.js b/test/unit/JobService.test.js index 1c12f228..7c953116 100644 --- a/test/unit/JobService.test.js +++ b/test/unit/JobService.test.js @@ -18,25 +18,36 @@ const esClient = helper.getESClient() const Job = models.Job describe('job service test', () => { + beforeEach(() => { + sinon.restore() + }) + describe('create job test', () => { + let stubESCreate + beforeEach(() => { + stubESCreate = sinon.stub(esClient, 'create').callsFake(async () => {}) + }) + it('create job with booking manager user success ', async () => { - const stub = sinon.stub(Job, 'create').callsFake(() => { + const stubDBCreate = sinon.stub(Job, 'create').callsFake(() => { return _.cloneDeep(jobResponseBody) }) + const entity = await service.createJob(bookingManagerUser, jobRequestBody) expect(entity).to.deep.eql(jobResponseBody.dataValues) - expect(stub.calledOnce).to.be.true - stub.restore() + expect(stubDBCreate.calledOnce).to.be.true + expect(stubESCreate.calledOnce).to.be.true }) it('create job with connect user success ', async () => { - const stub = sinon.stub(Job, 'create').callsFake(() => { + const stubDBCreate = sinon.stub(Job, 'create').callsFake(() => { return _.cloneDeep(jobResponseBody) }) + const entity = await service.createJob(connectUser, jobRequestBody) expect(entity).to.deep.eql(jobResponseBody.dataValues) - expect(stub.calledOnce).to.be.true - stub.restore() + expect(stubDBCreate.calledOnce).to.be.true + expect(stubESCreate.calledOnce).to.be.true }) it('create job with connect user failed user id not exist ', async () => { @@ -67,7 +78,6 @@ describe('job service test', () => { const entity = await service.getJob(jobResponseBody.dataValues.id) expect(entity).to.deep.eql(jobResBody.dataValues) expect(stub.calledOnce).to.be.true - stub.restore() }) it('get job with job not exist failed', async () => { @@ -80,12 +90,16 @@ describe('job service test', () => { } catch (error) { expect(error.message).to.equal(`Job with id: ${jobResponseBody.dataValues.id} doesn't exists.`) expect(stub.calledOnce).to.be.true - stub.restore() } }) }) describe('fully update job test', () => { + let stubESUpdate + beforeEach(() => { + stubESUpdate = sinon.stub(esClient, 'update').callsFake(() => {}) + }) + it('fully update job test with booking manager success', async () => { const jobResBody = _.cloneDeep(jobResponseBody) const stub = sinon.stub(Job, 'findOne').onFirstCall().callsFake(() => { @@ -100,13 +114,11 @@ describe('job service test', () => { }).onSecondCall().callsFake(() => { return jobResBody }) - const stubUpdate = sinon.stub(esClient, 'update').callsFake(async () => {}) const entity = await service.fullyUpdateJob(bookingManagerUser, jobResponseBody.dataValues.id, fullyUpdateJobRequestBody) expect(entity).to.deep.eql(jobResBody.dataValues) expect(stub.calledTwice).to.be.true - stub.restore() - stubUpdate.restore() + expect(stubESUpdate.calledOnce).to.be.true }) it('fully update job test with connect user success', async () => { @@ -123,13 +135,11 @@ describe('job service test', () => { }).onSecondCall().callsFake(() => { return jobResBody }) - const stubUpdate = sinon.stub(esClient, 'update').callsFake(async () => {}) const entity = await service.fullyUpdateJob(connectUser, jobResponseBody.dataValues.id, fullyUpdateJobRequestBody) expect(entity).to.deep.eql(jobResBody.dataValues) expect(stub.calledTwice).to.be.true - stub.restore() - stubUpdate.restore() + expect(stubESUpdate.calledOnce).to.be.true }) it('fully update job test with topcoder user failed', async () => { @@ -146,11 +156,16 @@ describe('job service test', () => { } catch (error) { expect(error.message).to.equal('You are not allowed to perform this action!') } - stub.restore() + expect(stub.calledOnce).to.be.true }) }) describe('partially update job test', () => { + let stubESUpdate + beforeEach(() => { + stubESUpdate = sinon.stub(esClient, 'update').callsFake(() => {}) + }) + it('partially update job with booking manager success', async () => { const jobResBody = _.cloneDeep(jobResponseBody) const stub = sinon.stub(Job, 'findOne').onFirstCall().callsFake(() => { @@ -165,12 +180,11 @@ describe('job service test', () => { }).onSecondCall().callsFake(() => { return jobResBody }) - const stubUpdate = sinon.stub(esClient, 'update').callsFake(async () => {}) + const entity = await service.partiallyUpdateJob(bookingManagerUser, jobResponseBody.dataValues.id, partiallyUpdateJobRequestBody) expect(entity).to.deep.eql(jobResBody.dataValues) expect(stub.calledTwice).to.be.true - stub.restore() - stubUpdate.restore() + expect(stubESUpdate.calledOnce).to.be.true }) it('partially update job with connect user success', async () => { @@ -187,12 +201,10 @@ describe('job service test', () => { }).onSecondCall().callsFake(() => { return jobResBody }) - const stubUpdate = sinon.stub(esClient, 'update').callsFake(async () => {}) const entity = await service.partiallyUpdateJob(connectUser, jobResponseBody.dataValues.id, partiallyUpdateJobRequestBody) expect(entity).to.deep.eql(jobResBody.dataValues) expect(stub.calledTwice).to.be.true - stub.restore() - stubUpdate.restore() + expect(stubESUpdate.calledOnce).to.be.true }) it('partially update job with topcoder user failed', async () => { @@ -208,7 +220,7 @@ describe('job service test', () => { } catch (error) { expect(error.message).to.equal('You are not allowed to perform this action!') } - stub.restore() + expect(stub.calledOnce).to.be.true }) }) @@ -227,8 +239,7 @@ describe('job service test', () => { const stubDelete = sinon.stub(esClient, 'delete').callsFake(async () => {}) await service.deleteJob(bookingManagerUser, jobResponseBody.dataValues.id) expect(stub.calledOnce).to.be.true - stub.restore() - stubDelete.restore() + expect(stubDelete.calledOnce).to.be.true }) it('delete job test with connect user failed', async () => { @@ -284,7 +295,6 @@ describe('job service test', () => { const entity = await service.searchJobs({ sortBy: 'id', sortOrder: 'asc', page: 1, perPage: 1, skill: '56fdc405-eccc-4189-9e83-c78abf844f50', description: 'description 1', rateType: 'hourly' }) expect(entity.result[0]).to.deep.eql(jobResponseBody.dataValues) expect(stub.calledTwice).to.be.true - stub.restore() }) it('search jobs without query parameters success', async () => { @@ -317,7 +327,6 @@ describe('job service test', () => { const entity = await service.searchJobs({}) expect(entity.result[0]).to.deep.eql(jobResponseBody.dataValues) expect(stub.calledTwice).to.be.true - stub.restore() }) }) }) diff --git a/test/unit/ResourceBookingService.test.js b/test/unit/ResourceBookingService.test.js index d1172500..c262ab5c 100644 --- a/test/unit/ResourceBookingService.test.js +++ b/test/unit/ResourceBookingService.test.js @@ -21,25 +21,34 @@ const esClient = helper.getESClient() const ResourceBooking = models.ResourceBooking describe('resourceBooking service test', () => { + beforeEach(() => { + sinon.restore() + }) + describe('create resource booking test', () => { + let stubESCreate + beforeEach(() => { + stubESCreate = sinon.stub(esClient, 'create').callsFake(async () => {}) + }) + it('create resource booking with booking manager success ', async () => { - const stubCreate = sinon.stub(ResourceBooking, 'create').callsFake(() => { + const stubDBCreate = sinon.stub(ResourceBooking, 'create').callsFake(() => { return resourceBookingResponseBody }) const entity = await service.createResourceBooking(bookingManagerUser, resourceBookingRequestBody) expect(entity).to.deep.eql(resourceBookingResponseBody.dataValues) - expect(stubCreate.calledOnce).to.be.true - stubCreate.restore() + expect(stubDBCreate.calledOnce).to.be.true + expect(stubESCreate.calledOnce).to.be.true }) it('create resource booking with connect user success ', async () => { - const stubCreate = sinon.stub(ResourceBooking, 'create').callsFake(() => { + const stubDBCreate = sinon.stub(ResourceBooking, 'create').callsFake(() => { return resourceBookingResponseBody }) const entity = await service.createResourceBooking(connectUser, resourceBookingRequestBody) expect(entity).to.deep.eql(resourceBookingResponseBody.dataValues) - expect(stubCreate.calledOnce).to.be.true - stubCreate.restore() + expect(stubDBCreate.calledOnce).to.be.true + expect(stubESCreate.calledOnce).to.be.true }) it('create resource booking with topcoder user failed ', async () => { @@ -60,7 +69,6 @@ describe('resourceBooking service test', () => { const entity = await service.getResourceBooking(bookingManagerUser, resourceBookingResponseBody.dataValues.id) expect(entity).to.deep.eql(resourceBookingRes.dataValues) expect(stub.calledOnce).to.be.true - stub.restore() }) it('get resource booking with connect user success', async () => { @@ -71,7 +79,6 @@ describe('resourceBooking service test', () => { const entity = await service.getResourceBooking(connectUser, resourceBookingResponseBody.dataValues.id) expect(entity).to.deep.eql(_.omit(resourceBookingRes.dataValues, ['memberRate'])) expect(stub.calledOnce).to.be.true - stub.restore() }) it('get resource booking with topcoder user success', async () => { @@ -82,7 +89,6 @@ describe('resourceBooking service test', () => { const entity = await service.getResourceBooking(topCoderUser, resourceBookingResponseBody.dataValues.id) expect(entity).to.deep.eql(_.omit(resourceBookingRes.dataValues, ['customerRate'])) expect(stub.calledOnce).to.be.true - stub.restore() }) it('get resource booking with resource booking not exist success', async () => { @@ -94,12 +100,16 @@ describe('resourceBooking service test', () => { } catch (error) { expect(error.message).to.equal(`ResourceBooking with id: ${resourceBookingResponseBody.dataValues.id} doesn't exists.`) expect(stub.calledOnce).to.be.true - stub.restore() } }) }) describe('fully update resource booking test', () => { + let stubESUpdate + beforeEach(() => { + stubESUpdate = sinon.stub(esClient, 'update').callsFake(() => {}) + }) + it('fully update resource booking test with booking manager success', async () => { const resourceBookingRes = _.cloneDeep(resourceBookingResponseBody) const stubResourceBookingFindOne = sinon.stub(ResourceBooking, 'findOne').callsFake(() => { @@ -108,12 +118,10 @@ describe('resourceBooking service test', () => { update: () => { return null } } }) - const stubES = sinon.stub(esClient, 'update').callsFake(() => {}) const entity = await service.fullyUpdateResourceBooking(bookingManagerUser, resourceBookingResponseBody.dataValues.id, fullyUpdateResourceBookingRequestBody) expect(entity).to.deep.eql(resourceBookingRes.dataValues) expect(stubResourceBookingFindOne.calledOnce).to.be.true - stubResourceBookingFindOne.restore() - stubES.restore() + expect(stubESUpdate.calledOnce).to.be.true }) it('fully update resource booking test with connect user success', async () => { @@ -124,12 +132,10 @@ describe('resourceBooking service test', () => { update: () => { return null } } }) - const stubES = sinon.stub(esClient, 'update').callsFake(() => {}) const entity = await service.fullyUpdateResourceBooking(connectUser, resourceBookingResponseBody.dataValues.id, fullyUpdateResourceBookingRequestBody) expect(entity).to.deep.eql(resourceBookingRes.dataValues) expect(stubResourceBookingFindOne.calledOnce).to.be.true - stubResourceBookingFindOne.restore() - stubES.restore() + expect(stubESUpdate.calledOnce).to.be.true }) it('fully update resource booking test with topcoder user failed', async () => { @@ -147,11 +153,15 @@ describe('resourceBooking service test', () => { expect(stubResourceBookingFindOne.calledOnce).to.be.true expect(error.message).to.equal('You are not allowed to perform this action!') } - stubResourceBookingFindOne.restore() }) }) describe('partially update resource booking test', () => { + let stubESUpdate + beforeEach(() => { + stubESUpdate = sinon.stub(esClient, 'update').callsFake(() => {}) + }) + it('partially update resource booking test with booking manager success', async () => { const resourceBookingRes = _.cloneDeep(resourceBookingResponseBody) const stubResourceBookingFindOne = sinon.stub(ResourceBooking, 'findOne').callsFake(() => { @@ -160,13 +170,10 @@ describe('resourceBooking service test', () => { update: () => { return null } } }) - const stubES = sinon.stub(esClient, 'update').callsFake(() => {}) const entity = await service.partiallyUpdateResourceBooking(bookingManagerUser, resourceBookingResponseBody.dataValues.id, partiallyUpdateResourceBookingRequestBody) expect(entity).to.deep.eql(resourceBookingRes.dataValues) expect(stubResourceBookingFindOne.calledOnce).to.be.true - expect(stubES.calledOnce).to.be.true - stubResourceBookingFindOne.restore() - stubES.restore() + expect(stubESUpdate.calledOnce).to.be.true }) it('partially update resource booking test with connect user success', async () => { @@ -177,12 +184,10 @@ describe('resourceBooking service test', () => { update: () => { return null } } }) - const stubES = sinon.stub(esClient, 'update').callsFake(() => {}) const entity = await service.partiallyUpdateResourceBooking(connectUser, resourceBookingResponseBody.dataValues.id, partiallyUpdateResourceBookingRequestBody) expect(entity).to.deep.eql(resourceBookingRes.dataValues) expect(stubResourceBookingFindOne.calledOnce).to.be.true - stubResourceBookingFindOne.restore() - stubES.restore() + expect(stubESUpdate.calledOnce).to.be.true }) it('partially update resource booking test with topcoder user failed', async () => { @@ -200,7 +205,6 @@ describe('resourceBooking service test', () => { expect(error.message).to.equal('You are not allowed to perform this action!') } expect(stubResourceBookingFindOne.calledOnce).to.be.true - stubResourceBookingFindOne.restore() }) }) @@ -216,8 +220,6 @@ describe('resourceBooking service test', () => { await service.deleteResourceBooking(bookingManagerUser, resourceBookingResponseBody.dataValues.id) expect(stubResourceBookingFindOne.calledOnce).to.be.true expect(stubES.calledOnce).to.be.true - stubResourceBookingFindOne.restore() - stubES.restore() }) it('delete resource booking test with connect user failed', async () => { @@ -259,7 +261,6 @@ describe('resourceBooking service test', () => { const entity = await service.searchResourceBookings({ sortBy: 'id', sortOrder: 'asc', page: 1, perPage: 1, status: 'sourcing' }) expect(entity.result[0]).to.deep.eql(resourceBookingResponseBody.dataValues) expect(stub.calledOnce).to.be.true - stub.restore() }) it('search resource booking without query parameters success', async () => { @@ -281,7 +282,6 @@ describe('resourceBooking service test', () => { const entity = await service.searchResourceBookings({}) expect(entity.result[0]).to.deep.eql(resourceBookingResponseBody.dataValues) expect(stub.calledOnce).to.be.true - stub.restore() }) }) })