From b6aebd5b7418fa14ca8398bbcf7e93137134945b Mon Sep 17 00:00:00 2001 From: Hamada Abdelaal Date: Tue, 18 Jun 2024 10:12:45 +0200 Subject: [PATCH] standard and extensions --- contacts-endpoints-lifecycle.png | Bin 0 -> 108240 bytes package-lock.json | 157 +++++++++++++++++----- package.json | 7 +- src/server.js | 171 ++++++++++++++++++++++-- test/api/standard/contacts.spec.js | 208 ++++++++++++++--------------- 5 files changed, 393 insertions(+), 150 deletions(-) create mode 100644 contacts-endpoints-lifecycle.png diff --git a/contacts-endpoints-lifecycle.png b/contacts-endpoints-lifecycle.png new file mode 100644 index 0000000000000000000000000000000000000000..2db4a9b40797b253a5c062a52104992e4f9229de GIT binary patch literal 108240 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" } }, "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dependencies": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -1423,7 +1428,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -1436,6 +1441,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1445,6 +1451,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -1587,6 +1594,7 @@ "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, "funding": [ { "type": "individual", @@ -1702,7 +1710,8 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true }, "node_modules/content-disposition": { "version": "0.5.4", @@ -1730,9 +1739,9 @@ "dev": true }, "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "engines": { "node": ">= 0.6" } @@ -2032,16 +2041,16 @@ } }, "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -2097,6 +2106,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -2189,6 +2199,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, "hasInstallScript": true, "optional": true, "os": [ @@ -2283,6 +2294,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -2378,6 +2390,15 @@ "node": ">=8" } }, + "node_modules/hoek": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-5.0.4.tgz", + "integrity": "sha512-Alr4ZQgoMlnere5FZJsIyfIjORBqZll5POhDsF4q64dPuJR6rNxXdDxtHSQq8OXRurhmx+PWYEE8bXRROY8h0w==", + "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", + "engines": { + "node": ">=8.9.0" + } + }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -2422,7 +2443,8 @@ "node_modules/ignore-by-default": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true }, "node_modules/import-local": { "version": "3.1.0", @@ -2485,6 +2507,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -2508,6 +2531,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -2534,6 +2558,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -2545,6 +2570,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, "engines": { "node": ">=0.12.0" } @@ -2561,6 +2587,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/isemail": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.2.0.tgz", + "integrity": "sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg==", + "dependencies": { + "punycode": "2.x.x" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -3277,6 +3314,20 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/joi": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-13.1.0.tgz", + "integrity": "sha512-x6pGmDYI6hwNi3skP6irQqRaJntzeaWmZ4rsnjc/NTlf6P5Gp3Aw/O8REe8oLJ6wPhrzd9K3RW1m3Yz/Hx4Weg==", + "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", + "dependencies": { + "hoek": "5.x.x", + "isemail": "3.x.x", + "topo": "3.x.x" + }, + "engines": { + "node": ">=8.9.0" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -3511,6 +3562,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -3576,9 +3628,10 @@ "dev": true }, "node_modules/nodemon": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.2.tgz", - "integrity": "sha512-9qIN2LNTrEzpOPBaWHTm4Asy1LxXLSickZStAQ4IZe7zsoIpD/A7LWxhZV3t4Zu352uBcqVnRsDXSMR2Sc3lTA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.3.tgz", + "integrity": "sha512-m4Vqs+APdKzDFpuaL9F9EVOF85+h070FnkHVEoU4+rmT6Vw0bmNl7s61VEkY/cJkL7RCv1p4urnUDUMrS5rk2w==", + "dev": true, "dependencies": { "chokidar": "^3.5.2", "debug": "^4", @@ -3606,6 +3659,7 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -3622,6 +3676,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, "engines": { "node": ">=4" } @@ -3630,6 +3685,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -3640,12 +3696,14 @@ "node_modules/nodemon/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==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "node_modules/nodemon/node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -3660,6 +3718,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -3670,12 +3729,14 @@ "node_modules/nodemon/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/nopt": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dev": true, "dependencies": { "abbrev": "1" }, @@ -3690,6 +3751,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -3890,6 +3952,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "engines": { "node": ">=8.6" }, @@ -3972,7 +4035,16 @@ "node_modules/pstree.remy": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "engines": { + "node": ">=6" + } }, "node_modules/pure-rand": { "version": "6.0.4", @@ -4013,9 +4085,9 @@ } }, "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "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", @@ -4036,6 +4108,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -4237,6 +4310,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, "dependencies": { "semver": "^7.5.3" }, @@ -4248,6 +4322,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -4259,6 +4334,7 @@ "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -4272,7 +4348,8 @@ "node_modules/simple-update-notifier/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/sisteransi": { "version": "1.0.5", @@ -4562,6 +4639,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -4577,10 +4655,26 @@ "node": ">=0.6" } }, + "node_modules/topo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/topo/-/topo-3.0.3.tgz", + "integrity": "sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ==", + "deprecated": "This module has moved and is now available at @hapi/topo. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.", + "dependencies": { + "hoek": "6.x.x" + } + }, + "node_modules/topo/node_modules/hoek": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", + "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==", + "deprecated": "This module has moved and is now available at @hapi/hoek. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues." + }, "node_modules/touch": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, "dependencies": { "nopt": "~1.0.10" }, @@ -4624,7 +4718,8 @@ "node_modules/undefsafe": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true }, "node_modules/undici-types": { "version": "5.26.5", diff --git a/package.json b/package.json index ec6510a..fe2feeb 100644 --- a/package.json +++ b/package.json @@ -20,12 +20,13 @@ "homepage": "https://github.com/boolean-uk/api-address-book#readme", "dependencies": { "cors": "^2.8.5", - "express": "^4.18.2", - "morgan": "^1.10.0", - "nodemon": "^3.0.1" + "express": "^4.19.2", + "joi": "^13.1.0", + "morgan": "^1.10.0" }, "devDependencies": { "jest": "^29.7.0", + "nodemon": "^3.1.3", "supertest": "^6.2.3" } } diff --git a/src/server.js b/src/server.js index 30f0ce3..f4f3a2e 100644 --- a/src/server.js +++ b/src/server.js @@ -1,13 +1,166 @@ -const express = require("express") -const morgan = require("morgan") -const cors = require("cors") -const app = express() +const express = require("express"); +const Joi = require("joi"); +const morgan = require("morgan"); +const cors = require("cors"); +const app = express(); -app.use(morgan("dev")) -app.use(cors()) -app.use(express.json()) +app.use(morgan("dev")); +app.use(cors()); +app.use(express.json()); -// write your app code here +const contacts = require("../data/contacts"); +const meetings = require("../data/meetings"); +// 1- Contacts +// a) Helper functions +function findContact(req, res) { + const id = Number.parseInt(req.params.id, 10); + const contact = contacts.find((contact) => contact.id === id); -module.exports = app + if (!contact) + return res.status(404).send(`The contact with ID ${id} is not found.`); + + return contact; +} + +function validateContact(req, res) { + const schema = { + firstName: Joi.string().required(), + lastName: Joi.string().required(), + street: Joi.string().required(), + city: Joi.string().required(), + type: Joi.string().required(), + email: Joi.string().required(), + linkedin: Joi.string().required(), + twitter: Joi.string().required(), + }; + + const { error } = Joi.validate(req.body, schema); + + if (error) { + return res.status(400).send(error.details[0].message); + } +} + +// b) API verbs +app.get("/contacts", (req, res) => { + res.status(200).json({ contacts: contacts }); +}); + +app.post("/contacts", (req, res) => { + validateContact(req, res); + + const id = contacts[contacts.length - 1].id + 1; + const contact = Object.assign({ id }, req.body); + + contacts.push(contact); + res.status(201).json({ contact }); +}); + +app.get("/contacts/:id", (req, res) => { + const contact = findContact(req, res); + + res.status(200).json({ contact }); +}); + +app.delete("/contacts/:id", (req, res) => { + const contact = findContact(req, res); + + const index = contacts.indexOf(contact); + contacts.splice(index, 1); + + for (let key of meetings) { + if (key?.contactId === contact.id) { + meetings.splice(meetings.indexOf(key), 1); + } + } + + res.status(200).json({ contact }); +}); + +app.put("/contacts/:id", (req, res) => { + const contact = findContact(req, res); + + validateContact(req, res); + + contacts[contacts.indexOf(contact)] = { ...contact, ...req.body }; + + res.status(200).json({ contact: { ...contact, ...req.body } }); +}); + +// 2- Meetings +// a) Helper functions +function findMeeting(req, res) { + const id = Number.parseInt(req.params.id, 10); + const meeting = meetings.find((meeting) => meeting.id === id); + + if (!meeting) + return res.status(404).send(`The meeting with ID ${id} is not found.`); + + return meeting; +} + +function validateMeeting(req, res) { + const schema = { + name: Joi.string().required(), + }; + + const { error } = Joi.validate(req.body, schema); + + if (error) return res.status(400).send(error.details[0].message); +} + +// b) API verbs +app.get("/meetings", (req, res) => { + res.status(200).json({ meetings }); +}); + +app.get("/meetings/:id", (req, res) => { + const meeting = findMeeting(req, res); + + res.status(200).json({ meeting }); +}); + +app.delete("/meetings/:id", (req, res) => { + const meeting = findMeeting(req, res); + + const index = meetings.indexOf(meeting); + + meetings.splice(index, 1); + res.status(200).json({ meeting }); +}); + +app.put("/meetings/:id", (req, res) => { + const meeting = findMeeting(req, res); + + validateMeeting(req, res); + + meeting.name = req.body.name; + res.status(200).json({ meeting }); +}); + +app.get("/contacts/:id/meetings", (req, res) => { + const contactMeetings = meetings.filter( + (meeting) => meeting.contactId === findContact(req, res).id + ); + + if (!contactMeetings) + return res.status(404).send(`No meetings found for this contact.`); + + res.status(200).json({ meetings: contactMeetings }); +}); + +app.post("/contacts/:id/meetings", (req, res) => { + validateMeeting(req, res); + + const meetingId = meetings[meetings.length - 1].id + 1; + const contactId = Number.parseInt(req.params.id, 10); + + const newMeeting = Object.assign({ id: meetingId, contactId }, req.body); + + meetings.push(newMeeting); + + res.status(201).json({ meeting: newMeeting }); +}); + +module.exports = app; diff --git a/test/api/standard/contacts.spec.js b/test/api/standard/contacts.spec.js index 4c430a8..4ff2de5 100644 --- a/test/api/standard/contacts.spec.js +++ b/test/api/standard/contacts.spec.js @@ -1,135 +1,129 @@ -const supertest = require('supertest') +const supertest = require("supertest"); -describe('Address Book API', () => { - let app, createTestFormData, updateTestFormData +describe("Address Book API", () => { + let app, createTestFormData, updateTestFormData; beforeEach(() => { - app = require('../../../src/server.js') - createTestFormData = require('../../fixtures/contacts/createTestFormData.js') - updateTestFormData = require('../../fixtures/contacts/updateTestFormData.js') - }) - - describe('GET /contacts', () => { - it('returns default contacts', async () => { - const response = await supertest(app).get('/contacts') - - expect(response.status).toEqual(200) - expect(response.body.contacts).not.toEqual(undefined) - expect(response.body.contacts.length).toEqual(2) - - const [contact1, contact2] = response.body.contacts - expect(contact1.firstName).toEqual("John") - expect(contact1.lastName).toEqual("Carmack") - expect(contact2.firstName).toEqual("Grace") - expect(contact2.lastName).toEqual("Hopper") - }) - }) - - describe('GET /contacts/:id', () => { - it('returns contact, id 2', async () => { - const response = await supertest(app).get('/contacts/2') - - expect(response.status).toEqual(200) - expect(response.body.contact).not.toEqual(undefined) - - const contact = response.body.contact - expect(contact.id).toEqual(2) - expect(contact.firstName).toEqual("Grace") - expect(contact.lastName).toEqual("Hopper") - }) - }) - - describe('POST /contacts', () => { - it('returns created contact', async () => { + app = require("../../../src/server.js"); + createTestFormData = require("../../fixtures/contacts/createTestFormData.js"); + updateTestFormData = require("../../fixtures/contacts/updateTestFormData.js"); + }); + + describe("GET /contacts", () => { + it("returns default contacts", async () => { + const response = await supertest(app).get("/contacts"); + + expect(response.status).toEqual(200); + expect(response.body.contacts).not.toEqual(undefined); + expect(response.body.contacts.length).toEqual(2); + + const [contact1, contact2] = response.body.contacts; + expect(contact1.firstName).toEqual("John"); + expect(contact1.lastName).toEqual("Carmack"); + expect(contact2.firstName).toEqual("Grace"); + expect(contact2.lastName).toEqual("Hopper"); + }); + }); + + describe("GET /contacts/:id", () => { + it("returns contact, id 2", async () => { + const response = await supertest(app).get("/contacts/2"); + + expect(response.status).toEqual(200); + expect(response.body.contact).not.toEqual(undefined); + + const contact = response.body.contact; + expect(contact.id).toEqual(2); + expect(contact.firstName).toEqual("Grace"); + expect(contact.lastName).toEqual("Hopper"); + }); + }); + + describe("POST /contacts", () => { + it("returns created contact", async () => { const response = await supertest(app) - .post('/contacts') - .send(createTestFormData) + .post("/contacts") + .send(createTestFormData); - expect(response.status).toEqual(201) - expect(response.body.contact).not.toEqual(undefined) + expect(response.status).toEqual(201); + expect(response.body.contact).not.toEqual(undefined); - const contact = response.body.contact - expect(contact.id).toEqual(3) - expect(contact.firstName).toEqual(createTestFormData.firstName) - expect(contact.lastName).toEqual(createTestFormData.lastName) - }) + const contact = response.body.contact; + expect(contact.id).toEqual(3); + expect(contact.firstName).toEqual(createTestFormData.firstName); + expect(contact.lastName).toEqual(createTestFormData.lastName); + }); - it('adds contact to data store', async () => { - await supertest(app) - .post('/contacts') - .send(createTestFormData) + it("adds contact to data store", async () => { + await supertest(app).post("/contacts").send(createTestFormData); - const response = await supertest(app).get('/contacts') + const response = await supertest(app).get("/contacts"); - expect(response.status).toEqual(200) - expect(response.body.contacts).not.toEqual(undefined) - expect(response.body.contacts.length).toEqual(3) + expect(response.status).toEqual(200); + expect(response.body.contacts).not.toEqual(undefined); + expect(response.body.contacts.length).toEqual(3); - const [contact1, contact2, contact3] = response.body.contacts - expect(contact3.firstName).toEqual(createTestFormData.firstName) - expect(contact3.lastName).toEqual(createTestFormData.lastName) - }) - }) + const [contact1, contact2, contact3] = response.body.contacts; + expect(contact3.firstName).toEqual(createTestFormData.firstName); + expect(contact3.lastName).toEqual(createTestFormData.lastName); + }); + }); - describe('PUT /contacts', () => { - let updatedContact + describe("PUT /contacts", () => { + let updatedContact; beforeEach(() => { updatedContact = { ...updateTestFormData, - id: 1 - } - }) - it('returns updated contact', async () => { + id: 1, + }; + }); + it("returns updated contact", async () => { const response = await supertest(app) .put(`/contacts/1`) - .send(updateTestFormData) + .send(updateTestFormData); - expect(response.status).toEqual(200) - expect(response.body.contact).not.toEqual(undefined) + expect(response.status).toEqual(200); + expect(response.body.contact).not.toEqual(undefined); - const contact = response.body.contact - expect(contact).toMatchObject(updatedContact) - }) + const contact = response.body.contact; + expect(contact).toMatchObject(updatedContact); + }); - it('updated contact is in data store', async () => { - await supertest(app) - .put(`/contacts/1`) - .send(updateTestFormData) + it("updated contact is in data store", async () => { + await supertest(app).put(`/contacts/1`).send(updateTestFormData); - const response = await supertest(app).get('/contacts') + const response = await supertest(app).get("/contacts"); - expect(response.status).toEqual(200) - expect(response.body.contacts).not.toEqual(undefined) - expect(response.body.contacts.length).toEqual(2) + expect(response.status).toEqual(200); + expect(response.body.contacts).not.toEqual(undefined); + expect(response.body.contacts.length).toEqual(2); - const [contact1, contact2] = response.body.contacts - expect(contact1.firstName).toEqual(updatedContact.firstName) - expect(contact1.lastName).toEqual(updatedContact.lastName) - }) - }) + const [contact1, contact2] = response.body.contacts; + expect(contact1.firstName).toEqual(updatedContact.firstName); + expect(contact1.lastName).toEqual(updatedContact.lastName); + }); + }); - describe('DELETE /contacts', () => { - it('returns deleted contact', async () => { - const response = await supertest(app) - .delete(`/contacts/1`) + describe("DELETE /contacts", () => { + it("returns deleted contact", async () => { + const response = await supertest(app).delete(`/contacts/1`); - expect(response.status).toEqual(200) - expect(response.body.contact).not.toEqual(undefined) - expect(response.body.contact.id).toEqual(1) - }) + expect(response.status).toEqual(200); + expect(response.body.contact).not.toEqual(undefined); + expect(response.body.contact.id).toEqual(1); + }); - it('removes contact from data store', async () => { - const response = await supertest(app) - .delete(`/contacts/1`) + it("removes contact from data store", async () => { + const response = await supertest(app).delete(`/contacts/1`); - const deletedContact = response.body.contact + const deletedContact = response.body.contact; - const response2 = await supertest(app).get('/contacts') + const response2 = await supertest(app).get("/contacts"); - expect(response2.status).toEqual(200) - expect(response2.body.contacts).not.toEqual(undefined) - expect(response2.body.contacts.length).toEqual(1) - expect(response2.body.contacts).not.toContain(deletedContact) - }) - }) -}) + expect(response2.status).toEqual(200); + expect(response2.body.contacts).not.toEqual(undefined); + expect(response2.body.contacts.length).toEqual(1); + expect(response2.body.contacts).not.toContain(deletedContact); + }); + }); +});