diff --git a/.gitignore b/.gitignore index eb88255..964f91b 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ logs npm-debug.log* yarn-debug.log* yarn-error.log* +newman/ # Runtime data pids diff --git a/README.md b/README.md index 8a9c96c..8791e5c 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,37 @@ The following parameters can be set in config files or in env variables: - App will be running at `http://localhost:3000` - Application can be run in development mode using the command `npm run dev` +## Running tests + +### Configuration + +Test configuration is at `config/test.js`. You don't need to change them. + +The following test parameters can be set in config file or in env variables: + +- AUTH_V2_URL: The auth v2 url +- AUTH_V2_CLIENT_ID: The auth v2 client id +- AUTH_V3_URL: The auth v3 url +- ADMIN_CREDENTIALS_USERNAME: The user's username with admin role +- ADMIN_CREDENTIALS_PASSWORD: The user's password with admin role +- USER_CREDENTIALS_USERNAME: The user's username with user role +- USER_CREDENTIALS_PASSWORD: The user's password with user role + +### Prepare + +- Start Local Neo4j. +- Various config parameters should be properly set. + +### Running E2E tests with Postman + +`Start` the app server before running e2e tests. You may need to set the env variables by calling `source env.sh` before calling `NODE_ENV=test npm start`. + +To run postman e2e tests run: + +```bash +npm run test:newman +``` + ## Heroku deployment - git init - git add . diff --git a/config/default.js b/config/default.js index 6dfb3a6..0bf9c02 100644 --- a/config/default.js +++ b/config/default.js @@ -1,7 +1,7 @@ /** * The configuration file. */ - +require('dotenv').config() module.exports = { LOG_LEVEL: process.env.LOG_LEVEL || 'debug', PORT: process.env.PORT || 3000, @@ -9,7 +9,7 @@ module.exports = { API_PREFIX: process.env.API_PREFIX || '', GRAPH_DB_URI: process.env.GRAPH_DB_URI || process.env.GRAPHENEDB_BOLT_URL || 'bolt://localhost:7687', GRAPH_DB_USER: process.env.GRAPH_DB_USER || process.env.GRAPHENEDB_BOLT_USER || 'neo4j', - GRAPH_DB_PASSWORD: process.env.GRAPH_DB_PASSWORD || process.env.GRAPHENEDB_BOLT_PASSWORD || '123456', + GRAPH_DB_PASSWORD: process.env.GRAPH_DB_PASSWORD || process.env.GRAPHENEDB_BOLT_PASSWORD || 'password', AUTH_SECRET: process.env.AUTH_SECRET || 'mysecret', VALID_ISSUERS: process.env.VALID_ISSUERS ? process.env.VALID_ISSUERS.replace(/\\"/g, '') @@ -52,5 +52,7 @@ module.exports = { MEMBERSHIP_TYPES: { Group: 'group', User: 'user' - } + }, + + AUTOMATED_TESTING_NAME_PREFIX: process.env.AUTOMATED_TESTING_NAME_PREFIX || 'POSTMANE2E-' } diff --git a/config/test.js b/config/test.js new file mode 100644 index 0000000..02768a9 --- /dev/null +++ b/config/test.js @@ -0,0 +1,17 @@ +/** + * The configuration file. + */ + +module.exports = { + WAIT_TIME: 10, + AUTH_V2_URL: process.env.AUTH_V2_URL || 'https://topcoder-dev.auth0.com/oauth/ro', + AUTH_V2_CLIENT_ID: process.env.AUTH_V2_CLIENT_ID || '', + AUTH_V3_URL: process.env.AUTH_V3_URL || 'https://api.topcoder-dev.com/v3/authorizations', + ADMIN_CREDENTIALS_USERNAME: process.env.ADMIN_CREDENTIALS_USERNAME || '', + ADMIN_CREDENTIALS_PASSWORD: process.env.ADMIN_CREDENTIALS_PASSWORD || '', + USER_CREDENTIALS_USERNAME: process.env.USER_CREDENTIALS_USERNAME || '', + USER_CREDENTIALS_PASSWORD: process.env.USER_CREDENTIALS_PASSWORD || '', + COPILOT_CREDENTIALS_USERNAME: process.env.COPILOT_CREDENTIALS_USERNAME || '', + COPILOT_CREDENTIALS_PASSWORD: process.env.COPILOT_CREDENTIALS_PASSWORD || '', + AUTOMATED_TESTING_REPORTERS_FORMAT: process.env.AUTOMATED_TESTING_REPORTERS_FORMAT || ['cli', 'html'] +} diff --git a/env.sh b/env.sh new file mode 100644 index 0000000..da74374 --- /dev/null +++ b/env.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +export AUTH0_CLIENT_ID= + +export AUTH0_CLIENT_SECRET= + +export AUTH0_AUDIENCE= + +export AUTH_V2_URL= + +export AUTH_V2_CLIENT_ID= + +export AUTH_V3_URL= + +export ADMIN_CREDENTIALS_USERNAME= + +export ADMIN_CREDENTIALS_PASSWORD= + +export USER_CREDENTIALS_USERNAME= + +export USER_CREDENTIALS_PASSWORD= diff --git a/package-lock.json b/package-lock.json index a82e77e..733a177 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,27 +5,27 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", "dev": true, "requires": { - "@babel/highlight": "^7.8.3" + "@babel/highlight": "^7.12.13" } }, "@babel/helper-validator-identifier": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", - "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", "dev": true }, "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", + "@babel/helper-validator-identifier": "^7.12.11", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -53,13 +53,79 @@ } }, "@babel/runtime": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", - "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", + "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", "requires": { "regenerator-runtime": "^0.13.4" } }, + "@dabh/diagnostics": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz", + "integrity": "sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==", + "requires": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, + "@hapi/hoek": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.0.tgz", + "integrity": "sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug==", + "dev": true + }, + "@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@postman/form-data": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@postman/form-data/-/form-data-3.1.1.tgz", + "integrity": "sha512-vjh8Q2a8S6UCm/KKs31XFJqEEgmbjBmpPNVV2eVav6905wyFAwaUOBGA1NPBI4ERH9MMZc6w0umFgM6WbEPMdg==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "@postman/tunnel-agent": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@postman/tunnel-agent/-/tunnel-agent-0.6.3.tgz", + "integrity": "sha512-k57fzmAZ2PJGxfOA4SGR05ejorHbVAa/84Hxh/2nAztjNXc4ZjOm9NUIk6/Z6LCrBvJZqjRZbN8e/nROVUPVdg==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "@sideway/address": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.2.tgz", + "integrity": "sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==", + "dev": true + }, + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true + }, "@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -75,6 +141,11 @@ "defer-to-connect": "^1.0.1" } }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==" + }, "@types/body-parser": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", @@ -84,27 +155,21 @@ "@types/node": "*" } }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true - }, "@types/connect": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz", - "integrity": "sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==", + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.34.tgz", + "integrity": "sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ==", "requires": { "@types/node": "*" } }, "@types/express": { - "version": "4.17.7", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.7.tgz", - "integrity": "sha512-dCOT5lcmV/uC2J9k0rPafATeeyz+99xTt54ReX11/LObZgfzJqZNcW27zGhYyX+9iSEGXGt5qLPwRSvBZcLvtQ==", + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.11.tgz", + "integrity": "sha512-no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg==", "requires": { "@types/body-parser": "*", - "@types/express-serve-static-core": "*", + "@types/express-serve-static-core": "^4.17.18", "@types/qs": "*", "@types/serve-static": "*" } @@ -119,9 +184,9 @@ } }, "@types/express-serve-static-core": { - "version": "4.17.8", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.8.tgz", - "integrity": "sha512-1SJZ+R3Q/7mLkOD9ewCBDYD2k0WyZQtWYqF/2VvoNN2/uhI49J9CDN4OAm+wGMA0DbArA4ef27xl4+JwMtGggw==", + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.19.tgz", + "integrity": "sha512-DJOSHzX7pCiSElWaGR8kCprwibCB/3yW6vcT8VG3P0SJjnv19gnWG/AZMfM60Xj/YJIp/YCaDHyvzsFVeniARA==", "requires": { "@types/node": "*", "@types/qs": "*", @@ -137,19 +202,19 @@ } }, "@types/mime": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.2.tgz", - "integrity": "sha512-4kPlzbljFcsttWEq6aBW0OZe6BDajAmyvr2xknBG92tejQnvdGtT9+kXSZ580DqpxY9qG2xeQVF9Dq0ymUTo5Q==" + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" }, "@types/node": { - "version": "14.0.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.23.tgz", - "integrity": "sha512-Z4U8yDAl5TFkmYsZdFPdjeMa57NOvnaf1tljHzhouaPEp7LCj2JKkejpI1ODviIAQuW4CcQmxkQ77rnLsOOoKw==" + "version": "14.14.41", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.41.tgz", + "integrity": "sha512-dueRKfaJL4RTtSa7bWeTK1M+VH+Gns73oCgzvYfHZywRCoPSd8EkXBL0mZ9unPTveBn+D9phZBaxuzpwjWkW0g==" }, "@types/qs": { - "version": "6.9.3", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.3.tgz", - "integrity": "sha512-7s9EQWupR1fTc2pSMtXRQ9w9gLOcrJn+h7HOXw4evxyvVqMi4f+q7d2tnFe3ng3SNHjtK+0EzGMGFUQX4/AQRA==" + "version": "6.9.6", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.6.tgz", + "integrity": "sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA==" }, "@types/range-parser": { "version": "1.2.3", @@ -157,12 +222,12 @@ "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" }, "@types/serve-static": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.4.tgz", - "integrity": "sha512-jTDt0o/YbpNwZbQmE/+2e+lfjJEJJR0I3OFaKQKPWkASkCoW3i6fsUnqudSMcNAfbtmADGu8f4MV4q+GqULmug==", + "version": "1.13.9", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.9.tgz", + "integrity": "sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA==", "requires": { - "@types/express-serve-static-core": "*", - "@types/mime": "*" + "@types/mime": "^1", + "@types/node": "*" } }, "abbrev": { @@ -181,21 +246,44 @@ } }, "acorn": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", - "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true }, "acorn-jsx": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", - "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", "dev": true }, + "agent-base": { + "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" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, "ajv": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -226,18 +314,18 @@ } }, "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "requires": { - "type-fest": "^0.11.0" + "type-fest": "^0.21.3" }, "dependencies": { "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true } } @@ -249,12 +337,11 @@ "dev": true }, "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" }, "dependencies": { @@ -276,9 +363,9 @@ } }, "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -299,13 +386,15 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, "array-includes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", - "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", + "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", "dev": true, "requires": { + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0", + "es-abstract": "^1.18.0-next.2", + "get-intrinsic": "^1.1.1", "is-string": "^1.0.5" } }, @@ -329,12 +418,9 @@ "dev": true }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "requires": { - "lodash": "^4.17.14" - } + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" }, "asynckit": { "version": "0.4.0", @@ -342,17 +428,93 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "auth0-js": { - "version": "9.13.4", - "resolved": "https://registry.npmjs.org/auth0-js/-/auth0-js-9.13.4.tgz", - "integrity": "sha512-G7wXTtEUe8OG5UMdcFPoS47odorEZ3WerNyWLLhoGlLqYcPgv0t+B0ECHv/rVLULbpctbSBrRFFYa43/bJV4+Q==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/auth0-js/-/auth0-js-9.15.0.tgz", + "integrity": "sha512-LM9gdOeN7yG+F7OWaq8LeJ21GR3ZyKV72+IAN8/MrxPRr7VAMzdvXEsLTx7r9QizHBKfNfXbRoy1AeLQVPJqWQ==", "requires": { "base64-js": "^1.3.0", "idtoken-verifier": "^2.0.3", "js-cookie": "^2.2.0", "qs": "^6.7.0", - "superagent": "^3.8.3", + "superagent": "^5.3.1", "url-join": "^4.0.1", "winchan": "^0.2.2" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "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==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "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.10.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", + "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "requires": { + "side-channel": "^1.0.4" + } + } + } + } } }, "aws-sign2": { @@ -361,16 +523,16 @@ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", - "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==" + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" }, "axios": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.12.0.tgz", - "integrity": "sha1-uQewIhzDTsHJ+sGOx/B935V4W6Q=", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", "requires": { - "follow-redirects": "0.0.7" + "follow-redirects": "^1.10.0" } }, "babel-runtime": { @@ -390,14 +552,14 @@ } }, "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "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==" + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, "basic-auth": { "version": "2.0.1", @@ -416,9 +578,9 @@ } }, "binary-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", - "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, "bluebird": { @@ -477,15 +639,24 @@ "fill-range": "^7.0.1" } }, + "brotli": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.2.tgz", + "integrity": "sha1-UlqcrU/LqWR119OI9q7LE+7VL0Y=", + "dev": true, + "requires": { + "base64-js": "^1.1.2" + } + }, "buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" }, "bunyan": { - "version": "1.8.14", - "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.14.tgz", - "integrity": "sha512-LlahJUxXzZLuw/hetUQJmRgZ1LF6+cr5TPpRj6jf327AsiIq2jhYEH4oqUUkVKTor+9w2BT3oxVwhzE5lw9tcg==", + "version": "1.8.15", + "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.15.tgz", + "integrity": "sha512-0tECWShh6wUysgucJcBAoYegf3JJoZWibxdqhTm7OHPeT42qdjkZ29QCMcKwbgU1kiH+auSIasNRXMLWXafXig==", "requires": { "dtrace-provider": "~0.8", "moment": "^2.19.3", @@ -514,9 +685,9 @@ }, "dependencies": { "get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, "requires": { "pump": "^3.0.0" @@ -530,6 +701,15 @@ } } }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -564,9 +744,9 @@ "dev": true }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -580,20 +760,26 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, + "charset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/charset/-/charset-1.0.1.tgz", + "integrity": "sha512-6dVyOOYjpfFcL1Y4qChrAoQLRHvj2ziyhcm0QJlhOcAhykL/k1kTUPbeo+87MNRTRdk2OIIsIXbuF3x2wi5EXg==", + "dev": true + }, "chokidar": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", - "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", "dev": true, "requires": { "anymatch": "~3.1.1", "braces": "~3.0.2", - "fsevents": "~2.1.2", + "fsevents": "~2.3.1", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", - "readdirp": "~3.3.0" + "readdirp": "~3.5.0" } }, "ci-info": { @@ -603,9 +789,9 @@ "dev": true }, "cli-boxes": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz", - "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", "dev": true }, "cli-cursor": { @@ -617,10 +803,31 @@ "restore-cursor": "^3.1.0" } }, + "cli-progress": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.9.0.tgz", + "integrity": "sha512-g7rLWfhAo/7pF+a/STFH/xPyosaL1zgADhI0OM83hl3c7S43iGvJWEAV2QuDOnQ8i6EMBj/u4+NTd0d5L+4JfA==", + "dev": true, + "requires": { + "colors": "^1.1.2", + "string-width": "^4.2.0" + } + }, + "cli-table3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.0.tgz", + "integrity": "sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ==", + "dev": true, + "requires": { + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^4.2.0" + } + }, "cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true }, "clone-response": { @@ -670,19 +877,14 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "color-string": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz", + "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==", "requires": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" } }, - "colornames": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/colornames/-/colornames-1.1.1.tgz", - "integrity": "sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y=" - }, "colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", @@ -705,6 +907,12 @@ "delayed-stream": "~1.0.0" } }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", @@ -716,9 +924,9 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "config": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/config/-/config-3.3.1.tgz", - "integrity": "sha512-+2/KaaaAzdwUBE3jgZON11L1ggLLhpf2FsGrfqYFHZW22ySGv/HqYIXrBwKKvn+XZh1UBUjHwAcrfsSkSygT+Q==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/config/-/config-3.3.6.tgz", + "integrity": "sha512-Hj5916C5HFawjYJat1epbyY2PlAgLpBtDUlr0MxGLgo3p5+7kylyvnRY18PqJHgnNWXcdd0eWDemT7eYWuFgwg==", "requires": { "json5": "^2.1.1" } @@ -772,9 +980,9 @@ "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==" }, "core-js": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" }, "core-util-is": { "version": "1.0.2", @@ -790,6 +998,52 @@ "vary": "^1" } }, + "cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "requires": { + "cross-spawn": "^7.0.1" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -814,6 +1068,12 @@ "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", "dev": true }, + "csv-parse": { + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.0.tgz", + "integrity": "sha512-Zb4tGPANH4SW0LgC9+s9Mnequs9aqn7N3/pCqNbVjs2XhEF6yWNU2Vm4OGl1v2Go9nw8rXt87Cm2QN/o6Vpqgg==", + "dev": true + }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -822,6 +1082,12 @@ "assert-plus": "^1.0.0" } }, + "dbug": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/dbug/-/dbug-0.4.2.tgz", + "integrity": "sha1-MrSzEF6IYQQ6b5rHVdgOVC02WzE=", + "dev": true + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -901,9 +1167,9 @@ } }, "ignore": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", - "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", "dev": true } } @@ -923,16 +1189,6 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, - "diagnostics": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.1.tgz", - "integrity": "sha512-8wn1PmdunLJ9Tqbx+Fx/ZEuHfJf4NKSN2ZBj7SJC/OWRWha843+WsTjqMe1B5E3p28jqBlp+mJ2fPVxPyNgYKQ==", - "requires": { - "colorspace": "1.1.x", - "enabled": "1.0.x", - "kuler": "1.0.x" - } - }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -943,14 +1199,19 @@ } }, "dot-prop": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", - "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, "requires": { "is-obj": "^2.0.0" } }, + "dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" + }, "dtrace-provider": { "version": "0.8.8", "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz", @@ -1002,12 +1263,9 @@ "dev": true }, "enabled": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/enabled/-/enabled-1.0.2.tgz", - "integrity": "sha1-ll9lE9LC0cX0ZStkouM5ZGf8L5M=", - "requires": { - "env-variable": "0.0.x" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" }, "encodeurl": { "version": "1.0.2", @@ -1023,11 +1281,6 @@ "once": "^1.4.0" } }, - "env-variable": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/env-variable/-/env-variable-0.0.6.tgz", - "integrity": "sha512-bHz59NlBbtS0NhftmR8+ExBEekE7br0e01jw+kk0NDro7TtZzBYZ5ScGPs3OmwnpyfHTHOtr1Y6uedCdrIldtg==" - }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -1046,22 +1299,27 @@ } }, "es-abstract": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", - "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", "dev": true, "requires": { + "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" } }, "es-to-primitive": { @@ -1163,12 +1421,12 @@ } }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "ms": { @@ -1184,17 +1442,17 @@ "dev": true }, "strip-json-comments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", - "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true } } }, "eslint-config-standard": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.0.tgz", - "integrity": "sha512-EF6XkrrGVbvv8hL/kYa/m6vnvmUT+K82pJJc4JJVMM6+Qgqh0pnwprSxdduDLB9p/7bIxD+YV5O0wfb8lmcPbA==", + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.1.tgz", + "integrity": "sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg==", "dev": true }, "eslint-config-standard-jsx": { @@ -1204,9 +1462,9 @@ "dev": true }, "eslint-import-resolver-node": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz", - "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", + "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", "dev": true, "requires": { "debug": "^2.6.9", @@ -1287,9 +1545,9 @@ }, "dependencies": { "ignore": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", - "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", "dev": true }, "semver": { @@ -1335,18 +1593,18 @@ } }, "eslint-plugin-standard": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz", - "integrity": "sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.2.tgz", + "integrity": "sha512-nKptN8l7jksXkwFk++PhJB3cCDTcXOEyhISIN86Ue2feJ1LFyY3PrY3/xT2keXlJSY5bpmbiTG0f885/YKAvTA==", "dev": true }, "eslint-scope": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", - "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "requires": { - "esrecurse": "^4.1.0", + "esrecurse": "^4.3.0", "estraverse": "^4.1.1" } }, @@ -1360,9 +1618,9 @@ } }, "eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true }, "espree": { @@ -1383,29 +1641,37 @@ "dev": true }, "esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "requires": { "estraverse": "^5.1.0" }, "dependencies": { "estraverse": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", - "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", "dev": true } } }, "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "requires": { - "estraverse": "^4.1.0" + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } } }, "estraverse": { @@ -1425,6 +1691,12 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, "express": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", @@ -1483,10 +1755,16 @@ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, + "faker": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/faker/-/faker-5.5.3.tgz", + "integrity": "sha512-wLTv2a28wjUyWkbnX7u/ABZBkUkIF2fCd73V6P2oFqEGEktDfzWx4UxrSqtPRw0xPRAcjeAOIiJWqZm3pP4u3g==", + "dev": true + }, "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-json-stable-stringify": { "version": "2.1.0", @@ -1505,9 +1783,9 @@ "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" }, "fecha": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz", - "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg==" + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.1.tgz", + "integrity": "sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q==" }, "figures": { "version": "3.2.0", @@ -1527,6 +1805,18 @@ "flat-cache": "^2.0.1" } }, + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", + "dev": true + }, + "filesize": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.3.0.tgz", + "integrity": "sha512-ytx0ruGpDHKWVoiui6+BY/QMNngtDQ/pJaFwfBpQif0J63+E8DLdFyqS3NkKQn7vIruUEpoGD9JUJSg7Kp+I0g==", + "dev": true + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -1607,14 +1897,15 @@ "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", "dev": true }, + "fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "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=", - "requires": { - "debug": "^2.2.0", - "stream-consume": "^0.1.0" - } + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz", + "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==" }, "forever-agent": { "version": "0.6.1", @@ -1622,12 +1913,12 @@ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" }, "form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", "requires": { "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", + "combined-stream": "^1.0.8", "mime-types": "^2.1.12" } }, @@ -1652,17 +1943,16 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "optional": true }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "functional-red-black-tree": { "version": "1.0.1", @@ -1670,6 +1960,16 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "get-parameter-names": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/get-parameter-names/-/get-parameter-names-0.3.0.tgz", @@ -1712,21 +2012,21 @@ } }, "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { "is-glob": "^4.0.1" } }, "global-dirs": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz", - "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", + "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", "dev": true, "requires": { - "ini": "^1.3.5" + "ini": "1.3.7" } }, "globals": { @@ -1758,22 +2058,35 @@ } }, "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", "dev": true }, + "handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + } + }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" }, "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", "requires": { - "ajv": "^6.5.5", + "ajv": "^6.12.3", "har-schema": "^2.0.0" } }, @@ -1781,11 +2094,33 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "requires": { "function-bind": "^1.1.1" } }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -1793,10 +2128,9 @@ "dev": true }, "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" }, "has-yarn": { "version": "2.1.0", @@ -1810,9 +2144,9 @@ "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==" }, "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "http-cache-semantics": { @@ -1833,12 +2167,43 @@ "toidentifier": "1.0.0" } }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "requires": { - "assert-plus": "^1.0.0", + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "http-reasons": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/http-reasons/-/http-reasons-0.1.0.tgz", + "integrity": "sha1-qVPKZwB4Zp3eFCzomUAbnW6F07Q=", + "dev": true + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", "jsprim": "^1.2.2", "sshpk": "^1.7.0" } @@ -1848,6 +2213,46 @@ "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-1.4.0.tgz", "integrity": "sha512-JrT3ua+WgH8zBD3HEJYbeEgnuQaAnUeRRko/YojPAJjGmIfGD3KPU/asLdsLwKjfxOmQe5nXMQ0pt/7MyapVbQ==" }, + "httpntlm": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/httpntlm/-/httpntlm-1.7.7.tgz", + "integrity": "sha512-Pv2Rvrz8H0qv1Dne5mAdZ9JegG1uc6Vu5lwLflIY6s8RKHdZQbW39L4dYswSgqMDT0pkJILUTKjeyU0VPNRZjA==", + "dev": true, + "requires": { + "httpreq": ">=0.4.22", + "underscore": "~1.12.1" + } + }, + "httpreq": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/httpreq/-/httpreq-0.5.2.tgz", + "integrity": "sha512-2Jm+x9WkExDOeFRrdBCBSpLPT5SokTcRHkunV3pjKmX/cx6av8zQ0WtHUMDrYb6O4hBFzNU6sxJEypvRUVYKnw==", + "dev": true + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "requires": { + "agent-base": "6", + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -1857,9 +2262,9 @@ } }, "idtoken-verifier": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/idtoken-verifier/-/idtoken-verifier-2.0.3.tgz", - "integrity": "sha512-X1izD2ZTMoo+2tw2RKVUvvCSw2B6UOCNMJ0bgHRH758LFTMwBf4JZfCZm61MPBaBW2CIuhkcSnKCZP6jXpSDmw==", + "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", @@ -1882,9 +2287,9 @@ "dev": true }, "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -1918,27 +2323,27 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", + "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", "dev": true }, "inquirer": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", - "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", "dev": true, "requires": { "ansi-escapes": "^4.2.1", - "chalk": "^3.0.0", + "chalk": "^4.1.0", "cli-cursor": "^3.1.0", - "cli-width": "^2.0.0", + "cli-width": "^3.0.0", "external-editor": "^3.0.3", "figures": "^3.0.0", - "lodash": "^4.17.15", + "lodash": "^4.17.19", "mute-stream": "0.0.8", "run-async": "^2.4.0", - "rxjs": "^6.5.3", + "rxjs": "^6.6.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0", "through": "^2.3.6" @@ -1950,6 +2355,22 @@ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", @@ -1958,9 +2379,80 @@ "requires": { "ansi-regex": "^5.0.0" } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "intel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/intel/-/intel-1.2.0.tgz", + "integrity": "sha1-EdEUfraz9Fgr31M3s31UFYTp5B4=", + "dev": true, + "requires": { + "chalk": "^1.1.0", + "dbug": "~0.4.2", + "stack-trace": "~0.0.9", + "strftime": "~0.10.0", + "symbol": "~0.3.1", + "utcstring": "~0.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true } } }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, "ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -1971,6 +2463,12 @@ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" }, + "is-bigint": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", + "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", + "dev": true + }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -1980,10 +2478,19 @@ "binary-extensions": "^2.0.0" } }, + "is-boolean-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", + "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", "dev": true }, "is-ci": { @@ -1995,6 +2502,15 @@ "ci-info": "^2.0.0" } }, + "is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", @@ -2032,6 +2548,12 @@ "is-path-inside": "^3.0.1" } }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, "is-npm": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", @@ -2044,6 +2566,12 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "dev": true + }, "is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", @@ -2051,30 +2579,25 @@ "dev": true }, "is-path-inside": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", - "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", - "dev": true - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true }, "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", "dev": true, "requires": { - "has": "^1.0.3" + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" } }, "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" }, "is-string": { "version": "1.0.5", @@ -2118,8 +2641,7 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "isstream": { "version": "0.1.2", @@ -2141,6 +2663,12 @@ "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz", "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==" }, + "js-sha512": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha512/-/js-sha512-0.8.0.tgz", + "integrity": "sha512-PWsmefG6Jkodqt+ePTvBZCSMFgN7Clckjd0O7su3I0+BW2QWUTJNzjktHsztGLhncP2h8mcF9V9Y2Ha59pAViQ==", + "dev": true + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -2148,9 +2676,9 @@ "dev": true }, "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -2196,9 +2724,9 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", "requires": { "minimist": "^1.2.5" } @@ -2221,9 +2749,9 @@ }, "dependencies": { "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" } } }, @@ -2239,12 +2767,12 @@ } }, "jsx-ast-utils": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz", - "integrity": "sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz", + "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==", "dev": true, "requires": { - "array-includes": "^3.0.3", + "array-includes": "^3.1.1", "object.assign": "^4.1.0" } }, @@ -2259,62 +2787,41 @@ } }, "jwks-rsa": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-1.8.1.tgz", - "integrity": "sha512-CcE8ypsATHwGmzELwzeFjLzPBXTXTrMmDYbn92LTQwYsZdOedp+ZIuYTofUdrWreu8CKRuXmhk17+6/li2sR6g==", + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-1.12.3.tgz", + "integrity": "sha512-cFipFDeYYaO9FhhYJcZWX/IyZgc0+g316rcHnDpT2dNRNIE/lMOmWKKqp09TkJoYlNFzrEVODsR4GgXJMgWhnA==", "requires": { "@types/express-jwt": "0.0.42", - "axios": "^0.19.2", + "axios": "^0.21.1", "debug": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", "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.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - }, - "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==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "requires": { - "debug": "=3.1.0" + "ms": "2.1.2" }, "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=" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" } } }, @@ -2337,12 +2844,9 @@ } }, "kuler": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/kuler/-/kuler-1.0.1.tgz", - "integrity": "sha512-J9nVUucG1p/skKul6DU3PUZrhs0LPulNaeUOox0IyXDi8S4CztTHs1gQphhuZmzXG7VOQSf6NJfKuzteQLv9gQ==", - "requires": { - "colornames": "^1.1.1" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" }, "latest-version": { "version": "5.1.0", @@ -2393,6 +2897,12 @@ "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" }, + "liquid-json": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/liquid-json/-/liquid-json-0.3.1.tgz", + "integrity": "sha1-kVWhgTbYprJhXl8W+aJEira1Duo=", + "dev": true + }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", @@ -2416,9 +2926,9 @@ } }, "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "lodash.clonedeep": { "version": "4.5.0", @@ -2461,21 +2971,21 @@ "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" }, "logform": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.1.2.tgz", - "integrity": "sha512-+lZh4OpERDBLqjiwDLpAWNQu6KMjnlXH2ByZwCuSqVPJletw0kTWJf5CgSNAUKn1KUkv3m2cUz/LK8zyEy7wzQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.2.0.tgz", + "integrity": "sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg==", "requires": { "colors": "^1.2.1", "fast-safe-stringify": "^2.0.4", - "fecha": "^2.3.3", + "fecha": "^4.2.0", "ms": "^2.1.1", "triple-beam": "^1.3.0" }, "dependencies": { "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" } } }, @@ -2495,27 +3005,42 @@ "dev": true }, "lru-cache": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz", - "integrity": "sha1-HRdnnAac2l0ECZGgnbwsDbN35V4=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "requires": { - "pseudomap": "^1.0.1", - "yallist": "^2.0.0" + "yallist": "^4.0.0" } }, "lru-memoizer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.1.2.tgz", - "integrity": "sha512-N5L5xlnVcbIinNn/TJ17vHBZwBMt9t7aJDz2n97moWubjNl6VO9Ao2XuAGBBddkYdjrwR9HfzXbT6NfMZXAZ/A==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.1.4.tgz", + "integrity": "sha512-IXAq50s4qwrOBrXJklY+KhgZF+5y98PDaNo0gi/v2KQBFLyWr+JyFvijZXkGKjQj/h9c0OwoE+JZbwUXce76hQ==", "requires": { "lodash.clonedeep": "^4.5.0", "lru-cache": "~4.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz", + "integrity": "sha1-HRdnnAac2l0ECZGgnbwsDbN35V4=", + "requires": { + "pseudomap": "^1.0.1", + "yallist": "^2.0.0" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + } } }, "make-dir": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", - "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { "semver": "^6.0.0" @@ -2555,16 +3080,25 @@ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { - "version": "1.43.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", - "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==" + "version": "1.47.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", + "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==" + }, + "mime-format": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mime-format/-/mime-format-2.0.1.tgz", + "integrity": "sha512-XxU3ngPbEnrYnNbIX+lYSaYg0M01v6p2ntd2YaFksTu0vayaw5OJvbdRyWs07EYRlLED5qadUZ+xo+XhOvFhwg==", + "dev": true, + "requires": { + "charset": "^1.0.0" + } }, "mime-types": { - "version": "2.1.26", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", - "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "version": "2.1.30", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", + "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", "requires": { - "mime-db": "1.43.0" + "mime-db": "1.47.0" } }, "mimic-fn": { @@ -2601,9 +3135,9 @@ } }, "moment": { - "version": "2.27.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", - "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==", + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", "optional": true }, "morgan": { @@ -2648,9 +3182,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": { @@ -2670,15 +3204,131 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, "neo4j-driver": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/neo4j-driver/-/neo4j-driver-4.0.2.tgz", - "integrity": "sha512-xQN4BZZsweaNNac7FDYAV6f/JybghwY3lk4fwblS8V5KQ+DBMPe4Pthh672mp+wEYZGyzPalq5CfpcBrWaZ4Gw==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/neo4j-driver/-/neo4j-driver-4.2.3.tgz", + "integrity": "sha512-HCJ7+J5V/5yhP+b6G2zTb7SKlAN/oLYaMkD8Bo8L9veScDtgDHBlbkbYEHf1YSAd67OfjZKeF9l84J8Kjdw91g==", "requires": { "@babel/runtime": "^7.5.5", - "rxjs": "^6.5.2", + "rxjs": "^6.6.3", "text-encoding-utf-8": "^1.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.0" + } + }, + "newman": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/newman/-/newman-5.2.4.tgz", + "integrity": "sha512-RFo3Bteh8CMDD4/eld+ItQ1trrtLN9Mlwk/6mnk2/lBKG08U+ysREwk8Jy74X+a0vmpVCljlGk5MifdcCdkkRg==", + "dev": true, + "requires": { + "async": "3.2.0", + "chardet": "1.3.0", + "cli-progress": "3.9.0", + "cli-table3": "0.6.0", + "colors": "1.4.0", + "commander": "7.2.0", + "csv-parse": "4.16.0", + "eventemitter3": "4.0.7", + "filesize": "6.3.0", + "lodash": "4.17.21", + "mkdirp": "1.0.4", + "postman-collection": "4.0.0", + "postman-collection-transformer": "4.1.2", + "postman-request": "2.88.1-postman.30", + "postman-runtime": "7.28.2", + "pretty-ms": "7.0.1", + "semver": "7.3.5", + "serialised-error": "1.1.3", + "tough-cookie": "3.0.1", + "word-wrap": "1.2.3", + "xmlbuilder": "15.1.1" + }, + "dependencies": { + "chardet": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-1.3.0.tgz", + "integrity": "sha512-cyTQGGptIjIT+CMGT5J/0l9c6Fb+565GCFjjeUTKxUO7w3oR+FcNCMEKTn5xtVKaLFmladN7QF68IiQsv5Fbdw==", + "dev": true + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "dev": true, + "requires": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } + } + }, + "newman-reporter-html": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/newman-reporter-html/-/newman-reporter-html-1.0.5.tgz", + "integrity": "sha512-Kz8ejzJqDaasyqNuP8F7bBYzsts7JP3wBfdRQDOYPCUchVQF63KsbxtxbGadyzOeXcZsXs6YT3pe4FFlN51jcw==", + "dev": true, + "requires": { + "filesize": "6.0.1", + "handlebars": "4.5.3", + "lodash": "4.17.15", + "pretty-ms": "5.1.0" + }, + "dependencies": { + "filesize": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.0.1.tgz", + "integrity": "sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg==", + "dev": true + }, + "handlebars": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz", + "integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==", + "dev": true, + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "pretty-ms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-5.1.0.tgz", + "integrity": "sha512-4gaK1skD2gwscCfkswYQRmddUb2GJZtzDGRjHWadVHtK/DIKFufa12MvES6/xu1tVbUYeia5bmLcwJtZJQUqnw==", + "dev": true, + "requires": { + "parse-ms": "^2.1.0" + } + } } }, "nice-try": { @@ -2687,10 +3337,16 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node-oauth1": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/node-oauth1/-/node-oauth1-1.3.0.tgz", + "integrity": "sha512-0yggixNfrA1KcBwvh/Hy2xAS1Wfs9dcg6TdFf2zN7gilcAigMdrtZ4ybrBSXBgLvGDw9V1p2MRnGBMq7XjTWLg==", + "dev": true + }, "nodemon": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.3.tgz", - "integrity": "sha512-lLQLPS90Lqwc99IHe0U94rDgvjo+G9I4uEIxRG3evSLROcqQ9hwc0AxlSHKS4T1JW/IMj/7N5mthiN58NL/5kw==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.7.tgz", + "integrity": "sha512-XHzK69Awgnec9UzHr1kc8EomQh4sjTQ8oRf8TsGrSmHDx9/UmiGG9E/mM3BuTfNeFwdNBvrqQq/RHL0xIeyFOA==", "dev": true, "requires": { "chokidar": "^3.2.2", @@ -2701,23 +3357,23 @@ "semver": "^5.7.1", "supports-color": "^5.5.0", "touch": "^3.1.0", - "undefsafe": "^2.0.2", - "update-notifier": "^4.0.0" + "undefsafe": "^2.0.3", + "update-notifier": "^4.1.0" }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" } }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true } } @@ -2765,12 +3421,17 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, - "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", "dev": true }, + "object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==" + }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -2778,50 +3439,50 @@ "dev": true }, "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" } }, "object.entries": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz", - "integrity": "sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.3.tgz", + "integrity": "sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==", "dev": true, "requires": { + "call-bind": "^1.0.0", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", + "es-abstract": "^1.18.0-next.1", "has": "^1.0.3" } }, "object.fromentries": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz", - "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.4.tgz", + "integrity": "sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ==", "dev": true, "requires": { + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", + "es-abstract": "^1.18.0-next.2", "has": "^1.0.3" } }, "object.values": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", - "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", + "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", "dev": true, "requires": { + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", + "es-abstract": "^1.18.0-next.2", "has": "^1.0.3" } }, @@ -2847,19 +3508,46 @@ } }, "one-time": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz", - "integrity": "sha1-+M33eISCb+Tf+T46nMN7HkSAdC4=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "requires": { + "fn.name": "1.x.x" + } }, "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "requires": { "mimic-fn": "^2.1.0" } }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } + } + }, "optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", @@ -2948,6 +3636,12 @@ "error-ex": "^1.2.0" } }, + "parse-ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz", + "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==", + "dev": true + }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -2996,9 +3690,9 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", + "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==", "dev": true }, "pify": { @@ -3045,76 +3739,303 @@ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "dev": true + } + } + }, + "pkg-config": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz", + "integrity": "sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=", + "dev": true, + "requires": { + "debug-log": "^1.0.0", + "find-root": "^1.0.0", + "xtend": "^4.0.1" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "postman-collection": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postman-collection/-/postman-collection-4.0.0.tgz", + "integrity": "sha512-vDrXG/dclSu6RMqPqBz4ZqoQBwcj/a80sJYsQZmzWJ6dWgXiudPhwu6Vm3C1Hy7zX5W8A6am1Z6vb/TB4eyURA==", + "dev": true, + "requires": { + "faker": "5.5.3", + "file-type": "3.9.0", + "http-reasons": "0.1.0", + "iconv-lite": "0.6.3", + "liquid-json": "0.3.1", + "lodash": "4.17.21", + "mime-format": "2.0.1", + "mime-types": "2.1.31", + "postman-url-encoder": "3.0.1", + "semver": "7.3.5", + "uuid": "8.3.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "mime-db": { + "version": "1.48.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", + "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.31", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", + "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", + "dev": true, + "requires": { + "mime-db": "1.48.0" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + } + } + }, + "postman-collection-transformer": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postman-collection-transformer/-/postman-collection-transformer-4.1.2.tgz", + "integrity": "sha512-3mRM18QALmasbza1LznlwQkymAYM0H79VY1LkR1BUAe8B7hwELofltMNSmpDn27MPGf0w9rPJJOcRSI3MWCCZg==", + "dev": true, + "requires": { + "commander": "7.2.0", + "inherits": "2.0.4", + "intel": "1.2.0", + "lodash": "4.17.21", + "semver": "7.3.5", + "strip-json-comments": "3.1.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + } + } + }, + "postman-request": { + "version": "2.88.1-postman.30", + "resolved": "https://registry.npmjs.org/postman-request/-/postman-request-2.88.1-postman.30.tgz", + "integrity": "sha512-zsGvs8OgNeno1Q44zTgGP2IL7kCqUy4DAtl8/ms0AQpqkIoysrxzR/Zg4kM1Kz8/duBvwxt8NN717wB7SMNm6w==", + "dev": true, + "requires": { + "@postman/form-data": "~3.1.1", + "@postman/tunnel-agent": "^0.6.3", + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "brotli": "~1.3.2", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "har-validator": "~5.1.3", + "http-signature": "~1.3.1", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "stream-length": "^1.0.2", + "tough-cookie": "~2.5.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "http-signature": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.5.tgz", + "integrity": "sha512-NwoTQYSJoFt34jSBbwzDHDofoA61NGXzu6wXh95o1Ry62EnmKjXb/nR/RknLeZ3G/uGwrlKNY2z7uPt+Cdl7Tw==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.14.1" } }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + } + } + }, + "postman-runtime": { + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/postman-runtime/-/postman-runtime-7.28.2.tgz", + "integrity": "sha512-YjcJwipcOfDFMOTM1/z9t/UB1zhF3ONZuffGhaP+FMG9aDAH2J1moO+PuUbLIcddggWR9ljtDk+O3TBxBmmvtQ==", + "dev": true, + "requires": { + "async": "2.6.3", + "aws4": "1.11.0", + "eventemitter3": "4.0.7", + "handlebars": "4.7.7", + "http-reasons": "0.1.0", + "httpntlm": "1.7.7", + "inherits": "2.0.4", + "js-sha512": "0.8.0", + "lodash": "4.17.21", + "node-oauth1": "1.3.0", + "performance-now": "2.1.0", + "postman-collection": "4.0.0", + "postman-request": "2.88.1-postman.30", + "postman-sandbox": "4.0.3", + "postman-url-encoder": "3.0.1", + "resolve-from": "5.0.0", + "serialised-error": "1.1.3", + "tough-cookie": "3.0.1", + "uuid": "3.4.0" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", "dev": true, "requires": { - "p-try": "^2.0.0" + "lodash": "^4.17.14" } }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", "dev": true, "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", - "dev": true } } }, - "pkg-config": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz", - "integrity": "sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=", + "postman-sandbox": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postman-sandbox/-/postman-sandbox-4.0.3.tgz", + "integrity": "sha512-FCPJsiyxCKU0Rtyz9SnXXCzR54LUlln8u913JHyt0SkqMEbM/Y0qe+6m8zRt/SPxx+rzAZOqWfrCk5oiDyuTsg==", "dev": true, "requires": { - "debug-log": "^1.0.0", - "find-root": "^1.0.0", - "xtend": "^4.0.1" + "lodash": "4.17.21", + "teleport-javascript": "1.0.0", + "uvm": "2.0.2" } }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "postman-url-encoder": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/postman-url-encoder/-/postman-url-encoder-3.0.1.tgz", + "integrity": "sha512-dMPqXnkDlstM2Eya+Gw4MIGWEan8TzldDcUKZIhZUsJ/G5JjubfQPhFhVWKzuATDMvwvrWbSjF+8VmAvbu6giw==", "dev": true, "requires": { - "find-up": "^2.1.0" + "punycode": "^2.1.1" } }, "precond": { @@ -3134,6 +4055,15 @@ "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", "dev": true }, + "pretty-ms": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", + "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==", + "dev": true, + "requires": { + "parse-ms": "^2.1.0" + } + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -3165,6 +4095,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", @@ -3176,9 +4111,9 @@ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, "pstree.remy": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.7.tgz", - "integrity": "sha512-xsMgrUwRpuGskEzBFkH8NmTimbZ5PcPup0LA8JJkHIm2IMUbQcpo3yeLNWVrufEYjh8YwtSVh0xz6UeWc5Oh5A==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", "dev": true }, "pump": { @@ -3197,9 +4132,9 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "pupa": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.0.1.tgz", - "integrity": "sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", "dev": true, "requires": { "escape-goat": "^2.0.0" @@ -3210,6 +4145,12 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, "r7insight_node": { "version": "1.8.4", "resolved": "https://registry.npmjs.org/r7insight_node/-/r7insight_node-1.8.4.tgz", @@ -3305,12 +4246,12 @@ } }, "readdirp": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", - "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", "dev": true, "requires": { - "picomatch": "^2.0.7" + "picomatch": "^2.2.1" } }, "reconnect-core": { @@ -3322,9 +4263,9 @@ } }, "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==" + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" }, "regexpp": { "version": "2.0.1", @@ -3333,9 +4274,9 @@ "dev": true }, "registry-auth-token": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.1.1.tgz", - "integrity": "sha512-9bKS7nTl9+/A1s7tnPeGrUpRcVY+LUh7bfFgzpndALdPfXQBfQV77rQVtqgUV3ti4vc/Ik81Ex8UJDWDQ12zQA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", "dev": true, "requires": { "rc": "^1.2.8" @@ -3395,11 +4336,12 @@ } }, "resolve": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.16.1.tgz", - "integrity": "sha512-rmAglCSqWWMrrBv/XM6sW0NuRFiKViw/W4d9EbC4pt+49H8JwHy+mcGmALTEg504AUDcLTvb1T2q3E9AnmY+ig==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } }, @@ -3438,24 +4380,24 @@ } }, "run-async": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", - "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "requires": { - "is-promise": "^2.1.0" + "queue-microtask": "^1.2.2" } }, - "run-parallel": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", - "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", - "dev": true - }, "rxjs": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", - "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "requires": { "tslib": "^1.9.0" } @@ -3476,6 +4418,11 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "save-dev": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/save-dev/-/save-dev-0.0.1-security.tgz", + "integrity": "sha512-k6knZTDNK8PKKbIqnvxiOveJinuw2LcQjqDoaorZWP9M5AR2EPsnpDeSbeoZZ0pHr5ze1uoaKdK8NBGQrJ34Uw==" + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -3525,6 +4472,25 @@ } } }, + "serialised-error": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/serialised-error/-/serialised-error-1.1.3.tgz", + "integrity": "sha512-vybp3GItaR1ZtO2nxZZo8eOo7fnVaNtP3XE2vJKgzkKR2bagCkdJ1EpYYhEMd3qu/80DwQk9KjsNSxE3fXWq0g==", + "dev": true, + "requires": { + "object-hash": "^1.1.2", + "stack-trace": "0.0.9", + "uuid": "^3.0.0" + }, + "dependencies": { + "stack-trace": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", + "integrity": "sha1-qPbq7KkGdMMz58Q5U/J1tFFRBpU=", + "dev": true + } + } + }, "serve-static": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", @@ -3556,6 +4522,16 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, "signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", @@ -3592,10 +4568,16 @@ } } }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -3609,9 +4591,9 @@ "dev": true }, "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -3619,9 +4601,9 @@ } }, "spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", + "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", "dev": true }, "sprintf-js": { @@ -3658,13 +4640,13 @@ "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" }, "standard": { - "version": "14.3.3", - "resolved": "https://registry.npmjs.org/standard/-/standard-14.3.3.tgz", - "integrity": "sha512-HBEAD5eVXrr2o/KZ3kU8Wwaxw90wzoq4dOQe6vlRnPoQ6stn4LCLRLBBDp0CjH/aOTL9bDZJbRUOZcBaBnNJ0A==", + "version": "14.3.4", + "resolved": "https://registry.npmjs.org/standard/-/standard-14.3.4.tgz", + "integrity": "sha512-+lpOkFssMkljJ6eaILmqxHQ2n4csuEABmcubLTb9almFi1ElDzXb1819fjf/5ygSyePCq4kU2wMdb2fBfb9P9Q==", "dev": true, "requires": { "eslint": "~6.8.0", - "eslint-config-standard": "14.1.0", + "eslint-config-standard": "14.1.1", "eslint-config-standard-jsx": "8.1.0", "eslint-plugin-import": "~2.18.0", "eslint-plugin-node": "~10.0.0", @@ -3675,14 +4657,14 @@ } }, "standard-engine": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-12.0.0.tgz", - "integrity": "sha512-gJIIRb0LpL7AHyGbN9+hJ4UJns37lxmNTnMGRLC8CFrzQ+oB/K60IQjKNgPBCB2VP60Ypm6f8DFXvhVWdBOO+g==", + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-12.1.0.tgz", + "integrity": "sha512-DVJnWM1CGkag4ucFLGdiYWa5/kJURPONmMmk17p8FT5NE4UnPZB1vxWnXnRo2sPSL78pWJG8xEM+1Tu19z0deg==", "dev": true, "requires": { - "deglob": "^4.0.0", + "deglob": "^4.0.1", "get-stdin": "^7.0.0", - "minimist": "^1.1.0", + "minimist": "^1.2.5", "pkg-conf": "^3.1.0" } }, @@ -3696,10 +4678,33 @@ "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.1.tgz", "integrity": "sha512-tNa3hzgkjEP7XbCkbRXe1jpg+ievoa0O4SCFlMOYEscGSS4JJsckGL8swUyAa/ApGU3Ae4t6Honor4HhL+tRyg==" }, + "stream-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-length/-/stream-length-1.0.2.tgz", + "integrity": "sha1-gnfzy+5JpNqrz9tOL0qbXp8snwA=", + "dev": true, + "requires": { + "bluebird": "^2.6.2" + }, + "dependencies": { + "bluebird": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", + "integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=", + "dev": true + } + } + }, + "strftime": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/strftime/-/strftime-0.10.0.tgz", + "integrity": "sha1-s/D6QZKVICpaKJ9ta+n0kJphcZM=", + "dev": true + }, "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { "emoji-regex": "^8.0.0", @@ -3737,45 +4742,23 @@ } }, "string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "string.prototype.trimleft": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", - "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimstart": "^1.0.0" - } - }, - "string.prototype.trimright": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", - "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimend": "^1.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "string.prototype.trimstart": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "string_decoder": { @@ -3808,34 +4791,66 @@ "dev": true }, "superagent": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", - "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", - "requires": { - "component-emitter": "^1.2.0", - "cookiejar": "^2.1.0", - "debug": "^3.1.0", - "extend": "^3.0.0", - "form-data": "^2.3.1", - "formidable": "^1.2.0", - "methods": "^1.1.1", - "mime": "^1.4.1", - "qs": "^6.5.1", - "readable-stream": "^2.3.5" + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-6.1.0.tgz", + "integrity": "sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg==", + "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": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, + "mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==" + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "qs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", + "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "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==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } } } }, @@ -3849,18 +4864,24 @@ } }, "swagger-ui-dist": { - "version": "3.37.0", - "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-3.37.0.tgz", - "integrity": "sha512-ySYfsGTSxuyIAAynncQew9WLRsKu6bI3/tWTqcuXYSqTLCjz3ROtUbNj2zRNs7i37V8CteKE9CUMkYnNklGi2g==" + "version": "3.47.1", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-3.47.1.tgz", + "integrity": "sha512-7b9iHDC/GGC9SJLd3HiV/3EnsJ3wu7xN8Q4MpOPfQO8UG7TQFG2TMTDkvvy0SNeqxQY0tGQY0ppZC9a95tW3kg==" }, "swagger-ui-express": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-4.1.5.tgz", - "integrity": "sha512-hs9OqBu2jwmhYyFUhdTiwurvbZC+bq2XnWmmbYymVdwhgJCcGkLdnqymX24ZYUve2nkYSvKPEDCo20ZF+vyw9A==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-4.1.6.tgz", + "integrity": "sha512-Xs2BGGudvDBtL7RXcYtNvHsFtP1DBFPMJFRxHe5ez/VG/rzVOEjazJOOSc/kSCyxreCTKfJrII6MJlL9a6t8vw==", "requires": { "swagger-ui-dist": "^3.18.1" } }, + "symbol": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/symbol/-/symbol-0.3.1.tgz", + "integrity": "sha1-tvmpANSWpX8CQI8iGYwQndoGMEE=", + "dev": true + }, "table": { "version": "5.4.6", "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", @@ -3886,6 +4907,37 @@ } } }, + "tc-api-testing-lib": { + "version": "github:topcoder-platform/api-automated-testing#79e62f50bd2e80f5aba3a3acc41af9ffbfbfa405", + "from": "github:topcoder-platform/api-automated-testing", + "dev": true, + "requires": { + "axios": "^0.21.1", + "config": "^3.3.6", + "handlebars": "^4.7.7", + "joi": "^17.4.0", + "lodash": "^4.17.21", + "newman": "^5.2.3", + "newman-reporter-html": "^1.0.5", + "tc-core-library-js": "github:appirio-tech/tc-core-library-js#v2.6.4", + "winston": "^3.3.3" + }, + "dependencies": { + "joi": { + "version": "17.4.1", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.4.1.tgz", + "integrity": "sha512-gDPOwQ5sr+BUxXuPDGrC1pSNcVR/yGGcTI0aCnjYxZEa3za60K/iCQ+OFIkEHWZGVCUcUlXlFKvMmrlmxrG6UQ==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.0", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + } + } + }, "tc-bus-api-wrapper": { "version": "github:topcoder-platform/tc-bus-api-wrapper#db1b5b9774ec994657f6f02e3d12b4bd8b679aaf", "from": "github:topcoder-platform/tc-bus-api-wrapper#feature/auth0-proxy-server", @@ -3893,9 +4945,36 @@ "joi": "^13.4.0", "lodash": "^4.17.10", "superagent": "^3.8.3", - "tc-core-library-js": "github:appirio-tech/tc-core-library-js#d16413db30b1eed21c0cf426e185bedb2329ddab" + "tc-core-library-js": "github:appirio-tech/tc-core-library-js#v2.6" }, "dependencies": { + "axios": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.12.0.tgz", + "integrity": "sha1-uQewIhzDTsHJ+sGOx/B935V4W6Q=", + "requires": { + "follow-redirects": "0.0.7" + } + }, + "follow-redirects": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz", + "integrity": "sha1-NLkLqyqRGqNHVx2pDyK9NuzYqRk=", + "requires": { + "debug": "^2.2.0", + "stream-consume": "^0.1.0" + } + }, + "form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, "hoek": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/hoek/-/hoek-5.0.4.tgz", @@ -3911,6 +4990,38 @@ "topo": "3.x.x" } }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "superagent": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", + "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", + "requires": { + "component-emitter": "^1.2.0", + "cookiejar": "^2.1.0", + "debug": "^3.1.0", + "extend": "^3.0.0", + "form-data": "^2.3.1", + "formidable": "^1.2.0", + "methods": "^1.1.1", + "mime": "^1.4.1", + "qs": "^6.5.1", + "readable-stream": "^2.3.5" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, "tc-core-library-js": { "version": "github:appirio-tech/tc-core-library-js#d16413db30b1eed21c0cf426e185bedb2329ddab", "from": "github:appirio-tech/tc-core-library-js#v2.6", @@ -3968,10 +5079,16 @@ } } }, + "teleport-javascript": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/teleport-javascript/-/teleport-javascript-1.0.0.tgz", + "integrity": "sha512-j1llvWVFyEn/6XIFDfX5LAU43DXe0GCt3NfXDwJ8XpRRMkS+i50SAkonAONBy+vxwPFBd50MFU8a2uj8R/ccLg==", + "dev": true + }, "term-size": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz", - "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", + "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", "dev": true }, "text-encoding-utf-8": { @@ -4057,9 +5174,9 @@ "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" }, "tslib": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", - "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "tunnel-agent": { "version": "0.6.0", @@ -4107,6 +5224,25 @@ "is-typedarray": "^1.0.0" } }, + "uglify-js": { + "version": "3.13.10", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.10.tgz", + "integrity": "sha512-57H3ACYFXeo1IaZ1w02sfA71wI60MGco/IQFjOqK+WtKoprh7Go2/yvd2HPtoJILO2Or84ncLccI4xoHMTSbGg==", + "dev": true, + "optional": true + }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, "undefsafe": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", @@ -4116,10 +5252,16 @@ "debug": "^2.2.0" } }, + "underscore": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", + "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==", + "dev": true + }, "unfetch": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.1.0.tgz", - "integrity": "sha512-crP/n3eAPUJxZXM9T80/yv0YhkTEx2K1D3h7D1AJM6fzsWZrxdyRuLN0JH/dkZh1LNH8LxCnBzoPFCPbb2iGpg==" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", + "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==" }, "uniq": { "version": "1.0.1", @@ -4142,9 +5284,9 @@ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, "update-notifier": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.0.tgz", - "integrity": "sha512-w3doE1qtI0/ZmgeoDoARmI5fjDoT93IfKgEGqm26dGUOh8oNpaSTsGNdYRN/SjOuo10jcJGwkEL3mroKzktkew==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", + "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", "dev": true, "requires": { "boxen": "^4.2.0", @@ -4163,9 +5305,9 @@ } }, "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "requires": { "punycode": "^2.1.0" } @@ -4184,6 +5326,12 @@ "prepend-http": "^2.0.0" } }, + "utcstring": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/utcstring/-/utcstring-0.1.0.tgz", + "integrity": "sha1-Qw/VEKt/yVtdWRDJAteYgMIIQ2s=", + "dev": true + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -4204,10 +5352,27 @@ "resolved": "https://registry.npmjs.org/uuid-validate/-/uuid-validate-0.0.3.tgz", "integrity": "sha512-Fykw5U4eZESbq739BeLvEBFRuJODfrlmjx5eJux7W817LjRaq4b7/i4t2zxQmhcX+fAj4nMfRdTzO4tmwLKn0w==" }, + "uvm": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/uvm/-/uvm-2.0.2.tgz", + "integrity": "sha512-Ra+aPiS5GXAbwXmyNExqdS42sTqmmx4XWEDF8uJlsTfOkKf9Rd9xNgav1Yckv4HfVEZg4iOFODWHFYuJ+9Fzfg==", + "dev": true, + "requires": { + "flatted": "3.1.1" + }, + "dependencies": { + "flatted": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "dev": true + } + } + }, "v8-compile-cache": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", - "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, "validate-npm-package-license": { @@ -4244,6 +5409,19 @@ "isexe": "^2.0.0" } }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, "widest-line": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", @@ -4259,19 +5437,19 @@ "integrity": "sha512-pvN+IFAbRP74n/6mc6phNyCH8oVkzXsto4KCHPJ2AScniAnA1AmeLI03I2BzjePpaClGSI4GUMowzsD3qz5PRQ==" }, "winston": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.2.1.tgz", - "integrity": "sha512-zU6vgnS9dAWCEKg/QYigd6cgMVVNwyTzKs81XZtTFuRwJOcDdBg7AU0mXVyNbs7O5RH2zdv+BdNZUlx7mXPuOw==", - "requires": { - "async": "^2.6.1", - "diagnostics": "^1.1.1", - "is-stream": "^1.1.0", - "logform": "^2.1.1", - "one-time": "0.0.4", - "readable-stream": "^3.1.1", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz", + "integrity": "sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==", + "requires": { + "@dabh/diagnostics": "^2.0.2", + "async": "^3.1.0", + "is-stream": "^2.0.0", + "logform": "^2.2.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", "stack-trace": "0.0.x", "triple-beam": "^1.3.0", - "winston-transport": "^4.3.0" + "winston-transport": "^4.4.0" }, "dependencies": { "readable-stream": { @@ -4287,11 +5465,11 @@ } }, "winston-transport": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.3.0.tgz", - "integrity": "sha512-B2wPuwUi3vhzn/51Uukcao4dIduEiPOcOt9HJ3QeaXgkJ5Z7UwpBzxS4ZGNHtrxrUvTwemsQiSys0ihOf8Mp1A==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.0.tgz", + "integrity": "sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==", "requires": { - "readable-stream": "^2.3.6", + "readable-stream": "^2.3.7", "triple-beam": "^1.2.0" } }, @@ -4301,6 +5479,12 @@ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -4333,6 +5517,12 @@ "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", "dev": true }, + "xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "dev": true + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -4340,9 +5530,9 @@ "dev": true }, "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yamljs": { "version": "0.3.0", diff --git a/package.json b/package.json index 3c558e1..0c741d4 100644 --- a/package.json +++ b/package.json @@ -7,18 +7,24 @@ "start": "node app.js", "dev": "nodemon app.js", "lint": "standard", - "lint:fix": "standard --fix" + "lint:fix": "standard --fix", + "test:newman": "cross-env NODE_ENV=test node test/postman/newman.js", + "test:newman:clear": "node test/postman/clearTestData.js" }, "author": "Topcoder", "devDependencies": { "nodemon": "^2.0.1", - "standard": "^14.3.1" + "standard": "^14.3.1", + "tc-api-testing-lib": "github:topcoder-platform/api-automated-testing" }, "dependencies": { + "axios": "^0.21.1", "bluebird": "^3.7.2", "body-parser": "^1.19.0", "config": "^3.2.4", "cors": "^2.7.1", + "cross-env": "^7.0.3", + "dotenv": "^10.0.0", "express": "^4.17.1", "get-parameter-names": "^0.3.0", "http-status-codes": "^1.4.0", @@ -27,6 +33,8 @@ "lodash": "^4.17.19", "morgan": "^1.7.0", "neo4j-driver": "^4.0.2", + "save-dev": "0.0.1-security", + "superagent": "^6.1.0", "swagger-ui-express": "^4.1.5", "tc-bus-api-wrapper": "topcoder-platform/tc-bus-api-wrapper.git#feature/auth0-proxy-server", "tc-core-library-js": "appirio-tech/tc-core-library-js.git#v2.6.4", diff --git a/src/common/helper.js b/src/common/helper.js index 02635fb..3b668f4 100644 --- a/src/common/helper.js +++ b/src/common/helper.js @@ -9,7 +9,9 @@ const neo4j = require('neo4j-driver') const querystring = require('querystring') const uuid = require('uuid/v4') const validate = require('uuid-validate') - +const m2mAuth = require('tc-core-library-js').auth.m2m +const m2m = m2mAuth(_.pick(config, ['AUTH0_URL', 'AUTH0_AUDIENCE', 'TOKEN_CACHE_TIME', 'AUTH0_PROXY_SERVER_URL'])) +const request = require('superagent') const errors = require('./errors') const logger = require('./logger') const constants = require('../../app-constants') @@ -378,6 +380,23 @@ async function deleteGroup (tx, group) { return groupsToDelete } +/** + * Uses superagent to proxy post request + * @param {String} url the url + * @param {Object} data the query parameters, optional + * @returns {Object} the response + */ + async function postRequest (url, data) { + const m2mToken = await m2m.getMachineToken(config.AUTH0_CLIENT_ID, config.AUTH0_CLIENT_SECRET) + + return request + .post(url) + .set('Authorization', `Bearer ${m2mToken}`) + .set('Content-Type', 'application/json') + .set('Accept', 'application/json') + .send(data) +} + module.exports = { wrapExpress, autoWrapExpress, @@ -391,6 +410,7 @@ module.exports = { hasAdminRole, hasGroupRole, postBusEvent, + postRequest, createGroup, deleteGroup } diff --git a/src/controllers/CleanUpController.js b/src/controllers/CleanUpController.js new file mode 100644 index 0000000..43ae52e --- /dev/null +++ b/src/controllers/CleanUpController.js @@ -0,0 +1,19 @@ +/** + * Controller for cleaning up test data + */ + + const service = require('../services/CleanUpService') + + /** + * Get all resources of a challenge + * @param {Object} req the request + * @param {Object} res the response + */ + async function cleanUpTestData (req, res) { + await service.cleanUpTestData() + res.sendStatus(200) + } + + module.exports = { + cleanUpTestData + } \ No newline at end of file diff --git a/src/routes.js b/src/routes.js index 911f730..1c5cc29 100644 --- a/src/routes.js +++ b/src/routes.js @@ -21,6 +21,15 @@ module.exports = { scopes: ['write:groups', 'all:groups'] } }, + '/groups/internal/jobs/clean':{ + post: { + controller: 'CleanUpController', + method: 'cleanUpTestData', + auth: 'jwt', + access: [constants.UserRoles.Admin], + scopes: ['all:groups'] + } + }, '/groups/health': { get: { controller: 'HealthController', diff --git a/src/services/CleanUpService.js b/src/services/CleanUpService.js new file mode 100644 index 0000000..11edf1a --- /dev/null +++ b/src/services/CleanUpService.js @@ -0,0 +1,44 @@ +/** + * This service provides operations to clean up the environment for running automated tests. + */ + + const _ = require('lodash') + const config = require('config') + const helper = require('../common/helper') + const logger = require('../common/logger') + + + + + + /** + * Clear the postman test data. The main function of this class. + * @returns {Promise} + */ + const cleanUpTestData = async () => { + logger.info('clear the test data from postman test!') + const session = await helper.createDBSession() + try { + + // delete groups + await session.run(`MATCH (g:Group)-[r:GroupContains]->(o) WHERE g.name =~ '(?i)${config.AUTOMATED_TESTING_NAME_PREFIX}.*' DELETE g,r,o`) + + // delete empty test groups + await session.run(`MATCH (g:Group) WHERE g.name =~ '(?i)${config.AUTOMATED_TESTING_NAME_PREFIX}.*' DELETE g`) + + // delete users with no relations + await session.run(`MATCH (u:User) WHERE NOT (:Group)-[:GroupContains]->(u) DELETE u`) + + logger.info('clear the test data from postman test completed!') + } + catch(err) { + logger.debug('could not complete cleanup process') + logger.error(err) + } + } + + module.exports = { + cleanUpTestData + } + + logger.buildService(module.exports) \ No newline at end of file diff --git a/src/services/SubGroupService.js b/src/services/SubGroupService.js index 12cc552..2ede1ca 100644 --- a/src/services/SubGroupService.js +++ b/src/services/SubGroupService.js @@ -111,7 +111,7 @@ async function deleteSubGroup (currentUser, groupId, subGroupId) { const res = await tx.run(`MATCH (g:Group {id: "${groupId}"})-[r:GroupContains {type: "${config.MEMBERSHIP_TYPES.Group}"}]->(o {id: "${subGroupId}"}) return r`) if (res.records.length === 0) { - throw new errors.BadRequestError(`The Gourp: ${subGroupId} is not the child of Group: ${subGroupId}`) + throw new errors.BadRequestError(`The Group: ${subGroupId} is not the child of Group: ${groupId}`) } // delete relationship diff --git a/test/postman/clearTestData.js b/test/postman/clearTestData.js new file mode 100644 index 0000000..56438a8 --- /dev/null +++ b/test/postman/clearTestData.js @@ -0,0 +1,28 @@ +/** + * Clear the postman test data. All data created by postman e2e tests will be cleared. + */ + const logger = require('../../src/common/logger') + const helper = require('../../src/common/helper') + const config = require('config') + + logger.info('Clear the Postman test data.') + + /** + * Clear the postman test data. The main function of this class. + * @returns {Promise} + */ + const clearTestData = async () => { + await helper.postRequest(`${config.HOST}/groups/internal/jobs/clean`) + } + + clearTestData().then(() => { + logger.info('Completed!') + process.exit() + }).catch((e) => { + logger.logFullError(e) + process.exit(1) + }) + + module.exports = { + clearTestData + } \ No newline at end of file diff --git a/test/postman/groups-api.postman_collection.json b/test/postman/groups-api.postman_collection.json new file mode 100644 index 0000000..2698557 --- /dev/null +++ b/test/postman/groups-api.postman_collection.json @@ -0,0 +1,4995 @@ +{ + "info": { + "_postman_id": "629084f5-72f8-47db-a24b-12fdeb61f4ad", + "name": "groups-api", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "name": "Health Check", + "item": [ + { + "name": "health check", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {\r", + " pm.response.to.have.status(200);\r", + " const response = pm.response.json()\r", + " pm.expect(response.checksRun).be.a('number')\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "let admin = pm.environment.get(\"admin_token\").split('.')[1];", + "let user = pm.environment.get(\"user_token\").split('.')[1];", + "let admin_id = JSON.parse(Buffer.from(admin,'base64').toString()).userId;", + "let user_id = JSON.parse(Buffer.from(user, 'base64').toString()).userId;", + "pm.environment.set(\"ADMIN_ID\", admin_id);", + "pm.environment.set(\"USER_ID\",user_id);", + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{URL}}/groups/health", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "health" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Groups", + "item": [ + { + "name": "create group", + "item": [ + { + "name": "create group by admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " if(httpCode === 200){", + " const response = pm.response.json()", + " pm.expect(response.id).to.be.a('string')", + " pm.expect(response.name).to.be.a('string')", + " pm.expect(response.createdAt).to.be.a('string')", + " pm.expect(response.createdBy).to.be.a('string')", + " pm.expect(response.name).to.eq(iterationData.get('name'))", + " pm.expect(response.description).to.eq(iterationData.get('description'))", + " pm.expect(response.privateGroup).to.eq(iterationData.get('privateGroup'))", + " pm.expect(response.selfRegister).to.eq(iterationData.get('selfRegister'))", + " pm.expect(response.status).to.eq(iterationData.get('status'))", + " pm.expect(response.ssoId).to.eq(iterationData.get('ssoId'))", + " pm.expect(response.organizationId).to.eq(iterationData.get('organizationId'))", + " pm.expect(response.domain).to.eq(iterationData.get('domain'))", + " pm.environment.set(\"GROUP_ID\", pm.response.json().id);", + " }", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"{{name}}\",\n \"description\": \"{{description}}\",\n \"privateGroup\": {{privateGroup}},\n \"selfRegister\": {{selfRegister}},\n \"domain\": \"{{domain}}\",\n \"ssoId\": \"{{ssoId}}\",\n \"organizationId\": \"{{organizationId}}\",\n \"status\": \"{{status}}\"\n}" + }, + "url": { + "raw": "{{URL}}/groups", + "host": [ + "{{URL}}" + ], + "path": [ + "groups" + ] + } + }, + "response": [] + }, + { + "name": "create group by m2m", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " if(httpCode === 200){", + " const response = pm.response.json()", + " pm.expect(response.id).to.be.a('string')", + " pm.expect(response.name).to.be.a('string')", + " pm.expect(response.createdAt).to.be.a('string')", + " pm.expect(response.name).to.eq(iterationData.get('name'))", + " pm.expect(response.description).to.eq(iterationData.get('description'))", + " pm.expect(response.privateGroup).to.eq(iterationData.get('privateGroup'))", + " pm.expect(response.selfRegister).to.eq(iterationData.get('selfRegister'))", + " pm.expect(response.status).to.eq(iterationData.get('status'))", + " pm.expect(response.ssoId).to.eq(iterationData.get('ssoId'))", + " pm.expect(response.organizationId).to.eq(iterationData.get('organizationId'))", + " pm.expect(response.domain).to.eq(iterationData.get('domain'))", + " pm.environment.set(\"GROUP_ID2\", pm.response.json().id);", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{M2M_TOKEN}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"{{name}}\",\n \"description\": \"{{description}}\",\n \"privateGroup\": {{privateGroup}},\n \"selfRegister\": {{selfRegister}},\n \"domain\": \"{{domain}}\",\n \"ssoId\": \"{{ssoId}}\",\n \"organizationId\": \"{{organizationId}}\",\n \"status\": \"{{status}}\"\n}" + }, + "url": { + "raw": "{{URL}}/groups", + "host": [ + "{{URL}}" + ], + "path": [ + "groups" + ] + } + }, + "response": [] + }, + { + "name": "create group with all kinds of invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " if (response.message) {", + " pm.expect(response.message).to.eq(iterationData.get('message'))", + " } else if (response.result) {", + " pm.expect(response.result.content.message).to.eq(iterationData.get('message'))", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "{{jwtToken}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"failure-token\",\n \"description\": \"desc1\",\n \"privateGroup\": true,\n \"selfRegister\": true\n}" + }, + "url": { + "raw": "{{URL}}/groups", + "host": [ + "{{URL}}" + ], + "path": [ + "groups" + ] + } + }, + "response": [] + }, + { + "name": "create group with all kinds of invalid request body", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " pm.expect(response.message).to.eq(iterationData.get('message'))", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"{{required_field_1}}\": {{name}},\n \"description\": {{description}},\n \"{{required_field_2}}\": {{privateGroup}},\n \"{{required_field_3}}\": {{selfRegister}},\n \"domain\": {{domain}},\n \"ssoId\": {{ssoId}},\n \"organizationId\": {{organizationId}},\n \"status\": {{status}}\n}" + }, + "url": { + "raw": "{{URL}}/groups", + "host": [ + "{{URL}}" + ], + "path": [ + "groups" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "update group", + "item": [ + { + "name": "update group by admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " if(httpCode === 200){", + " const response = pm.response.json()", + " pm.expect(response.id).to.be.a('string')", + " pm.expect(response.name).to.be.a('string')", + " pm.expect(response.createdAt).to.be.a('string')", + " pm.expect(response.createdBy).to.be.a('string')", + " pm.expect(response.updatedAt).to.be.a('string')", + " pm.expect(response.updatedBy).to.be.a('string')", + " pm.expect(response.name).to.eq(iterationData.get('name'))", + " pm.expect(response.description).to.eq(iterationData.get('description'))", + " pm.expect(response.privateGroup).to.eq(iterationData.get('privateGroup'))", + " pm.expect(response.selfRegister).to.eq(iterationData.get('selfRegister'))", + " pm.expect(response.status).to.eq(iterationData.get('status'))", + " pm.expect(response.ssoId).to.eq(iterationData.get('ssoId'))", + " pm.expect(response.organizationId).to.eq(iterationData.get('organizationId'))", + " pm.expect(response.domain).to.eq(iterationData.get('domain'))", + " pm.expect(response.oldId).to.eq(iterationData.get('oldId'))", + " pm.environment.set(\"GROUP_OLD_ID\", pm.response.json().oldId);", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"{{name}}\",\n \"description\": \"{{description}}\",\n \"privateGroup\": {{privateGroup}},\n \"selfRegister\": {{selfRegister}},\n \"domain\": \"{{domain}}\",\n \"ssoId\": \"{{ssoId}}\",\n \"organizationId\": \"{{organizationId}}\",\n \"status\": \"{{status}}\",\n \"oldId\": \"{{oldId}}\"\n}" + }, + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "update group by m2m", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " if(httpCode === 200){", + " const response = pm.response.json()", + " pm.expect(response.id).to.be.a('string')", + " pm.expect(response.name).to.be.a('string')", + " pm.expect(response.createdAt).to.be.a('string')", + " pm.expect(response.updatedAt).to.be.a('string')", + " pm.expect(response.name).to.eq(iterationData.get('name'))", + " pm.expect(response.description).to.eq(iterationData.get('description'))", + " pm.expect(response.privateGroup).to.eq(iterationData.get('privateGroup'))", + " pm.expect(response.selfRegister).to.eq(iterationData.get('selfRegister'))", + " pm.expect(response.status).to.eq(iterationData.get('status'))", + " pm.expect(response.ssoId).to.eq(iterationData.get('ssoId'))", + " pm.expect(response.organizationId).to.eq(iterationData.get('organizationId'))", + " pm.expect(response.domain).to.eq(iterationData.get('domain'))", + " pm.expect(response.oldId).to.eq(iterationData.get('oldId'))", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{M2M_TOKEN}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"{{name}}\",\n \"description\": \"{{description}}\",\n \"privateGroup\": {{privateGroup}},\n \"selfRegister\": {{selfRegister}},\n \"domain\": \"{{domain}}\",\n \"ssoId\": \"{{ssoId}}\",\n \"organizationId\": \"{{organizationId}}\",\n \"status\": \"{{status}}\",\n \"oldId\": \"{{oldId}}\"\n}" + }, + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID2}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID2}}" + ] + } + }, + "response": [] + }, + { + "name": "update group with all kinds of invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " if (response.message) {", + " pm.expect(response.message).to.eq(iterationData.get('message'))", + " } else if (response.result) {", + " pm.expect(response.result.content.message).to.eq(iterationData.get('message'))", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "{{jwtToken}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"group1-updated-1\",\n \"description\": \"desc1-updated-1\",\n \"privateGroup\": true,\n \"selfRegister\": false,\n \"domain\": \"new_domain\",\n \"status\": \"inactive\",\n \"organizationId\": \"test\",\n \"oldId\": \"1\"\n}" + }, + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "update group invalid id 404", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 404\", function () {", + " pm.response.to.have.status(404);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"group1-updated-1\",\n \"description\": \"desc1-updated-1\",\n \"privateGroup\": true,\n \"selfRegister\": false,\n \"domain\": \"new_domain\",\n \"status\": \"inactive\",\n \"organizationId\": \"test\",\n \"oldId\": \"1\"\n}" + }, + "url": { + "raw": "{{URL}}/groups/fe6d0a58-ce7d-4521-8501-b8132b1c0311", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "fe6d0a58-ce7d-4521-8501-b8132b1c0311" + ] + } + }, + "response": [] + }, + { + "name": "update group with all kinds of invalid request body", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " pm.expect(response.message).to.eq(iterationData.get('message'))", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"{{required_field_1}}\": {{name}},\n \"description\": {{description}},\n \"{{required_field_2}}\": {{privateGroup}},\n \"{{required_field_3}}\": {{selfRegister}},\n \"domain\": {{domain}},\n \"ssoId\": {{ssoId}},\n \"organizationId\": {{organizationId}},\n \"status\": {{status}},\n \"oldId\": {{oldId}}\n}" + }, + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "get group", + "item": [ + { + "name": "get group by admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.id).be.a('string')", + " pm.expect(response.name).be.a('string')", + " pm.expect(response.description).be.a('string')", + " pm.expect(response.privateGroup).be.a('boolean')", + " pm.expect(response.selfRegister).be.a('boolean')", + " pm.expect(response.status).be.a('string')", + " pm.expect(response.ssoId).be.a('string')", + " pm.expect(response.organizationId).be.a('string')", + " pm.expect(response.domain).be.a('string')", + " pm.expect(response.createdBy).be.a('string')", + " pm.expect(response.createdAt).be.a('string')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{groupId}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{groupId}}" + ] + } + }, + "response": [] + }, + { + "name": "get group by m2m", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.id).be.a('string')", + " pm.expect(response.name).be.a('string')", + " pm.expect(response.description).be.a('string')", + " pm.expect(response.privateGroup).be.a('boolean')", + " pm.expect(response.selfRegister).be.a('boolean')", + " pm.expect(response.status).be.a('string')", + " pm.expect(response.ssoId).be.a('string')", + " pm.expect(response.organizationId).be.a('string')", + " pm.expect(response.domain).be.a('string')", + " pm.expect(response.createdBy).be.a('string')", + " pm.expect(response.createdAt).be.a('string')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{M2M_TOKEN}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{groupId}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{groupId}}" + ] + } + }, + "response": [] + }, + { + "name": "get group by user", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.id).be.a('string')", + " pm.expect(response.name).be.a('string')", + " pm.expect(response.description).be.a('string')", + " pm.expect(response.privateGroup).be.a('boolean')", + " pm.expect(response.selfRegister).be.a('boolean')", + " pm.expect(response.ssoId).be.a('string')", + " pm.expect(response.organizationId).be.a('string')", + " pm.expect(response.domain).be.a('string')", + " pm.expect(response.createdBy).be.a('string')", + " pm.expect(response.createdAt).be.a('string')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{user_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "get group with valid parameters", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " if(httpCode === 200) {", + " const response = pm.response.json()", + " const allowedFields = iterationData.get('fields').split(',')", + " if (iterationData.get('includeSubGroups')) {", + " pm.expect(response).to.have.property('subGroups')", + " } else if (iterationData.get('includeParentGroup')) {", + " pm.expect(response).to.have.property('parentGroups')", + " }", + "", + " for (const field of allowedFields) {", + " pm.expect(response).to.have.property(field)", + " }", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}?includeSubGroups={{includeSubGroups}}&includeParentGroup={{includeParentGroup}}&oneLevel={{oneLevel}}&fields={{fields}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}" + ], + "query": [ + { + "key": "includeSubGroups", + "value": "{{includeSubGroups}}" + }, + { + "key": "includeParentGroup", + "value": "{{includeParentGroup}}" + }, + { + "key": "oneLevel", + "value": "{{oneLevel}}" + }, + { + "key": "fields", + "value": "{{fields}}" + } + ] + } + }, + "response": [] + }, + { + "name": "get group with all kinds of invalid parameter", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " pm.expect(response.message).to.eq(iterationData.get('message'))", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}?includeSubGroups={{includeSubGroups}}&includeParentGroup={{includeParentGroup}}&oneLevel={{oneLevel}}&fields={{fields}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}" + ], + "query": [ + { + "key": "includeSubGroups", + "value": "{{includeSubGroups}}" + }, + { + "key": "includeParentGroup", + "value": "{{includeParentGroup}}" + }, + { + "key": "oneLevel", + "value": "{{oneLevel}}" + }, + { + "key": "fields", + "value": "{{fields}}" + } + ] + } + }, + "response": [] + }, + { + "name": "get group with all kinds of invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " if (response.message) {", + " pm.expect(response.message).to.eq(iterationData.get('message'))", + " } else if (response.result) {", + " pm.expect(response.result.content.message).to.eq(iterationData.get('message'))", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "{{jwtToken}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID2}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID2}}" + ] + } + }, + "response": [] + }, + { + "name": "get group invalid id 404", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 404\", function () {", + " pm.response.to.have.status(404);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups/fe6d0a58-ce7d-4521-8501-b8132b1c0311", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "fe6d0a58-ce7d-4521-8501-b8132b1c0311" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "get group with old id", + "item": [ + { + "name": "get group with old id by admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.id).be.a('string')", + " pm.expect(response.name).be.a('string')", + " pm.expect(response.description).be.a('string')", + " pm.expect(response.privateGroup).be.a('boolean')", + " pm.expect(response.selfRegister).be.a('boolean')", + " pm.expect(response.status).be.a('string')", + " pm.expect(response.ssoId).be.a('string')", + " pm.expect(response.organizationId).be.a('string')", + " pm.expect(response.domain).be.a('string')", + " pm.expect(response.createdBy).be.a('string')", + " pm.expect(response.createdAt).be.a('string')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups/oldId/{{GROUP_OLD_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "oldId", + "{{GROUP_OLD_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "get group with old id by m2m", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.id).be.a('string')", + " pm.expect(response.name).be.a('string')", + " pm.expect(response.description).be.a('string')", + " pm.expect(response.privateGroup).be.a('boolean')", + " pm.expect(response.selfRegister).be.a('boolean')", + " pm.expect(response.status).be.a('string')", + " pm.expect(response.ssoId).be.a('string')", + " pm.expect(response.organizationId).be.a('string')", + " pm.expect(response.domain).be.a('string')", + " pm.expect(response.createdBy).be.a('string')", + " pm.expect(response.createdAt).be.a('string')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{M2M_TOKEN}}" + } + ], + "url": { + "raw": "{{URL}}/groups/oldId/{{GROUP_OLD_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "oldId", + "{{GROUP_OLD_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "get group with old id by user", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.id).be.a('string')", + " pm.expect(response.name).be.a('string')", + " pm.expect(response.description).be.a('string')", + " pm.expect(response.privateGroup).be.a('boolean')", + " pm.expect(response.selfRegister).be.a('boolean')", + " pm.expect(response.ssoId).be.a('string')", + " pm.expect(response.organizationId).be.a('string')", + " pm.expect(response.domain).be.a('string')", + " pm.expect(response.createdBy).be.a('string')", + " pm.expect(response.createdAt).be.a('string')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{user_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups/oldId/{{GROUP_OLD_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "oldId", + "{{GROUP_OLD_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "get group with old id with valid parameters", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " if(httpCode === 200) {", + " const response = pm.response.json()", + " const allowedFields = iterationData.get('fields').split(',')", + " if (iterationData.get('includeSubGroups')) {", + " pm.expect(response).to.have.property('subGroups')", + " } else if (iterationData.get('includeParentGroup')) {", + " pm.expect(response).to.have.property('parentGroups')", + " }", + "", + " for (const field of allowedFields) {", + " pm.expect(response).to.have.property(field)", + " }", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups/oldId/{{GROUP_OLD_ID}}?includeSubGroups={{includeSubGroups}}&includeParentGroup={{includeParentGroup}}&oneLevel={{oneLevel}}&fields={{fields}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "oldId", + "{{GROUP_OLD_ID}}" + ], + "query": [ + { + "key": "includeSubGroups", + "value": "{{includeSubGroups}}" + }, + { + "key": "includeParentGroup", + "value": "{{includeParentGroup}}" + }, + { + "key": "oneLevel", + "value": "{{oneLevel}}" + }, + { + "key": "fields", + "value": "{{fields}}" + } + ] + } + }, + "response": [] + }, + { + "name": "get group with old id with all kinds of invalid parameter", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " pm.expect(response.message).to.eq(iterationData.get('message'))", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups/oldId/{{GROUP_OLD_ID}}?includeSubGroups={{includeSubGroups}}&includeParentGroup={{includeParentGroup}}&oneLevel={{oneLevel}}&fields={{fields}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "oldId", + "{{GROUP_OLD_ID}}" + ], + "query": [ + { + "key": "includeSubGroups", + "value": "{{includeSubGroups}}" + }, + { + "key": "includeParentGroup", + "value": "{{includeParentGroup}}" + }, + { + "key": "oneLevel", + "value": "{{oneLevel}}" + }, + { + "key": "fields", + "value": "{{fields}}" + } + ] + } + }, + "response": [] + }, + { + "name": "get group with old id with all kinds of invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " if (response.message) {", + " pm.expect(response.message).to.eq(iterationData.get('message'))", + " } else if (response.result) {", + " pm.expect(response.result.content.message).to.eq(iterationData.get('message'))", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "{{jwtToken}}" + } + ], + "url": { + "raw": "{{URL}}/groups/oldId/{{GROUP_OLD_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "oldId", + "{{GROUP_OLD_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "get group with old id invalid id 404", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 404\", function () {", + " pm.response.to.have.status(404);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups/oldId/1000", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "oldId", + "1000" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "search group", + "item": [ + { + "name": "search group by admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.length).to.be.gte(1)", + " pm.expect(response[0].id).be.a('string')", + " pm.expect(response[0].name).be.a('string')", + " pm.expect(response[0].description).be.a('string')", + " pm.expect(response[0].privateGroup).be.a('boolean')", + " pm.expect(response[0].selfRegister).be.a('boolean')", + " pm.expect(response[0].status).be.a('string')", + " pm.expect(response[0].ssoId).be.a('string')", + " pm.expect(response[0].organizationId).be.a('string')", + " pm.expect(response[0].domain).be.a('string')", + " pm.expect(response[0].createdBy).be.a('string')", + " pm.expect(response[0].createdAt).be.a('string')", + " pm.expect(response[0].updatedBy).be.a('string')", + " pm.expect(response[0].updatedAt).be.a('string')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups", + "host": [ + "{{URL}}" + ], + "path": [ + "groups" + ] + } + }, + "response": [] + }, + { + "name": "search group by m2m", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.length).to.be.gte(1)", + " pm.expect(response[0].id).be.a('string')", + " pm.expect(response[0].name).be.a('string')", + " pm.expect(response[0].description).be.a('string')", + " pm.expect(response[0].privateGroup).be.a('boolean')", + " pm.expect(response[0].selfRegister).be.a('boolean')", + " pm.expect(response[0].status).be.a('string')", + " pm.expect(response[0].ssoId).be.a('string')", + " pm.expect(response[0].organizationId).be.a('string')", + " pm.expect(response[0].domain).be.a('string')", + " pm.expect(response[0].createdBy).be.a('string')", + " pm.expect(response[0].createdAt).be.a('string')", + " pm.expect(response[0].updatedBy).be.a('string')", + " pm.expect(response[0].updatedAt).be.a('string')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{M2M_TOKEN}}" + } + ], + "url": { + "raw": "{{URL}}/groups", + "host": [ + "{{URL}}" + ], + "path": [ + "groups" + ] + } + }, + "response": [] + }, + { + "name": "search group by user", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.length).to.be.gte(1)", + " pm.expect(response[0].id).be.a('string')", + " pm.expect(response[0].name).be.a('string')", + " pm.expect(response[0].description).be.a('string')", + " pm.expect(response[0].privateGroup).be.a('boolean')", + " pm.expect(response[0].selfRegister).be.a('boolean')", + " pm.expect(response[0].ssoId).be.a('string')", + " pm.expect(response[0].organizationId).be.a('string')", + " pm.expect(response[0].domain).be.a('string')", + " pm.expect(response[0].createdBy).be.a('string')", + " pm.expect(response[0].createdAt).be.a('string')", + " pm.expect(response[0].updatedBy).be.a('string')", + " pm.expect(response[0].updatedAt).be.a('string')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{user_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups", + "host": [ + "{{URL}}" + ], + "path": [ + "groups" + ] + } + }, + "response": [] + }, + { + "name": "search group with valid parameters", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " pm.expect(response.length).to.be.gte(1)", + " pm.expect(response[0].id).be.a('string')", + " pm.expect(response[0].name).be.a('string')", + " pm.expect(response[0].description).be.a('string')", + " pm.expect(response[0].privateGroup).be.a('boolean')", + " pm.expect(response[0].selfRegister).be.a('boolean')", + " pm.expect(response[0].status).be.a('string')", + " pm.expect(response[0].ssoId).be.a('string')", + " pm.expect(response[0].organizationId).be.a('string')", + " pm.expect(response[0].domain).be.a('string')", + " pm.expect(response[0].createdBy).be.a('string')", + " pm.expect(response[0].createdAt).be.a('string')", + " pm.expect(response[0].updatedBy).be.a('string')", + " pm.expect(response[0].updatedAt).be.a('string')", + "", + " if (iterationData.get('includeSubGroups')) {", + " pm.expect(response[0]).to.have.property('subGroups')", + " pm.expect(response[0].subGroups.length).to.be.gte(0)", + " } ", + " if (iterationData.get('includeParentGroup')) {", + " pm.expect(response[0]).to.have.property('parentGroups')", + " pm.expect(response[0].parentGroups.length).to.be.gte(0)", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups?name={{name}}&page={{page}}&perPage={{perPage}}&oldId={{oldId}}&ssoId={{ssoId}}&organizationId={{organizationId}}&selfRegister={{selfRegister}}&privateGroup={{privateGroup}}&includeSubGroups={{includeSubGroups}}&includeParentGroup={{includeParentGroup}}&oneLevel={{oneLevel}}&status={{status}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups" + ], + "query": [ + { + "key": "name", + "value": "{{name}}" + }, + { + "key": "page", + "value": "{{page}}" + }, + { + "key": "perPage", + "value": "{{perPage}}" + }, + { + "key": "oldId", + "value": "{{oldId}}" + }, + { + "key": "ssoId", + "value": "{{ssoId}}" + }, + { + "key": "organizationId", + "value": "{{organizationId}}" + }, + { + "key": "selfRegister", + "value": "{{selfRegister}}" + }, + { + "key": "privateGroup", + "value": "{{privateGroup}}" + }, + { + "key": "includeSubGroups", + "value": "{{includeSubGroups}}" + }, + { + "key": "includeParentGroup", + "value": "{{includeParentGroup}}" + }, + { + "key": "oneLevel", + "value": "{{oneLevel}}" + }, + { + "key": "status", + "value": "{{status}}" + } + ] + } + }, + "response": [] + }, + { + "name": "search group with all kinds of invalid parameter", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " pm.expect(response.message).to.eq(iterationData.get('message'))", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups?{{memberIdField}}={{memberId}}&{{universalUIDField}}={{universalUID}}&{{membershipTypeField}}={{membershipType}}&name={{name}}&page={{page}}&perPage={{perPage}}&oldId={{oldId}}&ssoId={{ssoId}}&organizationId={{organizationId}}&selfRegister={{selfRegister}}&privateGroup={{privateGroup}}&includeSubGroups={{includeSubGroups}}&includeParentGroup={{includeParentGroup}}&oneLevel={{oneLevel}}&status={{status}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups" + ], + "query": [ + { + "key": "{{memberIdField}}", + "value": "{{memberId}}" + }, + { + "key": "{{universalUIDField}}", + "value": "{{universalUID}}" + }, + { + "key": "{{membershipTypeField}}", + "value": "{{membershipType}}" + }, + { + "key": "name", + "value": "{{name}}" + }, + { + "key": "page", + "value": "{{page}}" + }, + { + "key": "perPage", + "value": "{{perPage}}" + }, + { + "key": "oldId", + "value": "{{oldId}}" + }, + { + "key": "ssoId", + "value": "{{ssoId}}" + }, + { + "key": "organizationId", + "value": "{{organizationId}}" + }, + { + "key": "selfRegister", + "value": "{{selfRegister}}" + }, + { + "key": "privateGroup", + "value": "{{privateGroup}}" + }, + { + "key": "includeSubGroups", + "value": "{{includeSubGroups}}" + }, + { + "key": "includeParentGroup", + "value": "{{includeParentGroup}}" + }, + { + "key": "oneLevel", + "value": "{{oneLevel}}" + }, + { + "key": "status", + "value": "{{status}}" + } + ] + } + }, + "response": [] + }, + { + "name": "search group with all kinds of invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " if (response.message) {", + " pm.expect(response.message).to.eq(iterationData.get('message'))", + " } else if (response.result) {", + " pm.expect(response.result.content.message).to.eq(iterationData.get('message'))", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "{{jwtToken}}" + } + ], + "url": { + "raw": "{{URL}}/groups", + "host": [ + "{{URL}}" + ], + "path": [ + "groups" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "delete group", + "item": [ + { + "name": "delete group by admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.id).be.a('string')", + " pm.expect(response.name).be.a('string')", + " pm.expect(response.description).be.a('string')", + " pm.expect(response.privateGroup).be.a('boolean')", + " pm.expect(response.selfRegister).be.a('boolean')", + " pm.expect(response.status).be.a('string')", + " pm.expect(response.ssoId).be.a('string')", + " pm.expect(response.organizationId).be.a('string')", + " pm.expect(response.domain).be.a('string')", + " pm.expect(response.createdBy).be.a('string')", + " pm.expect(response.createdAt).be.a('string')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "delete group by m2m", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.id).be.a('string')", + " pm.expect(response.name).be.a('string')", + " pm.expect(response.description).be.a('string')", + " pm.expect(response.privateGroup).be.a('boolean')", + " pm.expect(response.selfRegister).be.a('boolean')", + " pm.expect(response.status).be.a('string')", + " pm.expect(response.ssoId).be.a('string')", + " pm.expect(response.organizationId).be.a('string')", + " pm.expect(response.domain).be.a('string')", + " pm.expect(response.createdBy).be.a('string')", + " pm.expect(response.createdAt).be.a('string')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{M2M_TOKEN}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID2}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID2}}" + ] + } + }, + "response": [] + }, + { + "name": "delete group invalid id 404", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 404`, function () {", + " pm.response.to.have.status(404);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{M2M_TOKEN}}" + } + ], + "url": { + "raw": "{{URL}}/groups/fe6d0a58-ce7d-4521-8501-b8132b1c0311", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "fe6d0a58-ce7d-4521-8501-b8132b1c0311" + ] + } + }, + "response": [] + }, + { + "name": "delete group with all kinds of invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " if (response.message) {", + " pm.expect(response.message).to.eq(iterationData.get('message'))", + " } else if (response.result) {", + " pm.expect(response.result.content.message).to.eq(iterationData.get('message'))", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "{{jwtToken}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}" + ] + } + }, + "response": [] + } + ] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ] + }, + { + "name": "Group Memberships", + "item": [ + { + "name": "create group membership", + "item": [ + { + "name": "create group membership by admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " if(httpCode === 200) {", + " const response = pm.response.json()", + " pm.expect(response.id).to.be.a('string')", + " pm.expect(response.name).to.be.a('string')", + " pm.expect(response.createdAt).to.be.a('string')", + " pm.expect(response.createdBy).to.be.a('string')", + " pm.expect(response.groupId).to.eq(pm.environment.get(\"GROUP_ID2\"))", + " pm.expect(response.memberId).to.eq(pm.environment.get('USER_ID'))", + " pm.expect(response.membershipType).to.eq(iterationData.get('membershipType'))", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"memberId\": \"{{USER_ID}}\",\n \"membershipType\": \"{{membershipType}}\"\n}" + }, + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID2}}/members", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID2}}", + "members" + ] + } + }, + "response": [] + }, + { + "name": "create group membership by m2m", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " if(httpCode === 200) {", + " const response = pm.response.json()", + " pm.expect(response.id).to.be.a('string')", + " pm.expect(response.name).to.be.a('string')", + " pm.expect(response.createdAt).to.be.a('string')", + " pm.expect(response.groupId).to.eq(pm.environment.get(\"GROUP_ID\"))", + " pm.expect(response.membershipType).to.eq(iterationData.get('membershipType'))", + " pm.expect(response.universalUID).to.eq(iterationData.get('universalUID'))", + " pm.environment.set(\"GROUP_MEMBER_UNIVERSAL_ID\", pm.response.json().universalUID);", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{M2M_TOKEN}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"universalUID\": \"{{universalUID}}\",\n \"membershipType\": \"{{membershipType}}\"\n}" + }, + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}/members", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}", + "members" + ] + } + }, + "response": [] + }, + { + "name": "create group membership by user", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " if(httpCode === 200) {", + " const response = pm.response.json()", + " pm.expect(response.id).to.be.a('string')", + " pm.expect(response.name).to.be.a('string')", + " pm.expect(response.createdAt).to.be.a('string')", + " pm.expect(response.createdBy).to.be.a('string')", + " pm.expect(response.groupId).to.eq(pm.environment.get(\"GROUP_ID\"))", + " pm.expect(response.memberId).to.eq(pm.environment.get('USER_ID'))", + " pm.expect(response.membershipType).to.eq(iterationData.get('membershipType'))", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{user_token}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"memberId\": \"{{USER_ID}}\",\n \"membershipType\": \"{{membershipType}}\"\n}" + }, + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}/members", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}", + "members" + ] + } + }, + "response": [] + }, + { + "name": "create group membership (group)", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " if(httpCode === 200) {", + " const response = pm.response.json()", + " pm.expect(response.id).to.be.a('string')", + " pm.expect(response.name).to.be.a('string')", + " pm.expect(response.createdAt).to.be.a('string')", + " pm.expect(response.createdBy).to.be.a('string')", + " pm.expect(response.groupId).to.eq(pm.environment.get(\"GROUP_ID\"))", + " pm.expect(response.memberId).to.eq(pm.environment.get('GROUP_ID2'))", + " pm.expect(response.membershipType).to.eq(iterationData.get('membershipType'))", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"memberId\": \"{{memberId}}\",\n \"membershipType\": \"{{membershipType}}\"\n}" + }, + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}/members", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}", + "members" + ] + } + }, + "response": [] + }, + { + "name": "create group membership with all kinds of invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " if (response.message) {", + " pm.expect(response.message).to.eq(iterationData.get('message'))", + " } else if (response.result) {", + " pm.expect(response.result.content.message).to.eq(iterationData.get('message'))", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "{{jwtToken}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"memberId\": \"{{USER_ID}}\",\n \"membershipType\": \"user\"\n}" + }, + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}/members", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}", + "members" + ] + } + }, + "response": [] + }, + { + "name": "create group membership with all kinds of invalid request body", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " pm.expect(response.message).to.eq(iterationData.get('message'))", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"{{required_field_1}}\": {{memberId}},\n \"{{required_field_2}}\": {{membershipType}}\n}" + }, + "url": { + "raw": "{{URL}}/groups/{{groupId}}/members", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{groupId}}", + "members" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "get group membership", + "item": [ + { + "name": "get group membership by admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + "", + " pm.expect(response.id).to.be.a('string')", + " pm.expect(response.groupId).to.be.a('string')", + " pm.expect(response.createdAt).to.be.a('string')", + " pm.expect(response.createdBy).to.be.a('string')", + " pm.expect(response.memberId).to.be.a('string')", + " pm.expect(response.membershipType).to.be.a('string')", + "});", + "", + "", + " " + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}/members/{{USER_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}", + "members", + "{{USER_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "get group membership by m2m", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.id).to.be.a('string')", + " pm.expect(response.groupId).to.be.a('string')", + " pm.expect(response.createdAt).to.be.a('string')", + " pm.expect(response.createdBy).to.be.a('string')", + " pm.expect(response.memberId).to.be.a('string')", + " pm.expect(response.membershipType).to.be.a('string')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{M2M_TOKEN}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}/members/{{USER_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}", + "members", + "{{USER_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "get group membership by user", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.id).to.be.a('string')", + " pm.expect(response.groupId).to.be.a('string')", + " pm.expect(response.createdAt).to.be.a('string')", + " pm.expect(response.createdBy).to.be.a('string')", + " pm.expect(response.memberId).to.be.a('string')", + " pm.expect(response.membershipType).to.be.a('string')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{user_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}/members/{{USER_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}", + "members", + "{{USER_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "get group membership with all kinds of invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " if (response.message) {", + " pm.expect(response.message).to.eq(iterationData.get('message'))", + " } else if (response.result) {", + " pm.expect(response.result.content.message).to.eq(iterationData.get('message'))", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "{{jwtToken}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID2}}/members/{{USER_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID2}}", + "members", + "{{USER_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "get group membership invalid id 404", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 404\", function () {", + " pm.response.to.have.status(404);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}/members/fe6d0a58-ce7d-4521-8501-b8132b1c0311", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}", + "members", + "fe6d0a58-ce7d-4521-8501-b8132b1c0311" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "get group member groups", + "item": [ + { + "name": "get group member groups by admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.length).to.be.gte(1)", + " pm.expect(response[0]).be.a('string')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups/memberGroups/{{USER_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "memberGroups", + "{{USER_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "get group member groups by m2m", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.length).to.be.gte(1)", + " pm.expect(response[0]).be.a('string')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{M2M_TOKEN}}" + } + ], + "url": { + "raw": "{{URL}}/groups/memberGroups/{{USER_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "memberGroups", + "{{USER_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "get group member groups by user", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.length).to.be.gte(1)", + " pm.expect(response[0]).be.a('string')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{user_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups/memberGroups/{{USER_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "memberGroups", + "{{USER_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "get group membership with all kinds of invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " if (response.message) {", + " pm.expect(response.message).to.eq(iterationData.get('message'))", + " } else if (response.result) {", + " pm.expect(response.result.content.message).to.eq(iterationData.get('message'))", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "{{jwtToken}}" + } + ], + "url": { + "raw": "{{URL}}/groups/memberGroups/{{USER_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "memberGroups", + "{{USER_ID}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "get group membership count", + "item": [ + { + "name": "get group membership count without parameters", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.count).to.be.a('number')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}/membersCount", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}", + "membersCount" + ] + } + }, + "response": [] + }, + { + "name": "get group membership count with valid parameters", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.count).to.be.a('number')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{user_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}/membersCount?includeSubGroups={{includeSubGroups}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}", + "membersCount" + ], + "query": [ + { + "key": "includeSubGroups", + "value": "{{includeSubGroups}}" + } + ] + } + }, + "response": [] + }, + { + "name": "get group membership count with invalid parameters", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " pm.expect(response.message).to.eq(iterationData.get('message'))", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{user_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}/membersCount?includeSubGroups={{includeSubGroups}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}", + "membersCount" + ], + "query": [ + { + "key": "includeSubGroups", + "value": "{{includeSubGroups}}" + } + ] + } + }, + "response": [] + }, + { + "name": "get group membership count invalid id 404", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 404\", function () {", + " pm.response.to.have.status(404);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups/fe6d0a58-ce7d-4521-8501-b8132b1c0311/membersCount", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "fe6d0a58-ce7d-4521-8501-b8132b1c0311", + "membersCount" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "get group members list", + "item": [ + { + "name": "get group members list without parameters", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.length).to.be.gte(1)", + " pm.expect(response[0].id).to.be.a('string')", + " pm.expect(response[0].oldId).to.be.a('string')", + " pm.expect(response[0].count).to.be.a('number')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{URL}}/groups/memberGroups/groupMembersCount", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "memberGroups", + "groupMembersCount" + ] + } + }, + "response": [] + }, + { + "name": "get group members list with valid parameters", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.length).to.be.gte(1)", + " pm.expect(response[0].id).to.be.a('string')", + " pm.expect(response[0].oldId).to.be.a('string')", + " pm.expect(response[0].count).to.be.a('number')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{user_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups/memberGroups/groupMembersCount?includeSubGroups={{includeSubGroups}}&organizationId={{organizationId}}&universalUID={{universalUID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "memberGroups", + "groupMembersCount" + ], + "query": [ + { + "key": "includeSubGroups", + "value": "{{includeSubGroups}}" + }, + { + "key": "organizationId", + "value": "{{organizationId}}" + }, + { + "key": "universalUID", + "value": "{{universalUID}}" + } + ] + } + }, + "response": [] + }, + { + "name": "get group members list with invalid parameters", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " pm.expect(response.message).to.eq(iterationData.get('message'))", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{user_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups/memberGroups/groupMembersCount?includeSubGroups={{includeSubGroups}}&universalUID={{universalUID}}&organizationId={{organizationId}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "memberGroups", + "groupMembersCount" + ], + "query": [ + { + "key": "includeSubGroups", + "value": "{{includeSubGroups}}" + }, + { + "key": "universalUID", + "value": "{{universalUID}}" + }, + { + "key": "organizationId", + "value": "{{organizationId}}" + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "search group membership", + "item": [ + { + "name": "search group membership by admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.length).to.be.gte(1)", + "", + " pm.expect(response[0].id).to.be.a('string')", + " pm.expect(response[0].groupId).to.be.a('string')", + " pm.expect(response[0].createdAt).to.be.a('string')", + " pm.expect(response[0].createdBy).to.be.a('string')", + " pm.expect(response[0].memberId).to.be.a('string')", + " pm.expect(response[0].membershipType).to.be.a('string')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}/members", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}", + "members" + ] + } + }, + "response": [] + }, + { + "name": "search group membership by user", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.length).to.be.gte(1)", + " ", + " pm.expect(response[0].id).to.be.a('string')", + " pm.expect(response[0].groupId).to.be.a('string')", + " pm.expect(response[0].createdAt).to.be.a('string')", + " pm.expect(response[0].createdBy).to.be.a('string')", + " pm.expect(response[0].memberId).to.be.a('string')", + " pm.expect(response[0].membershipType).to.be.a('string')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{user_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}/members", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}", + "members" + ] + } + }, + "response": [] + }, + { + "name": "search group membership by m2m", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.length).to.be.gte(1)", + "", + " pm.expect(response[0].id).to.be.a('string')", + " pm.expect(response[0].groupId).to.be.a('string')", + " pm.expect(response[0].createdAt).to.be.a('string')", + " pm.expect(response[0].createdBy).to.be.a('string')", + " pm.expect(response[0].memberId).to.be.a('string')", + " pm.expect(response[0].membershipType).to.be.a('string')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{M2M_TOKEN}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}/members", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}", + "members" + ] + } + }, + "response": [] + }, + { + "name": "search group membership with valid parameters", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.length).to.be.gte(1)", + "", + " pm.expect(response[0].id).to.be.a('string')", + " pm.expect(response[0].groupId).to.be.a('string')", + " pm.expect(response[0].createdAt).to.be.a('string')", + " pm.expect(response[0].createdBy).to.be.a('string')", + " pm.expect(response[0].memberId).to.be.a('string')", + " pm.expect(response[0].membershipType).to.be.a('string')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{M2M_TOKEN}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}/members?page={{page}}&perPage={{perPage}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}", + "members" + ], + "query": [ + { + "key": "page", + "value": "{{page}}" + }, + { + "key": "perPage", + "value": "{{perPage}}" + } + ] + } + }, + "response": [] + }, + { + "name": "search group membership with all kinds of invalid parameter", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " pm.expect(response.message).to.eq(iterationData.get('message'))", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}/members?page={{page}}&perPage={{perPage}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}", + "members" + ], + "query": [ + { + "key": "page", + "value": "{{page}}" + }, + { + "key": "perPage", + "value": "{{perPage}}" + } + ] + } + }, + "response": [] + }, + { + "name": "search group membership with all kinds of invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " if (response.message) {", + " pm.expect(response.message).to.eq(iterationData.get('message'))", + " } else if (response.result) {", + " pm.expect(response.result.content.message).to.eq(iterationData.get('message'))", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "{{jwtToken}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID2}}/members", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID2}}", + "members" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "delete group membership", + "item": [ + { + "name": "delete group membership by admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.groupId).to.be.a('string')", + " pm.expect(response.name).to.be.a('string')", + " pm.expect(response).to.have.property('memberId')", + " pm.expect(response).to.have.property('universalUID')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID2}}/members/{{USER_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID2}}", + "members", + "{{USER_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "delete group membership by m2m", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.groupId).to.be.a('string')", + " pm.expect(response.name).to.be.a('string')", + " pm.expect(response).to.have.property('memberId')", + " pm.expect(response).to.have.property('universalUID')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{M2M_TOKEN}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}/members/{{GROUP_MEMBER_UNIVERSAL_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}", + "members", + "{{GROUP_MEMBER_UNIVERSAL_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "delete group membership by user", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.groupId).to.be.a('string')", + " pm.expect(response.name).to.be.a('string')", + " pm.expect(response).to.have.property('memberId')", + " pm.expect(response).to.have.property('universalUID')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{user_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}/members/{{USER_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}", + "members", + "{{USER_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "delete group membership (group)", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.groupId).to.be.a('string')", + " pm.expect(response.name).to.be.a('string')", + " pm.expect(response).to.have.property('universalUID')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}/members/{{GROUP_ID2}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}", + "members", + "{{GROUP_ID2}}" + ] + } + }, + "response": [] + }, + { + "name": "delete group member invalid id 404", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 404`, function () {", + " pm.response.to.have.status(404);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{M2M_TOKEN}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}/members/fe6d0a58-ce7d-4521-8501-b8132b1c0311", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}", + "members", + "fe6d0a58-ce7d-4521-8501-b8132b1c0311" + ] + } + }, + "response": [] + }, + { + "name": "delete group member with all kinds of invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " if (response.message) {", + " pm.expect(response.message).to.eq(iterationData.get('message'))", + " } else if (response.result) {", + " pm.expect(response.result.content.message).to.eq(iterationData.get('message'))", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "{{jwtToken}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}/members/{{GROUP_MEMBER_UNIVERSAL_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}", + "members", + "{{GROUP_MEMBER_UNIVERSAL_ID}}" + ] + } + }, + "response": [] + } + ] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ] + }, + { + "name": "Sub Groups", + "item": [ + { + "name": "create sub group", + "item": [ + { + "name": "create sub group by admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " if(httpCode === 200){", + " const response = pm.response.json()", + " pm.expect(response.name).to.eq(iterationData.get('name'))", + " pm.expect(response.description).to.eq(iterationData.get('description'))", + " pm.expect(response.privateGroup).to.eq(iterationData.get('privateGroup'))", + " pm.expect(response.selfRegister).to.eq(iterationData.get('selfRegister'))", + " pm.expect(response.status).to.eq(iterationData.get('status'))", + " pm.expect(response.ssoId).to.eq(iterationData.get('ssoId'))", + " pm.expect(response.organizationId).to.eq(iterationData.get('organizationId'))", + " pm.expect(response.domain).to.eq(iterationData.get('domain'))", + " pm.environment.set(\"SUBGROUP_ID\", pm.response.json().id);", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"{{name}}\",\n \"description\": \"{{description}}\",\n \"privateGroup\": {{privateGroup}},\n \"selfRegister\": {{selfRegister}},\n \"domain\": \"{{domain}}\",\n \"ssoId\": \"{{ssoId}}\",\n \"organizationId\": \"{{organizationId}}\",\n \"status\": \"{{status}}\"\n}" + }, + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}/subGroup", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}", + "subGroup" + ] + } + }, + "response": [] + }, + { + "name": "create sub group by m2m", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " if(httpCode === 200){", + " const response = pm.response.json()", + " pm.expect(response.name).to.eq(iterationData.get('name'))", + " pm.expect(response.description).to.eq(iterationData.get('description'))", + " pm.expect(response.privateGroup).to.eq(iterationData.get('privateGroup'))", + " pm.expect(response.selfRegister).to.eq(iterationData.get('selfRegister'))", + " pm.expect(response.status).to.eq(iterationData.get('status'))", + " pm.expect(response.ssoId).to.eq(iterationData.get('ssoId'))", + " pm.expect(response.organizationId).to.eq(iterationData.get('organizationId'))", + " pm.expect(response.domain).to.eq(iterationData.get('domain'))", + " pm.environment.set(\"SUBGROUP_ID2\", pm.response.json().id);", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{M2M_TOKEN}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"{{name}}\",\n \"description\": \"{{description}}\",\n \"privateGroup\": {{privateGroup}},\n \"selfRegister\": {{selfRegister}},\n \"domain\": \"{{domain}}\",\n \"ssoId\": \"{{ssoId}}\",\n \"organizationId\": \"{{organizationId}}\",\n \"status\": \"{{status}}\"\n}" + }, + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID2}}/subGroup", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID2}}", + "subGroup" + ] + } + }, + "response": [] + }, + { + "name": "create sub group invalid id 404", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 404`, function () {", + " pm.response.to.have.status(404);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{M2M_TOKEN}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"string\",\n \"description\": \"string\",\n \"privateGroup\": true,\n \"selfRegister\": true,\n \"domain\": \"string\",\n \"ssoId\": \"string\",\n \"organizationId\": \"string\",\n \"status\": \"active\"\n}" + }, + "url": { + "raw": "{{URL}}/groups/fe6d0a58-ce7d-4521-8501-b8132b1c0311/subGroup", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "fe6d0a58-ce7d-4521-8501-b8132b1c0311", + "subGroup" + ] + } + }, + "response": [] + }, + { + "name": "create sub group with all kinds of invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " if (response.message) {", + " pm.expect(response.message).to.eq(iterationData.get('message'))", + " } else if (response.result) {", + " pm.expect(response.result.content.message).to.eq(iterationData.get('message'))", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "{{jwtToken}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"string\",\n \"description\": \"string\",\n \"privateGroup\": true,\n \"selfRegister\": true,\n \"domain\": \"string\",\n \"ssoId\": \"string\",\n \"organizationId\": \"string\",\n \"status\": \"active\"\n}" + }, + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}/subGroup", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}", + "subGroup" + ] + } + }, + "response": [] + }, + { + "name": "create sub group with all kinds of invalid request body", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " pm.expect(response.message).to.eq(iterationData.get('message'))", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"{{required_field_1}}\": {{name}},\n \"description\": {{description}},\n \"{{required_field_2}}\": {{privateGroup}},\n \"{{required_field_3}}\": {{selfRegister}},\n \"domain\": {{domain}},\n \"ssoId\": {{ssoId}},\n \"organizationId\": {{organizationId}},\n \"status\": {{status}}\n}" + }, + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}/subGroup", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}", + "subGroup" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "delete sub group", + "item": [ + { + "name": "delete sub group by admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 204`, function () {", + " pm.response.to.have.status(204);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}/subGroup/{{SUBGROUP_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}", + "subGroup", + "{{SUBGROUP_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "delete sub group by m2m", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 204`, function () {", + " pm.response.to.have.status(204);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{M2M_TOKEN}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID2}}/subGroup/{{SUBGROUP_ID2}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID2}}", + "subGroup", + "{{SUBGROUP_ID2}}" + ] + } + }, + "response": [] + }, + { + "name": "delete sub group with all kinds of invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " if (response.message) {", + " pm.expect(response.message).to.eq(iterationData.get('message'))", + " } else if (response.result) {", + " pm.expect(response.result.content.message).to.eq(iterationData.get('message'))", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "{{jwtToken}}" + } + ], + "url": { + "raw": "{{URL}}/groups/{{GROUP_ID}}/subGroup/{{SUBGROUP_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "groups", + "{{GROUP_ID}}", + "subGroup", + "{{SUBGROUP_ID}}" + ] + } + }, + "response": [] + } + ] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ] + }, + { + "name": "Group Roles", + "item": [ + { + "name": "create group role", + "item": [ + { + "name": "create group role by admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"groupId\": \"{{groupId}}\",\n \"role\": \"{{role}}\"\n}" + }, + "url": { + "raw": "{{URL}}/group-roles/users/{{USER_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "group-roles", + "users", + "{{USER_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "create group role by m2m", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{M2M_TOKEN}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"groupId\": \"{{groupId}}\",\n \"role\": \"{{role}}\"\n}" + }, + "url": { + "raw": "{{URL}}/group-roles/users/{{USER_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "group-roles", + "users", + "{{USER_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "create group role with all kinds of invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " if (response.message) {", + " pm.expect(response.message).to.eq(iterationData.get('message'))", + " } else if (response.result) {", + " pm.expect(response.result.content.message).to.eq(iterationData.get('message'))", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "{{jwtToken}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"groupId\": \"{{GROUP_ID}}\",\n \"role\": \"groupManager\"\n}" + }, + "url": { + "raw": "{{URL}}/group-roles/users/{{USER_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "group-roles", + "users", + "{{USER_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "create group role with all kinds of invalid request body", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " if (iterationData.get('message')) {", + " pm.expect(response.message).to.eq(iterationData.get('message'))", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"{{required_field_1}}\": {{groupId}},\n \"{{required_field_2}}\": {{role}}\n}" + }, + "url": { + "raw": "{{URL}}/group-roles/users/{{userId}}", + "host": [ + "{{URL}}" + ], + "path": [ + "group-roles", + "users", + "{{userId}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "delete group role", + "item": [ + { + "name": "delete group role by admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 204`, function () {", + " pm.response.to.have.status(204);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n \"groupId\": \"{{groupId}}\",\r\n \"role\": \"{{role}}\"\r\n}" + }, + "url": { + "raw": "{{URL}}/group-roles/users/{{USER_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "group-roles", + "users", + "{{USER_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "delete group role by m2m", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 204`, function () {", + " pm.response.to.have.status(204);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{M2M_TOKEN}}" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n \"groupId\": \"{{groupId}}\",\r\n \"role\": \"{{role}}\"\r\n}" + }, + "url": { + "raw": "{{URL}}/group-roles/users/{{USER_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "group-roles", + "users", + "{{USER_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "delete group role with all kinds of invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " if (response.message) {", + " pm.expect(response.message).to.eq(iterationData.get('message'))", + " } else if (response.result) {", + " pm.expect(response.result.content.message).to.eq(iterationData.get('message'))", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "{{jwtToken}}" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n \"groupId\": \"{{GROUP_ID2}}\",\r\n \"role\": \"groupAdmin\"\r\n}" + }, + "url": { + "raw": "{{URL}}/group-roles/users/{{USER_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "group-roles", + "users", + "{{USER_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "delete group role with all kinds of invalid request body", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " if (iterationData.get('message')) {", + " pm.expect(response.message).to.eq(iterationData.get('message'))", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"{{required_field_1}}\": {{groupId}},\n \"{{required_field_2}}\": {{role}}\n}" + }, + "url": { + "raw": "{{URL}}/group-roles/users/{{USER_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "group-roles", + "users", + "{{USER_ID}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "search group role", + "item": [ + { + "name": "search group role by admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.length).to.be.gte(1)", + " pm.expect(response[0].groupId).to.be.a('string')", + " pm.expect(response[0].role).to.be.a('string')", + " pm.expect(response[0].createdAt).to.be.a('string')", + " pm.expect(response[0].createdBy).to.be.a('string')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "url": { + "raw": "{{URL}}/group-roles/users/{{USER_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "group-roles", + "users", + "{{USER_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "search group role by m2m", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.length).to.be.gte(1)", + " pm.expect(response[0].groupId).to.be.a('string')", + " pm.expect(response[0].role).to.be.a('string')", + " pm.expect(response[0].createdAt).to.be.a('string')", + " pm.expect(response[0].createdBy).to.be.a('string')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{M2M_TOKEN}}" + } + ], + "url": { + "raw": "{{URL}}/group-roles/users/{{USER_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "group-roles", + "users", + "{{USER_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "search group role with valid parameters", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(`Status code is 200`, function () {", + " pm.response.to.have.status(200);", + " const response = pm.response.json()", + " pm.expect(response.length).to.be.gte(1)", + " pm.expect(response[0].groupId).to.be.a('string')", + " pm.expect(response[0].role).to.be.a('string')", + " pm.expect(response[0].createdAt).to.be.a('string')", + " pm.expect(response[0].createdBy).to.be.a('string')", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{M2M_TOKEN}}" + } + ], + "url": { + "raw": "{{URL}}/group-roles/users/{{USER_ID}}?page={{page}}&perPage={{perPage}}", + "host": [ + "{{URL}}" + ], + "path": [ + "group-roles", + "users", + "{{USER_ID}}" + ], + "query": [ + { + "key": "page", + "value": "{{page}}" + }, + { + "key": "perPage", + "value": "{{perPage}}" + } + ] + } + }, + "response": [] + }, + { + "name": "search group role with all kinds of invalid parameter", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " pm.expect(response.message).to.eq(iterationData.get('message'))", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "type": "text", + "value": "Bearer {{admin_token}}" + } + ], + "url": { + "raw": "{{URL}}/group-roles/users/{{USER_ID}}?page={{page}}&perPage={{perPage}}", + "host": [ + "{{URL}}" + ], + "path": [ + "group-roles", + "users", + "{{USER_ID}}" + ], + "query": [ + { + "key": "page", + "value": "{{page}}" + }, + { + "key": "perPage", + "value": "{{perPage}}" + } + ] + } + }, + "response": [] + }, + { + "name": "search group role with all kinds of invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData", + "const httpCode = iterationData.get('httpCode')", + "pm.test(`Status code is ${httpCode}`, function () {", + " pm.response.to.have.status(httpCode);", + " const response = pm.response.json()", + " if (response.message) {", + " pm.expect(response.message).to.eq(iterationData.get('message'))", + " } else if (response.result) {", + " pm.expect(response.result.content.message).to.eq(iterationData.get('message'))", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json" + }, + { + "key": "Content-Type", + "type": "text", + "value": "application/json" + }, + { + "key": "Authorization", + "type": "text", + "value": "{{jwtToken}}" + } + ], + "url": { + "raw": "{{URL}}/group-roles/users/{{USER_ID}}", + "host": [ + "{{URL}}" + ], + "path": [ + "group-roles", + "users", + "{{USER_ID}}" + ] + } + }, + "response": [] + } + ] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ] + } + ] +} \ No newline at end of file diff --git a/test/postman/groups-api.postman_environment.json b/test/postman/groups-api.postman_environment.json new file mode 100644 index 0000000..42a7fce --- /dev/null +++ b/test/postman/groups-api.postman_environment.json @@ -0,0 +1,495 @@ +{ + "_": { + "postman_variable_scope": "environment", + "postman_exported_at": "2021-07-24T10:43:48.171Z", + "postman_exported_using": "Newman/5.2.4" + }, + "id": "ec2d9951-1a29-4778-a6c9-79245e70f6f8", + "name": "groups-api", + "values": [ + { + "type": "any", + "value": "http://localhost:3000", + "key": "URL" + }, + { + "type": "any", + "value": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ik5VSkZORGd4UlRVME5EWTBOVVkzTlRkR05qTXlRamxETmpOQk5UYzVRVUV3UlRFeU56TTJRUSJ9.eyJpc3MiOiJodHRwczovL3RvcGNvZGVyLWRldi5hdXRoMC5jb20vIiwic3ViIjoiakdJZjJwZDNmNDRCMWpxdk9haTMwQklLVFphbllCZlVAY2xpZW50cyIsImF1ZCI6Imh0dHBzOi8vbTJtLnRvcGNvZGVyLWRldi5jb20vIiwiaWF0IjoxNjI3MDYyNTQyLCJleHAiOjE2MjcxNDg5NDIsImF6cCI6ImpHSWYycGQzZjQ0QjFqcXZPYWkzMEJJS1RaYW5ZQmZVIiwic2NvcGUiOiJ1cGRhdGU6dXNlcl9wcm9maWxlcyB3cml0ZTp1c2VyX3Byb2ZpbGVzIGNyZWF0ZTpjb25uZWN0X3Byb2plY3QgYWxsOmNoYWxsZW5nZXMgcmVhZDpjaGFsbGVuZ2VzIHdyaXRlOmNoYWxsZW5nZXMgYWxsOmdyb3VwcyB3cml0ZTpncm91cHMgcmVhZDpncm91cHMgdXBkYXRlOnN1Ym1pc3Npb24gcmVhZDpzdWJtaXNzaW9uIGRlbGV0ZTpzdWJtaXNzaW9uIGNyZWF0ZTpzdWJtaXNzaW9uIGFsbDpzdWJtaXNzaW9uIHVwZGF0ZTpyZXZpZXdfdHlwZSByZWFkOnJldmlld190eXBlIGRlbGV0ZTpyZXZpZXdfdHlwZSBhbGw6cmV2aWV3X3R5cGUgdXBkYXRlOnJldmlld19zdW1tYXRpb24gcmVhZDpyZXZpZXdfc3VtbWF0aW9uIGRlbGV0ZTpyZXZpZXdfc3VtbWF0aW9uIGNyZWF0ZTpyZXZpZXdfc3VtbWF0aW9uIGFsbDpyZXZpZXdfc3VtbWF0aW9uIHVwZGF0ZTpyZXZpZXcgcmVhZDpyZXZpZXcgZGVsZXRlOnJldmlldyBjcmVhdGU6cmV2aWV3IGFsbDpyZXZpZXcgcmVhZDpwcm9qZWN0IGFsbDpjb25uZWN0X3Byb2plY3QgcmVhZDpidXNfdG9waWNzIHdyaXRlOmJ1c19hcGkgcmVhZDplbWFpbF90ZW1wbGF0ZXMgcmVhZDp1c2VyX3Byb2ZpbGVzIHJlYWQ6cm9sZXMgcmVhZDpwcm9qZWN0LXVzZXIgcmVhZDpwcm9qZWN0LXBlcm1pc3Npb24gcmVhZDpyZXNvdXJjZXMgd3JpdGU6cmVzb3VyY2VzIGRlbGV0ZTpyZXNvdXJjZXMgdXBkYXRlOnJlc291cmNlcyBhbGw6cmVzb3VyY2VzIHJlYWQ6dGVybXMgYWxsOnRlcm1zIGFsbDpwcm9qZWN0cyByZWFkOnByb2plY3RzIGFsbDpzY2hlZHVsZXMgcmVhZDpzY2hlZHVsZXMgY3JlYXRlOnNjaGVkdWxlcyB1cGRhdGU6c2NoZWR1bGVzIGRlbGV0ZTpzY2hlZHVsZXMgcmVhZDpwcm9qZWN0LWJpbGxpbmctYWNjb3VudC1kZXRhaWxzIiwiZ3R5IjoiY2xpZW50LWNyZWRlbnRpYWxzIn0.hXoj7avneUFKRNCnJkVCK4U00pIL2mauP-8ltjc2WaG3BIi_JUcJVPS8acd9TxgXhn9TPEYDLusci9b5WvWge_YyiRgum9PoQRcOnPduevw1nL9xzZeWXI9-1hReboqOkVLS-XkLxoB8FGTQMUGCGRLlSoa_NYEtgQJJ-4xa142zSP8eDbrXA3VHsHT7TyTe5bNCqJOkC643qlON2Goxov7cPDxXj26g5fODxjfQKIAhnyd3b_cKT_IIEiUZsUWXYrJ1BTFRrVKp1F3Zj3ZlX7_LwygBwXCL7M_qspL1RXSSdKlwfZg1TaCFP84kEtjFwLlTeEM1Kqm9NL4sM6zWeA", + "key": "M2M_TOKEN" + }, + { + "type": "any", + "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJjb3BpbG90IiwiYWRtaW5pc3RyYXRvciIsIkNvbm5lY3QgQWRtaW4iLCJUb3Bjb2RlciBVc2VyIl0sImlzcyI6Imh0dHBzOi8vYXBpLnRvcGNvZGVyLWRldi5jb20iLCJoYW5kbGUiOiJqY29yaSIsImV4cCI6MTYyNzEyMzk2NSwidXNlcklkIjoiNDAwMjk0ODQiLCJpYXQiOjE2MjcxMjMzNjUsImVtYWlsIjoiamNvcmkrZGV2QHRvcGNvZGVyLmNvbSIsImp0aSI6IjA0ODQ5OTFiLTRmZGUtNDE2ZC05ZjBiLWU1MzdmNDNlZjRhNCJ9.rq1fPoT3UU-Swbgu7wzhKB3sovdbF4WZH0ECKMNtIt8", + "key": "admin_token" + }, + { + "type": "any", + "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJCdXNpbmVzcyBVc2VyIiwiVG9wY29kZXIgVXNlciJdLCJpc3MiOiJodHRwczovL2FwaS50b3Bjb2Rlci1kZXYuY29tIiwiaGFuZGxlIjoidGNfdGVzdGVyNzc3IiwiZXhwIjoxNjI3MTIzOTcyLCJ1c2VySWQiOiI4ODc3NDYxNSIsImlhdCI6MTYyNzEyMzM3MiwiZW1haWwiOiJ6Ym5vb2JAZ21haWwuY29tIiwianRpIjoiMGIxYjVkM2MtMzI1YS00ZWI3LThiMTQtZjYzYmEzNjRkYzMwIn0.ps0SO6oLAk_cybyejRgMrSQfFA_AY2e4aE_g0Ihb-eQ", + "key": "user_token" + }, + { + "type": "any", + "value": { + "jwtToken": "Bearer invalid", + "httpCode": 403, + "message": "Invalid Token." + }, + "key": "0" + }, + { + "type": "any", + "value": "494deb47-88f3-455c-ab4c-c704ee92c7c6", + "key": "GROUP_ID" + }, + { + "type": "any", + "value": "acf6cebc-cc56-4d10-a869-58979e09394b", + "key": "GROUP_ID2" + }, + { + "type": "any", + "value": "faa53292-59c7-48dd-846f-6d125c8ab292", + "key": "SUBGROUP_ID" + }, + { + "type": "any", + "value": "219f0663-c093-4ba3-b9a1-7162d829bed9", + "key": "SUBGROUP_ID2" + }, + { + "type": "any", + "value": { + "jwtToken": "Bearer {{user_token}}", + "httpCode": 403, + "message": "You are not allowed to perform this action" + }, + "key": "1" + }, + { + "type": "any", + "value": { + "httpCode": 403, + "message": "No token provided." + }, + "key": "2" + }, + { + "type": "any", + "value": { + "page": 1, + "perPage": -10, + "httpCode": 400, + "message": "\"perPage\" must be larger than or equal to 1" + }, + "key": "3" + }, + { + "type": "any", + "value": { + "memberId": "id", + "universalUID": "id", + "membershipType": "group", + "name": "name", + "page": 1, + "perPage": 10, + "oldId": "1", + "ssoId": "sso id", + "organizationId": "id", + "selfRegister": "invalid", + "privateGroup": true, + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": false, + "status": "active", + "httpCode": 400, + "message": "\"selfRegister\" must be a boolean" + }, + "key": "4" + }, + { + "type": "any", + "value": { + "memberId": "id", + "universalUID": "id", + "membershipType": "group", + "name": "name", + "page": 1, + "perPage": 10, + "oldId": "1", + "ssoId": "sso id", + "organizationId": "id", + "selfRegister": true, + "privateGroup": "invalid", + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": false, + "status": "active", + "httpCode": 400, + "message": "\"privateGroup\" must be a boolean" + }, + "key": "5" + }, + { + "type": "any", + "value": { + "memberId": "id", + "universalUID": "id", + "membershipType": "group", + "name": "name", + "page": 1, + "perPage": 10, + "oldId": "1", + "ssoId": "sso id", + "organizationId": "id", + "selfRegister": true, + "privateGroup": true, + "includeSubGroups": "invalid", + "includeParentGroup": false, + "oneLevel": false, + "status": "active", + "httpCode": 400, + "message": "\"includeSubGroups\" must be a boolean" + }, + "key": "6" + }, + { + "type": "any", + "value": { + "memberId": "id", + "universalUID": "id", + "membershipType": "group", + "name": "name", + "page": 1, + "perPage": 10, + "oldId": "1", + "ssoId": "sso id", + "organizationId": "id", + "selfRegister": true, + "privateGroup": true, + "includeSubGroups": false, + "includeParentGroup": "invalid", + "oneLevel": false, + "status": "active", + "httpCode": 400, + "message": "\"includeParentGroup\" must be a boolean" + }, + "key": "7" + }, + { + "type": "any", + "value": { + "memberId": "id", + "universalUID": "id", + "membershipType": "group", + "name": "name", + "page": 1, + "perPage": 10, + "oldId": "1", + "ssoId": "sso id", + "organizationId": "id", + "selfRegister": true, + "privateGroup": true, + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": "invalid", + "status": "active", + "httpCode": 400, + "message": "\"oneLevel\" must be a boolean" + }, + "key": "8" + }, + { + "type": "any", + "value": { + "memberId": "id", + "universalUID": "id", + "membershipType": "group", + "name": "name", + "page": 1, + "perPage": 10, + "oldId": "1", + "ssoId": "sso id", + "organizationId": "id", + "selfRegister": true, + "privateGroup": true, + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": true, + "status": "invalid_status", + "httpCode": 400, + "message": "\"status\" must be one of [active, inactive]" + }, + "key": "9" + }, + { + "type": "any", + "value": { + "memberIdField": "memberId", + "membershipTypeField": "", + "universalUIDField": "universalUID", + "memberId": "id", + "universalUID": "id", + "membershipType": "", + "name": "name", + "page": 1, + "perPage": 10, + "oldId": "1", + "ssoId": "sso id", + "organizationId": "id", + "selfRegister": true, + "privateGroup": true, + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": true, + "status": "active", + "httpCode": 400, + "message": "The membershipType parameter should be provided if memberId is provided." + }, + "key": "10" + }, + { + "type": "any", + "value": { + "memberIdField": "", + "membershipTypeField": "membershipType", + "universalUIDField": "", + "memberId": "", + "universalUID": "", + "membershipType": "group", + "name": "name", + "page": 1, + "perPage": 10, + "oldId": "1", + "ssoId": "sso id", + "organizationId": "id", + "selfRegister": true, + "privateGroup": true, + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": true, + "status": "active", + "httpCode": 400, + "message": "The memberId or universalUID parameter should be provided if membershipType is provided." + }, + "key": "11" + }, + { + "type": "any", + "value": { + "memberIdField": "memberId", + "membershipTypeField": "membershipType", + "universalUIDField": "universalUID", + "memberId": "id", + "universalUID": "id", + "membershipType": "invalid", + "name": "name", + "page": 1, + "perPage": 10, + "oldId": "1", + "ssoId": "sso id", + "organizationId": "id", + "selfRegister": true, + "privateGroup": true, + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": true, + "status": "active", + "httpCode": 400, + "message": "\"membershipType\" must be one of [group, user]" + }, + "key": "12" + }, + { + "type": "any", + "value": { + "memberIdField": "memberId", + "membershipTypeField": "membershipType", + "universalUIDField": "universalUID", + "memberId": "id", + "universalUID": "id", + "membershipType": "group", + "name": "", + "page": 1, + "perPage": 10, + "oldId": "1", + "ssoId": "sso id", + "organizationId": "id", + "selfRegister": true, + "privateGroup": true, + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": true, + "status": "active", + "httpCode": 400, + "message": "\"name\" is not allowed to be empty" + }, + "key": "13" + }, + { + "type": "any", + "value": { + "memberIdField": "memberId", + "membershipTypeField": "membershipType", + "universalUIDField": "universalUID", + "memberId": "id", + "universalUID": "id", + "membershipType": "group", + "name": "name", + "page": 1, + "perPage": 10, + "oldId": "", + "ssoId": "sso id", + "organizationId": "id", + "selfRegister": true, + "privateGroup": true, + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": true, + "status": "active", + "httpCode": 400, + "message": "\"oldId\" is not allowed to be empty" + }, + "key": "14" + }, + { + "type": "any", + "value": { + "memberIdField": "memberId", + "membershipTypeField": "membershipType", + "universalUIDField": "universalUID", + "memberId": "id", + "universalUID": "id", + "membershipType": "group", + "name": "name", + "page": 1, + "perPage": 10, + "oldId": "1", + "ssoId": "", + "organizationId": "id", + "selfRegister": true, + "privateGroup": true, + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": true, + "status": "active", + "httpCode": 400, + "message": "\"ssoId\" is not allowed to be empty" + }, + "key": "15" + }, + { + "type": "any", + "value": { + "memberIdField": "memberId", + "membershipTypeField": "membershipType", + "universalUIDField": "universalUID", + "memberId": "id", + "universalUID": "id", + "membershipType": "group", + "name": "name", + "page": 1, + "perPage": 10, + "oldId": "1", + "ssoId": "id", + "organizationId": "", + "selfRegister": true, + "privateGroup": true, + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": true, + "status": "active", + "httpCode": 400, + "message": "\"organizationId\" is not allowed to be empty" + }, + "key": "16" + }, + { + "type": "any", + "value": { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": false, + "oldId": "\"1\"", + "httpCode": 400, + "message": "\"status\" must be a string" + }, + "key": "17" + }, + { + "type": "any", + "value": { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "oldId": "\"\"", + "httpCode": 400, + "message": "\"oldId\" is not allowed to be empty" + }, + "key": "18" + }, + { + "type": "any", + "value": "universal_id2", + "key": "GROUP_MEMBER_UNIVERSAL_ID" + }, + { + "type": "any", + "value": "1", + "key": "GROUP_OLD_ID" + }, + { + "type": "any", + "value": { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "oldId": true, + "httpCode": 400, + "message": "\"oldId\" must be a string" + }, + "key": "19" + }, + { + "type": "any", + "value": "40029484", + "key": "ADMIN_ID" + }, + { + "type": "any", + "value": "88774615", + "key": "USER_ID" + }, + { + "type": "any", + "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJDb25uZWN0IENvcGlsb3QiLCJjb3BpbG90IiwiVG9wY29kZXIgVXNlciJdLCJpc3MiOiJodHRwczovL2FwaS50b3Bjb2Rlci1kZXYuY29tIiwiaGFuZGxlIjoiVENDb25uQ29waWxvdCIsImV4cCI6MTYyNzEyMzk2OSwidXNlcklkIjoiNDAxNTg5OTQiLCJpYXQiOjE2MjcxMjMzNjksImVtYWlsIjoidG9wY29kZXJjb25uZWN0K0NvcGlsb3RAZ21haWwuY29tIiwianRpIjoiZDgzYTFkYjktNmY3MC00NDI3LWJhM2MtYjRkMzBjYjFjM2Y3In0.HWFWN68xphWxdLCV2bYFDDF3S95uDK-Dr2r2t73ui8M", + "key": "copilot_token" + } + ], + "_postman_variable_scope": "environment", + "_postman_exported_at": "2021-07-24T10:43:49.421Z", + "_postman_exported_using": "Newman/5.2.4" +} \ No newline at end of file diff --git a/test/postman/newman.js b/test/postman/newman.js new file mode 100644 index 0000000..1bb30da --- /dev/null +++ b/test/postman/newman.js @@ -0,0 +1,350 @@ +const apiTestLib = require('tc-api-testing-lib') +const logger = require('../../src/common/logger') +const helper = require('../../src/common/helper') +const config = require('config') + +const requests = [ + { + folder: 'health check' + }, + { + folder: 'create group by admin', + iterationData: require('./testData/group/create-group-by-admin.json') + }, + { + folder: 'create group by m2m', + iterationData: require('./testData/group/create-group-by-m2m.json') + }, + { + folder: 'create sub group by admin', + iterationData: require('./testData/sub-group/create-sub-group-by-admin.json') + }, + { + folder: 'create sub group by m2m', + iterationData: require('./testData/sub-group/create-sub-group-by-m2m.json') + }, + { + folder: 'create sub group invalid id 404' + }, + { + folder: 'create sub group with all kinds of invalid request body', + iterationData: require('./testData/sub-group/create-sub-group-with-invalid-data.json') + }, + { + folder: 'create sub group with all kinds of invalid token', + iterationData: require('./testData/sub-group/create-sub-group-with-invalid-tokens.json') + }, + { + folder: 'create group with all kinds of invalid token', + iterationData: require('./testData/group/create-group-with-invalid-tokens.json') + }, + { + folder: 'create group with all kinds of invalid request body', + iterationData: require('./testData/group/create-group-with-invalid-data.json') + }, + { + folder: 'create group membership by admin', + iterationData: require('./testData/group-membership/create-group-membership-by-admin.json') + }, + { + folder: 'create group role by admin', + iterationData: require('./testData/group-role/create-group-role-by-admin.json') + }, + { + folder: 'delete group role by admin', + iterationData: require('./testData/group-role/delete-group-role-by-admin.json') + }, + { + folder: 'create group role with all kinds of invalid token', + iterationData: require('./testData/group-role/create-group-role-with-invalid-tokens.json') + }, + { + folder: 'create group role by m2m', + iterationData: require('./testData/group-role/create-group-role-by-m2m.json') + }, + { + folder: 'create group role with all kinds of invalid request body', + iterationData: require('./testData/group-role/create-group-role-with-invalid-data.json') + }, + { + folder: 'search group role by admin' + }, + { + folder: 'search group role by m2m' + }, + { + folder: 'search group role with valid parameters', + iterationData: require('./testData/group-role/search-group-role-with-valid-parameters.json') + }, + { + folder: 'search group role with all kinds of invalid parameter', + iterationData: require('./testData/group-role/search-group-role-with-invalid-parameters.json') + }, + { + folder: 'search group role with all kinds of invalid token', + iterationData: require('./testData/group-role/search-group-role-with-invalid-tokens.json') + }, + { + folder: 'delete group role by m2m', + iterationData: require('./testData/group-role/delete-group-role-by-m2m.json') + }, + { + folder: 'delete group role with all kinds of invalid token', + iterationData: require('./testData/group-role/delete-group-role-with-invalid-tokens.json') + }, + { + folder: 'create group membership by m2m', + iterationData: require('./testData/group-membership/create-group-membership-by-m2m.json') + }, + { + folder: 'update group by m2m', + iterationData: require('./testData/group/update-group-by-m2m.json') + }, + { + folder: 'create group membership with all kinds of invalid request body', + iterationData: require('./testData/group-membership/create-group-membership-with-invalid-data.json') + }, + { + folder: 'delete group membership by admin' + }, + { + folder: 'create group membership by user', + iterationData: require('./testData/group-membership/create-group-membership-by-user.json') + }, + { + folder: 'update group by admin', + iterationData: require('./testData/group/update-group-by-admin.json') + }, + { + folder: 'update group with all kinds of invalid request body', + iterationData: require('./testData/group/update-group-with-invalid-data.json') + }, + { + folder: 'update group with all kinds of invalid token', + iterationData: require('./testData/group/update-group-with-invalid-tokens.json') + }, + { + folder: 'update group invalid id 404' + }, + { + folder: 'get group by admin', + iterationData: require('./testData/group/get-group-by-admin.json') + }, + { + folder: 'get group by m2m', + iterationData: require('./testData/group/get-group-by-m2m.json') + }, + { + folder: 'get group by user', + iterationData: require('./testData/group/get-group-by-user.json') + }, + { + folder: 'get group with valid parameters', + iterationData: require('./testData/group/get-group-with-valid-parameters') + }, + { + folder: 'get group with all kinds of invalid token', + iterationData: require('./testData/group/get-group-with-invalid-tokens.json') + }, + { + folder: 'get group with all kinds of invalid parameter', + iterationData: require('./testData/group/get-group-with-invalid-parameters.json') + }, + { + folder: 'get group invalid id 404' + }, + { + folder: 'get group with old id by admin' + }, + { + folder: 'get group with old id by m2m' + }, + { + folder: 'get group with old id by user' + }, + { + folder: 'get group with old id with valid parameters', + iterationData: require('./testData/group/get-group-by-old-id-with-valid-parameters') + }, + { + folder: 'get group with old id with all kinds of invalid token', + iterationData: require('./testData/group/get-group-by-old-id-with-invalid-tokens.json') + }, + { + folder: 'get group with old id with all kinds of invalid parameter', + iterationData: require('./testData/group/get-group-by-old-id-with-invalid-parameters.json') + }, + { + folder: 'search group by admin' + }, + { + folder: 'search group by m2m' + }, + { + folder: 'search group by user' + }, + { + folder: 'search group with valid parameters', + iterationData: require('./testData/group/search-group-with-valid-parameters.json') + }, + { + folder: 'search group with all kinds of invalid parameter', + iterationData: require('./testData/group/search-group-with-invalid-parameters.json') + }, + { + folder: 'search group with all kinds of invalid token', + iterationData: require('./testData/group/search-group-with-invalid-tokens.json') + }, + { + folder: 'create group membership with all kinds of invalid token', + iterationData: require('./testData/group-membership/create-group-membership-with-invalid-tokens.json') + }, + { + folder: 'get group member groups by admin' + }, + { + folder: 'get group member groups by m2m' + }, + { + folder: 'get group member groups by user' + }, + { + folder: 'get group member groups with all kinds of invalid token', + iterationData: require('./testData/group-membership/get-group-membership-member-groups-with-invalid-tokens.json') + }, + { + folder: 'search group membership by admin' + }, + { + folder: 'search group membership by m2m' + }, + { + folder: 'search group membership by user' + }, + { + folder: 'search group membership with valid parameters', + iterationData: require('./testData/group-membership/search-group-membership-with-valid-parameters.json') + }, + { + folder: 'search group membership with all kinds of invalid parameter', + iterationData: require('./testData/group-membership/search-group-membership-with-invalid-parameters.json') + }, + { + folder: 'search group membership with all kinds of invalid token', + iterationData: require('./testData/group-membership/search-group-membership-with-invalid-tokens.json') + }, + { + folder: 'get group membership by admin' + }, + { + folder: 'get group membership by m2m' + }, + { + folder: 'get group membership by user' + }, + { + folder: 'get group membership with all kinds of invalid token', + iterationData: require('./testData/group-membership/get-group-membership-with-invalid-tokens.json') + }, + { + folder: 'get group membership invalid id 404' + }, + { + folder: 'get group membership count without parameters' + }, + { + folder: 'get group membership count invalid id 404' + }, + { + folder: 'get group membership count with invalid parameters', + iterationData: require('./testData/group-membership/get-group-membership-count-with-invalid-parameters.json') + }, + { + folder: 'get group membership count with valid parameters', + iterationData: require('./testData/group-membership/get-group-membership-count-with-valid-parameters.json') + }, + { + folder: 'get group members list without parameters' + }, + { + folder: 'get group members list with valid parameters', + iterationData: require('./testData/group-membership/get-group-members-list-with-valid-parameters.json') + }, + { + folder: 'get group members list with invalid parameters', + iterationData: require('./testData/group-membership/get-group-members-list-with-invalid-parameters.json') + }, + { + folder: 'delete sub group by admin' + }, + { + folder: 'delete sub group by m2m' + }, + { + folder: 'delete sub group invalid id 404', + iterationData: require('./testData/sub-group/delete-sub-group-not-found.json') + + }, + { + folder: 'delete sub group with all kinds of invalid token', + iterationData: require('./testData/sub-group/delete-sub-group-with-invalid-tokens.json') + }, + { + folder: 'delete group membership (group)' + }, + { + folder: 'delete group membership invalid id 404' + }, + { + folder: 'delete group membership with all kinds of invalid token', + iterationData: require('./testData/group-membership/delete-group-membership-with-invalid-tokens.json') + }, + { + folder: 'delete group membership by m2m' + }, + { + folder: 'delete group membership by user' + }, + { + folder: 'delete group membership (group)' + }, + { + folder: 'delete group with all kinds of invalid token', + iterationData: require('./testData/group/delete-group-with-invalid-tokens.json') + }, + { + folder: 'delete group invalid id 404' + }, + { + folder: 'delete group by admin' + }, + { + folder: 'delete group by m2m' + } +] + +/** + * Clear the test data. + * @return {Promise} + */ + async function clearTestData () { + logger.info('Clear the Postman test data.') + await helper.postRequest(`${config.HOST}/groups/internal/jobs/clean`) + logger.info('Finished clear the Postman test data.') +} + +/** + * Run the postman tests. + */ +apiTestLib.runTests(requests, require.resolve('./groups-api.postman_collection.json'), + require.resolve('./groups-api.postman_environment.json')).then(async () => { + logger.info('newman test completed!') + await clearTestData() + }).catch(async (err) => { + logger.logFullError(err) + + // Only calling the clean up function when it is not validation error. + if (err.name !== 'ValidationError') { + await clearTestData() + } + }) diff --git a/test/postman/testData/group-membership/create-group-membership-by-admin.json b/test/postman/testData/group-membership/create-group-membership-by-admin.json new file mode 100644 index 0000000..90af216 --- /dev/null +++ b/test/postman/testData/group-membership/create-group-membership-by-admin.json @@ -0,0 +1,7 @@ +[ + { + "memberId": "{{USER_ID}}", + "membershipType": "user", + "httpCode": 200 + } +] diff --git a/test/postman/testData/group-membership/create-group-membership-by-m2m.json b/test/postman/testData/group-membership/create-group-membership-by-m2m.json new file mode 100644 index 0000000..f864cf0 --- /dev/null +++ b/test/postman/testData/group-membership/create-group-membership-by-m2m.json @@ -0,0 +1,7 @@ +[ + { + "universalUID": "universal_id2", + "membershipType": "user", + "httpCode": 200 + } +] diff --git a/test/postman/testData/group-membership/create-group-membership-by-user.json b/test/postman/testData/group-membership/create-group-membership-by-user.json new file mode 100644 index 0000000..90af216 --- /dev/null +++ b/test/postman/testData/group-membership/create-group-membership-by-user.json @@ -0,0 +1,7 @@ +[ + { + "memberId": "{{USER_ID}}", + "membershipType": "user", + "httpCode": 200 + } +] diff --git a/test/postman/testData/group-membership/create-group-membership-with-group.json b/test/postman/testData/group-membership/create-group-membership-with-group.json new file mode 100644 index 0000000..775b823 --- /dev/null +++ b/test/postman/testData/group-membership/create-group-membership-with-group.json @@ -0,0 +1,7 @@ +[ + { + "memberId": "{{GROUP_ID2}}", + "membershipType": "group", + "httpCode": 200 + } +] diff --git a/test/postman/testData/group-membership/create-group-membership-with-invalid-data.json b/test/postman/testData/group-membership/create-group-membership-with-invalid-data.json new file mode 100644 index 0000000..6a2d4f1 --- /dev/null +++ b/test/postman/testData/group-membership/create-group-membership-with-invalid-data.json @@ -0,0 +1,101 @@ +[ + { + "groupId": "{{GROUP_ID2}}", + "required_field_1": "memberId", + "required_field_2": "membershipType", + "memberId": "\"{{USER_ID}}\"", + "membershipType": "\"user\"", + "httpCode": 409, + "message": "The member is already in the group" + }, + { + "groupId": "{{GROUP_ID2}}", + "required_field_1": "memberId", + "required_field_2": "membershipType", + "memberId": "\"{{GROUP_ID}}\"", + "membershipType": "\"group\"", + "httpCode": 409, + "message": "Parent group is private, the child group must be private too." + }, + { + "groupId": "{{GROUP_ID}}", + "required_field_1": "memberId_not_provided", + "required_field_2": "membershipType", + "memberId": "\"{{USER_ID}}\"", + "membershipType": "\"user\"", + "httpCode": 400, + "message": "\"memberId\" is required, \"universalUID\" is required" + }, + { + "groupId": "{{GROUP_ID}}", + "required_field_1": "memberId", + "required_field_2": "membershipType_not_provided", + "memberId": "\"{{USER_ID}}\"", + "membershipType": "\"user\"", + "httpCode": 400, + "message": "\"membershipType\" is required, \"universalUID\" is required" + }, + { + "groupId": "{{GROUP_ID}}", + "required_field_1": "memberId", + "required_field_2": "membershipType", + "memberId": "\"\"", + "membershipType": "\"user\"", + "httpCode": 400, + "message": "\"memberId\" is not allowed to be empty, \"universalUID\" is required" + }, + { + "groupId": "{{GROUP_ID}}", + "required_field_1": "memberId", + "required_field_2": "membershipType", + "memberId": -1, + "membershipType": "\"user\"", + "httpCode": 400, + "message": "\"memberId\" must be a string, \"universalUID\" is required" + }, + { + "groupId": "{{GROUP_ID}}", + "required_field_1": "universalUID", + "required_field_2": "membershipType", + "memberId": "\"\"", + "membershipType": "\"user\"", + "httpCode": 400, + "message": "\"memberId\" is required, \"universalUID\" is not allowed to be empty" + }, + { + "groupId": "{{GROUP_ID}}", + "required_field_1": "universalUID", + "required_field_2": "membershipType", + "memberId": -1, + "membershipType": "\"user\"", + "httpCode": 400, + "message": "\"memberId\" is required, \"universalUID\" must be a string" + }, + { + "groupId": "{{GROUP_ID}}", + "required_field_1": "memberId", + "required_field_2": "membershipType", + "memberId": "\"member_id\"", + "membershipType": "\"invalid\"", + "httpCode": 400, + "message": "\"membershipType\" must be one of [group, user], \"universalUID\" is required" + }, + { + "groupId": "{{GROUP_ID}}", + "required_field_1": "memberId", + "required_field_2": "membershipType", + "memberId": "\"member_id\"", + "membershipType": false, + "httpCode": 400, + "message": "\"membershipType\" must be a string, \"universalUID\" is required" + }, + { + "groupId": "{{GROUP_ID}}", + "required_field_1": "memberId", + "required_field_2": "universalUID", + "memberId": "\"member_id\"", + "membershipType": "\"group\"", + "httpCode": 400, + "message": "\"membershipType\" is required, \"membershipType\" is required" + } +] diff --git a/test/postman/testData/group-membership/create-group-membership-with-invalid-tokens.json b/test/postman/testData/group-membership/create-group-membership-with-invalid-tokens.json new file mode 100644 index 0000000..2fc7c0c --- /dev/null +++ b/test/postman/testData/group-membership/create-group-membership-with-invalid-tokens.json @@ -0,0 +1,12 @@ + +[ + { + "jwtToken": "Bearer invalid", + "httpCode": 403, + "message": "Invalid Token." + }, + { + "httpCode": 403, + "message": "No token provided." + } +] diff --git a/test/postman/testData/group-membership/delete-group-membership-with-invalid-tokens.json b/test/postman/testData/group-membership/delete-group-membership-with-invalid-tokens.json new file mode 100644 index 0000000..f99c1cb --- /dev/null +++ b/test/postman/testData/group-membership/delete-group-membership-with-invalid-tokens.json @@ -0,0 +1,17 @@ + +[ + { + "jwtToken": "Bearer invalid", + "httpCode": 403, + "message": "Invalid Token." + }, + { + "jwtToken": "Bearer {{user_token}}", + "httpCode": 403, + "message": "You are not allowed to perform this action" + }, + { + "httpCode": 403, + "message": "No token provided." + } +] diff --git a/test/postman/testData/group-membership/get-group-members-list-with-invalid-parameters.json b/test/postman/testData/group-membership/get-group-members-list-with-invalid-parameters.json new file mode 100644 index 0000000..4441fec --- /dev/null +++ b/test/postman/testData/group-membership/get-group-members-list-with-invalid-parameters.json @@ -0,0 +1,9 @@ +[ + { + "includeSubGroups": 12, + "universalUID": "universal_id2", + "organizationId": "new_id", + "httpCode": 400, + "message": "\"includeSubGroups\" must be a boolean" + } +] diff --git a/test/postman/testData/group-membership/get-group-members-list-with-valid-parameters.json b/test/postman/testData/group-membership/get-group-members-list-with-valid-parameters.json new file mode 100644 index 0000000..a7300d8 --- /dev/null +++ b/test/postman/testData/group-membership/get-group-members-list-with-valid-parameters.json @@ -0,0 +1,12 @@ +[ + { + "includeSubGroups": true, + "universalUID": "universal_id2", + "organizationId": "new_id" + }, + { + "includeSubGroups": false, + "universalUID": "universal_id2", + "organizationId": "new_id" + } +] diff --git a/test/postman/testData/group-membership/get-group-membership-count-with-invalid-parameters.json b/test/postman/testData/group-membership/get-group-membership-count-with-invalid-parameters.json new file mode 100644 index 0000000..f53641d --- /dev/null +++ b/test/postman/testData/group-membership/get-group-membership-count-with-invalid-parameters.json @@ -0,0 +1,7 @@ +[ + { + "includeSubGroups": "notaboolean", + "httpCode": 400, + "message": "\"includeSubGroups\" must be a boolean" + } +] diff --git a/test/postman/testData/group-membership/get-group-membership-count-with-valid-parameters.json b/test/postman/testData/group-membership/get-group-membership-count-with-valid-parameters.json new file mode 100644 index 0000000..d17019a --- /dev/null +++ b/test/postman/testData/group-membership/get-group-membership-count-with-valid-parameters.json @@ -0,0 +1,8 @@ +[ + { + "includeSubGroups": "true" + }, + { + "includeSubGroups": "false" + } +] diff --git a/test/postman/testData/group-membership/get-group-membership-member-groups-with-invalid-tokens.json b/test/postman/testData/group-membership/get-group-membership-member-groups-with-invalid-tokens.json new file mode 100644 index 0000000..9d46cc1 --- /dev/null +++ b/test/postman/testData/group-membership/get-group-membership-member-groups-with-invalid-tokens.json @@ -0,0 +1,13 @@ + +[ + { + "jwtToken": "Bearer invalid", + "httpCode": 403, + "message": "Invalid Token." + }, + { + "httpCode": 403, + "message": "No token provided." + } + ] + \ No newline at end of file diff --git a/test/postman/testData/group-membership/get-group-membership-with-invalid-tokens.json b/test/postman/testData/group-membership/get-group-membership-with-invalid-tokens.json new file mode 100644 index 0000000..2a92d1e --- /dev/null +++ b/test/postman/testData/group-membership/get-group-membership-with-invalid-tokens.json @@ -0,0 +1,17 @@ +[ + { + "jwtToken": "Bearer invalid", + "httpCode": 403, + "message": "Invalid Token." + }, + { + "jwtToken": "Bearer {{user_token}}", + "httpCode": 403, + "message": "User is not member of the group" + }, + { + "httpCode": 403, + "message": "No token provided." + } + ] + \ No newline at end of file diff --git a/test/postman/testData/group-membership/search-group-membership-with-invalid-parameters.json b/test/postman/testData/group-membership/search-group-membership-with-invalid-parameters.json new file mode 100644 index 0000000..2158dd8 --- /dev/null +++ b/test/postman/testData/group-membership/search-group-membership-with-invalid-parameters.json @@ -0,0 +1,27 @@ + +[ + { + "page": -1, + "perPage": 10, + "httpCode": 400, + "message": "\"page\" must be larger than or equal to 1" + }, + { + "page": true, + "perPage": 10, + "httpCode": 400, + "message": "\"page\" must be a number" + }, + { + "page": 1, + "perPage": false, + "httpCode": 400, + "message": "\"perPage\" must be a number" + }, + { + "page": 1, + "perPage": -10, + "httpCode": 400, + "message": "\"perPage\" must be larger than or equal to 1" + } +] diff --git a/test/postman/testData/group-membership/search-group-membership-with-invalid-tokens.json b/test/postman/testData/group-membership/search-group-membership-with-invalid-tokens.json new file mode 100644 index 0000000..5d74e1a --- /dev/null +++ b/test/postman/testData/group-membership/search-group-membership-with-invalid-tokens.json @@ -0,0 +1,16 @@ +[ + { + "jwtToken": "Bearer invalid", + "httpCode": 403, + "message": "Invalid Token." + }, + { + "jwtToken": "Bearer {{user_token}}", + "httpCode": 403, + "message": "User is not member of the group" + }, + { + "httpCode": 403, + "message": "No token provided." + } +] diff --git a/test/postman/testData/group-membership/search-group-membership-with-valid-parameters.json b/test/postman/testData/group-membership/search-group-membership-with-valid-parameters.json new file mode 100644 index 0000000..1f8d800 --- /dev/null +++ b/test/postman/testData/group-membership/search-group-membership-with-valid-parameters.json @@ -0,0 +1,14 @@ +[ + { + "page": 1, + "perPage": 10 + }, + { + "page": 1, + "perPage": 1 + }, + { + "page": 1, + "perPage": 200 + } +] diff --git a/test/postman/testData/group-role/create-group-role-by-admin.json b/test/postman/testData/group-role/create-group-role-by-admin.json new file mode 100644 index 0000000..eb63a77 --- /dev/null +++ b/test/postman/testData/group-role/create-group-role-by-admin.json @@ -0,0 +1,7 @@ +[ + { + "groupId": "{{GROUP_ID2}}", + "role": "groupManager", + "httpCode": 201 + } +] diff --git a/test/postman/testData/group-role/create-group-role-by-m2m.json b/test/postman/testData/group-role/create-group-role-by-m2m.json new file mode 100644 index 0000000..eb63a77 --- /dev/null +++ b/test/postman/testData/group-role/create-group-role-by-m2m.json @@ -0,0 +1,7 @@ +[ + { + "groupId": "{{GROUP_ID2}}", + "role": "groupManager", + "httpCode": 201 + } +] diff --git a/test/postman/testData/group-role/create-group-role-with-invalid-data.json b/test/postman/testData/group-role/create-group-role-with-invalid-data.json new file mode 100644 index 0000000..a99c41e --- /dev/null +++ b/test/postman/testData/group-role/create-group-role-with-invalid-data.json @@ -0,0 +1,90 @@ +[ + { + "userId": "{{USER_ID}}", + "required_field_1": "groupId", + "required_field_2": "role", + "groupId": "\"{{GROUP_ID2}}\"", + "role": "\"groupManager\"", + "httpCode": 409 + }, + { + "userId": "invalid_user", + "required_field_1": "groupId", + "required_field_2": "role", + "groupId": "\"{{GROUP_ID2}}\"", + "role": "\"groupManager\"", + "httpCode": 400 + }, + { + "userId": "{{USER_ID}}", + "required_field_1": "groupId", + "required_field_2": "role", + "groupId": "\"nonexistent_group\"", + "role": "\"groupManager\"", + "httpCode": 400, + "message": "Not found Group of id nonexistent_group" + }, + { + "userId": "{{USER_ID}}", + "required_field_1": "groupId_not_provided", + "required_field_2": "role", + "groupId": "\"{{GROUP_ID2}}\"", + "role": "\"groupManager\"", + "httpCode": 400, + "message": "\"groupId\" is required" + }, + { + "userId": "{{USER_ID}}", + "required_field_1": "groupId", + "required_field_2": "role_not_provided", + "groupId": "\"{{GROUP_ID2}}\"", + "role": "\"groupManager\"", + "httpCode": 400, + "message": "\"role\" is required" + }, + { + "userId": "{{USER_ID}}", + "required_field_1": "groupId", + "required_field_2": "role", + "groupId": "\"{{GROUP_ID2}}\"", + "role": "\"invalid_role\"", + "httpCode": 400, + "message": "\"role\" must be one of [groupManager, groupAdmin]" + }, + { + "userId": "{{USER_ID}}", + "required_field_1": "groupId", + "required_field_2": "role", + "groupId": "\"{{GROUP_ID2}}\"", + "role": "\"\"", + "httpCode": 400, + "message": "\"role\" is not allowed to be empty" + }, + { + "userId": "{{USER_ID}}", + "required_field_1": "groupId", + "required_field_2": "role", + "groupId": "\"{{GROUP_ID2}}\"", + "role": 0, + "httpCode": 400, + "message": "\"role\" must be a string" + }, + { + "userId": "{{USER_ID}}", + "required_field_1": "groupId", + "required_field_2": "role", + "groupId": 100, + "role": "\"groupManager\"", + "httpCode": 400, + "message": "\"groupId\" must be a string" + }, + { + "userId": "{{USER_ID}}", + "required_field_1": "groupId", + "required_field_2": "role", + "groupId": "\"\"", + "role": "\"groupManager\"", + "httpCode": 400, + "message": "\"groupId\" is not allowed to be empty" + } +] diff --git a/test/postman/testData/group-role/create-group-role-with-invalid-tokens.json b/test/postman/testData/group-role/create-group-role-with-invalid-tokens.json new file mode 100644 index 0000000..f99c1cb --- /dev/null +++ b/test/postman/testData/group-role/create-group-role-with-invalid-tokens.json @@ -0,0 +1,17 @@ + +[ + { + "jwtToken": "Bearer invalid", + "httpCode": 403, + "message": "Invalid Token." + }, + { + "jwtToken": "Bearer {{user_token}}", + "httpCode": 403, + "message": "You are not allowed to perform this action" + }, + { + "httpCode": 403, + "message": "No token provided." + } +] diff --git a/test/postman/testData/group-role/delete-group-role-by-admin.json b/test/postman/testData/group-role/delete-group-role-by-admin.json new file mode 100644 index 0000000..e250262 --- /dev/null +++ b/test/postman/testData/group-role/delete-group-role-by-admin.json @@ -0,0 +1,7 @@ +[ + { + "groupId": "{{GROUP_ID2}}", + "role": "groupManager" + } + ] + \ No newline at end of file diff --git a/test/postman/testData/group-role/delete-group-role-by-m2m.json b/test/postman/testData/group-role/delete-group-role-by-m2m.json new file mode 100644 index 0000000..1731ff9 --- /dev/null +++ b/test/postman/testData/group-role/delete-group-role-by-m2m.json @@ -0,0 +1,6 @@ +[ + { + "groupId": "{{GROUP_ID2}}", + "role": "groupManager" + } +] diff --git a/test/postman/testData/group-role/delete-group-role-with-invalid-data.json b/test/postman/testData/group-role/delete-group-role-with-invalid-data.json new file mode 100644 index 0000000..a805ecd --- /dev/null +++ b/test/postman/testData/group-role/delete-group-role-with-invalid-data.json @@ -0,0 +1,83 @@ +[ + { + "userId": "invalid_user", + "required_field_1": "groupId", + "required_field_2": "role", + "groupId": "\"{{GROUP_ID2}}\"", + "role": "\"groupManager\"", + "httpCode": 400 + }, + { + "userId": "{{USER_ID}}", + "required_field_1": "groupId", + "required_field_2": "role", + "groupId": "\"nonexistent_group\"", + "role": "\"groupManager\"", + "httpCode": 400, + "message": "Not found Group of id nonexistent_group" + }, + { + "userId": "{{USER_ID}}", + "required_field_1": "groupId_not_provided", + "required_field_2": "role", + "groupId": "\"{{GROUP_ID2}}\"", + "role": "\"groupManager\"", + "httpCode": 400, + "message": "\"groupId\" is required" + }, + { + "userId": "{{USER_ID}}", + "required_field_1": "groupId", + "required_field_2": "role_not_provided", + "groupId": "\"{{GROUP_ID2}}\"", + "role": "\"groupManager\"", + "httpCode": 400, + "message": "\"role\" is required" + }, + { + "userId": "{{USER_ID}}", + "required_field_1": "groupId", + "required_field_2": "role", + "groupId": "\"{{GROUP_ID2}}\"", + "role": "\"invalid_role\"", + "httpCode": 400, + "message": "\"role\" must be one of [groupManager, groupAdmin]" + }, + { + "userId": "{{USER_ID}}", + "required_field_1": "groupId", + "required_field_2": "role", + "groupId": "\"{{GROUP_ID2}}\"", + "role": "\"\"", + "httpCode": 400, + "message": "\"role\" is not allowed to be empty" + }, + { + "userId": "{{USER_ID}}", + "required_field_1": "groupId", + "required_field_2": "role", + "groupId": "\"{{GROUP_ID2}}\"", + "role": 0, + "httpCode": 400, + "message": "\"role\" must be a string" + }, + { + "userId": "{{USER_ID}}", + "required_field_1": "groupId", + "required_field_2": "role", + "groupId": 100, + "role": "\"groupManager\"", + "httpCode": 400, + "message": "\"groupId\" must be a string" + }, + { + "userId": "{{USER_ID}}", + "required_field_1": "groupId", + "required_field_2": "role", + "groupId": "\"\"", + "role": "\"groupManager\"", + "httpCode": 400, + "message": "\"groupId\" is not allowed to be empty" + } + ] + \ No newline at end of file diff --git a/test/postman/testData/group-role/delete-group-role-with-invalid-tokens.json b/test/postman/testData/group-role/delete-group-role-with-invalid-tokens.json new file mode 100644 index 0000000..f99c1cb --- /dev/null +++ b/test/postman/testData/group-role/delete-group-role-with-invalid-tokens.json @@ -0,0 +1,17 @@ + +[ + { + "jwtToken": "Bearer invalid", + "httpCode": 403, + "message": "Invalid Token." + }, + { + "jwtToken": "Bearer {{user_token}}", + "httpCode": 403, + "message": "You are not allowed to perform this action" + }, + { + "httpCode": 403, + "message": "No token provided." + } +] diff --git a/test/postman/testData/group-role/search-group-role-with-invalid-parameters.json b/test/postman/testData/group-role/search-group-role-with-invalid-parameters.json new file mode 100644 index 0000000..2158dd8 --- /dev/null +++ b/test/postman/testData/group-role/search-group-role-with-invalid-parameters.json @@ -0,0 +1,27 @@ + +[ + { + "page": -1, + "perPage": 10, + "httpCode": 400, + "message": "\"page\" must be larger than or equal to 1" + }, + { + "page": true, + "perPage": 10, + "httpCode": 400, + "message": "\"page\" must be a number" + }, + { + "page": 1, + "perPage": false, + "httpCode": 400, + "message": "\"perPage\" must be a number" + }, + { + "page": 1, + "perPage": -10, + "httpCode": 400, + "message": "\"perPage\" must be larger than or equal to 1" + } +] diff --git a/test/postman/testData/group-role/search-group-role-with-invalid-tokens.json b/test/postman/testData/group-role/search-group-role-with-invalid-tokens.json new file mode 100644 index 0000000..c9c6241 --- /dev/null +++ b/test/postman/testData/group-role/search-group-role-with-invalid-tokens.json @@ -0,0 +1,16 @@ +[ + { + "jwtToken": "Bearer invalid", + "httpCode": 403, + "message": "Invalid Token." + }, + { + "jwtToken": "Bearer {{user_token}}", + "httpCode": 403, + "message": "You are not allowed to perform this action" + }, + { + "httpCode": 403, + "message": "No token provided." + } +] diff --git a/test/postman/testData/group-role/search-group-role-with-valid-parameters.json b/test/postman/testData/group-role/search-group-role-with-valid-parameters.json new file mode 100644 index 0000000..1f8d800 --- /dev/null +++ b/test/postman/testData/group-role/search-group-role-with-valid-parameters.json @@ -0,0 +1,14 @@ +[ + { + "page": 1, + "perPage": 10 + }, + { + "page": 1, + "perPage": 1 + }, + { + "page": 1, + "perPage": 200 + } +] diff --git a/test/postman/testData/group/create-group-by-admin.json b/test/postman/testData/group/create-group-by-admin.json new file mode 100644 index 0000000..df1f2f1 --- /dev/null +++ b/test/postman/testData/group/create-group-by-admin.json @@ -0,0 +1,13 @@ +[ + { + "name": "POSTMANE2E-group1", + "description": "desc1", + "privateGroup": false, + "selfRegister": true, + "domain": "test_domain", + "ssoId": "sso_id_1", + "organizationId": "91bda549-9933-4ce4-b8d8-97974d86c710", + "status": "active", + "httpCode": 200 + } +] diff --git a/test/postman/testData/group/create-group-by-m2m.json b/test/postman/testData/group/create-group-by-m2m.json new file mode 100644 index 0000000..0eddba4 --- /dev/null +++ b/test/postman/testData/group/create-group-by-m2m.json @@ -0,0 +1,13 @@ +[ + { + "name": "POSTMANE2E-group2", + "description": "desc1", + "privateGroup": false, + "selfRegister": false, + "domain": "test_domain", + "ssoId": "sso_id_1", + "organizationId": "91bda549-9933-4ce4-b8d8-97974d86c710", + "status": "active", + "httpCode": 200 + } +] diff --git a/test/postman/testData/group/create-group-with-invalid-data.json b/test/postman/testData/group/create-group-with-invalid-data.json new file mode 100644 index 0000000..7987e8e --- /dev/null +++ b/test/postman/testData/group/create-group-with-invalid-data.json @@ -0,0 +1,287 @@ +[ + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "httpCode": 409, + "message": "The group name POSTMANE2E-group1 is already used" + }, + { + "required_field_1": "name_not_provided", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"name\" is required" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup_not_provided", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"privateGroup\" is required" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister_not_provided", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"selfRegister\" is required" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"name\" is not allowed to be empty" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": -12, + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"name\" must be a string" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "description": "\"\"", + "name": "\"POSTMANE2E-name1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"description\" is not allowed to be empty" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "description": -12, + "name": "\"POSTMANE2E-name1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"description\" must be a string" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": -12, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"privateGroup\" must be a boolean" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": "\"\"", + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"selfRegister\" must be a boolean" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"domain\" is not allowed to be empty" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": 9, + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"domain\" must be a string" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"ssoId\" is not allowed to be empty" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": -12, + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"ssoId\" must be a string" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"\"", + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"organizationId\" is not allowed to be empty" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": true, + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"organizationId\" must be a string" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"\"", + "httpCode": 400, + "message": "\"status\" is not allowed to be empty" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"invalid_status\"", + "httpCode": 400, + "message": "\"status\" must be one of [active, inactive]" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": false, + "httpCode": 400, + "message": "\"status\" must be a string" + } +] diff --git a/test/postman/testData/group/create-group-with-invalid-tokens.json b/test/postman/testData/group/create-group-with-invalid-tokens.json new file mode 100644 index 0000000..f99c1cb --- /dev/null +++ b/test/postman/testData/group/create-group-with-invalid-tokens.json @@ -0,0 +1,17 @@ + +[ + { + "jwtToken": "Bearer invalid", + "httpCode": 403, + "message": "Invalid Token." + }, + { + "jwtToken": "Bearer {{user_token}}", + "httpCode": 403, + "message": "You are not allowed to perform this action" + }, + { + "httpCode": 403, + "message": "No token provided." + } +] diff --git a/test/postman/testData/group/delete-group-with-invalid-tokens.json b/test/postman/testData/group/delete-group-with-invalid-tokens.json new file mode 100644 index 0000000..f99c1cb --- /dev/null +++ b/test/postman/testData/group/delete-group-with-invalid-tokens.json @@ -0,0 +1,17 @@ + +[ + { + "jwtToken": "Bearer invalid", + "httpCode": 403, + "message": "Invalid Token." + }, + { + "jwtToken": "Bearer {{user_token}}", + "httpCode": 403, + "message": "You are not allowed to perform this action" + }, + { + "httpCode": 403, + "message": "No token provided." + } +] diff --git a/test/postman/testData/group/get-group-by-admin.json b/test/postman/testData/group/get-group-by-admin.json new file mode 100644 index 0000000..2a52226 --- /dev/null +++ b/test/postman/testData/group/get-group-by-admin.json @@ -0,0 +1,9 @@ + +[ + { + "groupId": "{{GROUP_ID}}" + }, + { + "groupId": "{{GROUP_ID2}}" + } +] diff --git a/test/postman/testData/group/get-group-by-m2m.json b/test/postman/testData/group/get-group-by-m2m.json new file mode 100644 index 0000000..7847949 --- /dev/null +++ b/test/postman/testData/group/get-group-by-m2m.json @@ -0,0 +1,10 @@ + +[ + { + "groupId": "{{GROUP_ID}}" + }, + { + "groupId": "{{GROUP_ID2}}" + } +] + diff --git a/test/postman/testData/group/get-group-by-old-id-with-invalid-parameters.json b/test/postman/testData/group/get-group-by-old-id-with-invalid-parameters.json new file mode 100644 index 0000000..ab5b2ae --- /dev/null +++ b/test/postman/testData/group/get-group-by-old-id-with-invalid-parameters.json @@ -0,0 +1,24 @@ + +[ + { + "includeSubGroups": true, + "includeParentGroup": false, + "oneLevel": false, + "fields": "id,name,description", + "httpCode": 200 + }, + { + "includeSubGroups": false, + "includeParentGroup": true, + "oneLevel": false, + "fields": "id,name,description,privateGroup,selfRegister", + "httpCode": 200 + }, + { + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": false, + "fields": "id,createdAt,createdBy,updatedAt,updatedBy,name,description,privateGroup,selfRegister,domain,organizationId,oldId", + "httpCode": 200 + } +] diff --git a/test/postman/testData/group/get-group-by-old-id-with-invalid-tokens.json b/test/postman/testData/group/get-group-by-old-id-with-invalid-tokens.json new file mode 100644 index 0000000..a45d603 --- /dev/null +++ b/test/postman/testData/group/get-group-by-old-id-with-invalid-tokens.json @@ -0,0 +1,11 @@ +[ + { + "jwtToken": "Bearer invalid", + "httpCode": 403, + "message": "Invalid Token." + }, + { + "httpCode": 403, + "message": "No token provided." + } +] diff --git a/test/postman/testData/group/get-group-by-old-id-with-valid-parameters.json b/test/postman/testData/group/get-group-by-old-id-with-valid-parameters.json new file mode 100644 index 0000000..191c35a --- /dev/null +++ b/test/postman/testData/group/get-group-by-old-id-with-valid-parameters.json @@ -0,0 +1,34 @@ +[ + { + "includeSubGroups": 0, + "includeParentGroup": false, + "oneLevel": false, + "fields": "id,name,description", + "httpCode": 400, + "message": "\"includeSubGroups\" must be a boolean" + }, + { + "includeSubGroups": false, + "includeParentGroup": 0, + "oneLevel": false, + "fields": "id,name,description", + "httpCode": 400, + "message": "\"includeParentGroup\" must be a boolean" + }, + { + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": 0, + "fields": "id,name,description", + "httpCode": 400, + "message": "\"oneLevel\" must be a boolean" + }, + { + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": false, + "fields": "id,name,description,invalid", + "httpCode": 400, + "message": "Field name invalid is not allowed, allowed field names: [\n \"id\",\n \"createdAt\",\n \"createdBy\",\n \"updatedAt\",\n \"updatedBy\",\n \"name\",\n \"description\",\n \"privateGroup\",\n \"selfRegister\",\n \"domain\",\n \"organizationId\",\n \"oldId\"\n]" + } +] diff --git a/test/postman/testData/group/get-group-by-user.json b/test/postman/testData/group/get-group-by-user.json new file mode 100644 index 0000000..ed27531 --- /dev/null +++ b/test/postman/testData/group/get-group-by-user.json @@ -0,0 +1,7 @@ + +[ + { + "groupId": "{{GROUP_ID}}" + } +] + diff --git a/test/postman/testData/group/get-group-with-invalid-parameters.json b/test/postman/testData/group/get-group-with-invalid-parameters.json new file mode 100644 index 0000000..ab5b2ae --- /dev/null +++ b/test/postman/testData/group/get-group-with-invalid-parameters.json @@ -0,0 +1,24 @@ + +[ + { + "includeSubGroups": true, + "includeParentGroup": false, + "oneLevel": false, + "fields": "id,name,description", + "httpCode": 200 + }, + { + "includeSubGroups": false, + "includeParentGroup": true, + "oneLevel": false, + "fields": "id,name,description,privateGroup,selfRegister", + "httpCode": 200 + }, + { + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": false, + "fields": "id,createdAt,createdBy,updatedAt,updatedBy,name,description,privateGroup,selfRegister,domain,organizationId,oldId", + "httpCode": 200 + } +] diff --git a/test/postman/testData/group/get-group-with-invalid-tokens.json b/test/postman/testData/group/get-group-with-invalid-tokens.json new file mode 100644 index 0000000..5d74e1a --- /dev/null +++ b/test/postman/testData/group/get-group-with-invalid-tokens.json @@ -0,0 +1,16 @@ +[ + { + "jwtToken": "Bearer invalid", + "httpCode": 403, + "message": "Invalid Token." + }, + { + "jwtToken": "Bearer {{user_token}}", + "httpCode": 403, + "message": "User is not member of the group" + }, + { + "httpCode": 403, + "message": "No token provided." + } +] diff --git a/test/postman/testData/group/get-group-with-valid-parameters.json b/test/postman/testData/group/get-group-with-valid-parameters.json new file mode 100644 index 0000000..191c35a --- /dev/null +++ b/test/postman/testData/group/get-group-with-valid-parameters.json @@ -0,0 +1,34 @@ +[ + { + "includeSubGroups": 0, + "includeParentGroup": false, + "oneLevel": false, + "fields": "id,name,description", + "httpCode": 400, + "message": "\"includeSubGroups\" must be a boolean" + }, + { + "includeSubGroups": false, + "includeParentGroup": 0, + "oneLevel": false, + "fields": "id,name,description", + "httpCode": 400, + "message": "\"includeParentGroup\" must be a boolean" + }, + { + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": 0, + "fields": "id,name,description", + "httpCode": 400, + "message": "\"oneLevel\" must be a boolean" + }, + { + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": false, + "fields": "id,name,description,invalid", + "httpCode": 400, + "message": "Field name invalid is not allowed, allowed field names: [\n \"id\",\n \"createdAt\",\n \"createdBy\",\n \"updatedAt\",\n \"updatedBy\",\n \"name\",\n \"description\",\n \"privateGroup\",\n \"selfRegister\",\n \"domain\",\n \"organizationId\",\n \"oldId\"\n]" + } +] diff --git a/test/postman/testData/group/search-group-with-invalid-parameters.json b/test/postman/testData/group/search-group-with-invalid-parameters.json new file mode 100644 index 0000000..ed27a21 --- /dev/null +++ b/test/postman/testData/group/search-group-with-invalid-parameters.json @@ -0,0 +1,339 @@ + +[ + { + "page": -1, + "perPage": 10, + "oldId": "1", + "ssoId": "sso id", + "organizationId": "id", + "selfRegister": false, + "privateGroup": true, + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": false, + "status": "active", + "httpCode": 400, + "message": "\"page\" must be larger than or equal to 1" + }, + { + "page": true, + "perPage": 10, + "oldId": "1", + "ssoId": "sso id", + "organizationId": "id", + "selfRegister": false, + "privateGroup": true, + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": false, + "status": "active", + "httpCode": 400, + "message": "\"page\" must be a number" + }, + { + "memberId": "id", + "universalUID": "id", + "membershipType": "group", + "name": "name", + "page": 1, + "perPage": false, + "oldId": "1", + "ssoId": "sso id", + "organizationId": "id", + "selfRegister": false, + "privateGroup": true, + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": false, + "status": "active", + "httpCode": 400, + "message": "\"perPage\" must be a number" + }, + { + "memberId": "id", + "universalUID": "id", + "membershipType": "group", + "name": "name", + "page": 1, + "perPage": -10, + "oldId": "1", + "ssoId": "sso id", + "organizationId": "id", + "selfRegister": false, + "privateGroup": true, + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": false, + "status": "active", + "httpCode": 400, + "message": "\"perPage\" must be larger than or equal to 1" + }, + { + "memberId": "id", + "universalUID": "id", + "membershipType": "group", + "name": "name", + "page": 1, + "perPage": 10, + "oldId": "1", + "ssoId": "sso id", + "organizationId": "id", + "selfRegister": "invalid", + "privateGroup": true, + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": false, + "status": "active", + "httpCode": 400, + "message": "\"selfRegister\" must be a boolean" + }, + { + "memberId": "id", + "universalUID": "id", + "membershipType": "group", + "name": "name", + "page": 1, + "perPage": 10, + "oldId": "1", + "ssoId": "sso id", + "organizationId": "id", + "selfRegister": true, + "privateGroup": "invalid", + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": false, + "status": "active", + "httpCode": 400, + "message": "\"privateGroup\" must be a boolean" + }, + { + "memberId": "id", + "universalUID": "id", + "membershipType": "group", + "name": "name", + "page": 1, + "perPage": 10, + "oldId": "1", + "ssoId": "sso id", + "organizationId": "id", + "selfRegister": true, + "privateGroup": true, + "includeSubGroups": "invalid", + "includeParentGroup": false, + "oneLevel": false, + "status": "active", + "httpCode": 400, + "message": "\"includeSubGroups\" must be a boolean" + }, + { + "memberId": "id", + "universalUID": "id", + "membershipType": "group", + "name": "name", + "page": 1, + "perPage": 10, + "oldId": "1", + "ssoId": "sso id", + "organizationId": "id", + "selfRegister": true, + "privateGroup": true, + "includeSubGroups": false, + "includeParentGroup": "invalid", + "oneLevel": false, + "status": "active", + "httpCode": 400, + "message": "\"includeParentGroup\" must be a boolean" + }, + { + "memberId": "id", + "universalUID": "id", + "membershipType": "group", + "name": "name", + "page": 1, + "perPage": 10, + "oldId": "1", + "ssoId": "sso id", + "organizationId": "id", + "selfRegister": true, + "privateGroup": true, + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": "invalid", + "status": "active", + "httpCode": 400, + "message": "\"oneLevel\" must be a boolean" + }, + { + "memberId": "id", + "universalUID": "id", + "membershipType": "group", + "name": "name", + "page": 1, + "perPage": 10, + "oldId": "1", + "ssoId": "sso id", + "organizationId": "id", + "selfRegister": true, + "privateGroup": true, + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": true, + "status": "invalid_status", + "httpCode": 400, + "message": "\"status\" must be one of [active, inactive]" + }, + { + "memberIdField": "memberId", + "membershipTypeField": "", + "universalUIDField": "universalUID", + "memberId": "id", + "universalUID": "id", + "membershipType": "", + "name": "name", + "page": 1, + "perPage": 10, + "oldId": "1", + "ssoId": "sso id", + "organizationId": "id", + "selfRegister": true, + "privateGroup": true, + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": true, + "status": "active", + "httpCode": 400, + "message": "The membershipType parameter should be provided if memberId is provided." + }, + { + "memberIdField": "", + "membershipTypeField": "membershipType", + "universalUIDField": "", + "memberId": "", + "universalUID": "", + "membershipType": "group", + "name": "name", + "page": 1, + "perPage": 10, + "oldId": "1", + "ssoId": "sso id", + "organizationId": "id", + "selfRegister": true, + "privateGroup": true, + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": true, + "status": "active", + "httpCode": 400, + "message": "The memberId or universalUID parameter should be provided if membershipType is provided." + }, + { + "memberIdField": "memberId", + "membershipTypeField": "membershipType", + "universalUIDField": "universalUID", + "memberId": "id", + "universalUID": "id", + "membershipType": "invalid", + "name": "name", + "page": 1, + "perPage": 10, + "oldId": "1", + "ssoId": "sso id", + "organizationId": "id", + "selfRegister": true, + "privateGroup": true, + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": true, + "status": "active", + "httpCode": 400, + "message": "\"membershipType\" must be one of [group, user]" + }, + { + "memberIdField": "memberId", + "membershipTypeField": "membershipType", + "universalUIDField": "universalUID", + "memberId": "id", + "universalUID": "id", + "membershipType": "group", + "name": "", + "page": 1, + "perPage": 10, + "oldId": "1", + "ssoId": "sso id", + "organizationId": "id", + "selfRegister": true, + "privateGroup": true, + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": true, + "status": "active", + "httpCode": 400, + "message": "\"name\" is not allowed to be empty" + }, + { + "memberIdField": "memberId", + "membershipTypeField": "membershipType", + "universalUIDField": "universalUID", + "memberId": "id", + "universalUID": "id", + "membershipType": "group", + "name": "name", + "page": 1, + "perPage": 10, + "oldId": "", + "ssoId": "sso id", + "organizationId": "id", + "selfRegister": true, + "privateGroup": true, + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": true, + "status": "active", + "httpCode": 400, + "message": "\"oldId\" is not allowed to be empty" + }, + { + "memberIdField": "memberId", + "membershipTypeField": "membershipType", + "universalUIDField": "universalUID", + "memberId": "id", + "universalUID": "id", + "membershipType": "group", + "name": "name", + "page": 1, + "perPage": 10, + "oldId": "1", + "ssoId": "", + "organizationId": "id", + "selfRegister": true, + "privateGroup": true, + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": true, + "status": "active", + "httpCode": 400, + "message": "\"ssoId\" is not allowed to be empty" + }, + { + "memberIdField": "memberId", + "membershipTypeField": "membershipType", + "universalUIDField": "universalUID", + "memberId": "id", + "universalUID": "id", + "membershipType": "group", + "name": "name", + "page": 1, + "perPage": 10, + "oldId": "1", + "ssoId": "id", + "organizationId": "", + "selfRegister": true, + "privateGroup": true, + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": true, + "status": "active", + "httpCode": 400, + "message": "\"organizationId\" is not allowed to be empty" + } +] diff --git a/test/postman/testData/group/search-group-with-invalid-tokens.json b/test/postman/testData/group/search-group-with-invalid-tokens.json new file mode 100644 index 0000000..a45d603 --- /dev/null +++ b/test/postman/testData/group/search-group-with-invalid-tokens.json @@ -0,0 +1,11 @@ +[ + { + "jwtToken": "Bearer invalid", + "httpCode": 403, + "message": "Invalid Token." + }, + { + "httpCode": 403, + "message": "No token provided." + } +] diff --git a/test/postman/testData/group/search-group-with-valid-parameters.json b/test/postman/testData/group/search-group-with-valid-parameters.json new file mode 100644 index 0000000..11669a2 --- /dev/null +++ b/test/postman/testData/group/search-group-with-valid-parameters.json @@ -0,0 +1,70 @@ +[ + { + "page": 1, + "perPage": 10, + "includeSubGroups": false, + "includeParentGroup": false, + "oneLevel": true, + "name": "new-group1", + "description": "new-desc1", + "privateGroup": false, + "selfRegister": true, + "domain": "test_domain_updated", + "ssoId": "sso_id_2_new", + "organizationId": "new_id", + "status": "active", + "oldId": "1", + "httpCode": 200 + }, + { + "page": 1, + "perPage": 10, + "includeSubGroups": true, + "includeParentGroup": false, + "oneLevel": true, + "name": "new-group1", + "description": "new-desc1", + "privateGroup": false, + "selfRegister": true, + "domain": "test_domain_updated", + "ssoId": "sso_id_2_new", + "organizationId": "new_id", + "status": "active", + "oldId": "1", + "httpCode": 200 + }, + { + "page": 1, + "perPage": 20, + "includeSubGroups": false, + "includeParentGroup": true, + "oneLevel": true, + "name": "new-group1", + "description": "new-desc1", + "privateGroup": false, + "selfRegister": true, + "domain": "test_domain_updated", + "ssoId": "sso_id_2_new", + "organizationId": "new_id", + "status": "active", + "oldId": "1", + "httpCode": 200 + }, + { + "page": 1, + "perPage": 100, + "includeSubGroups": true, + "includeParentGroup": true, + "oneLevel": false, + "name": "new-group1", + "description": "new-desc1", + "privateGroup": false, + "selfRegister": true, + "domain": "test_domain_updated", + "ssoId": "sso_id_2_new", + "organizationId": "new_id", + "status": "active", + "oldId": "1", + "httpCode": 200 + } +] diff --git a/test/postman/testData/group/update-group-by-admin.json b/test/postman/testData/group/update-group-by-admin.json new file mode 100644 index 0000000..940e93c --- /dev/null +++ b/test/postman/testData/group/update-group-by-admin.json @@ -0,0 +1,14 @@ +[ + { + "name": "POSTMANE2E-new-group1", + "description": "new-desc1", + "privateGroup": false, + "selfRegister": true, + "domain": "test_domain_updated", + "ssoId": "sso_id_2_new", + "organizationId": "new_id", + "status": "active", + "oldId": "1", + "httpCode": 200 + } +] diff --git a/test/postman/testData/group/update-group-by-m2m.json b/test/postman/testData/group/update-group-by-m2m.json new file mode 100644 index 0000000..5be36f1 --- /dev/null +++ b/test/postman/testData/group/update-group-by-m2m.json @@ -0,0 +1,14 @@ +[ + { + "name": "POSTMANE2E-new-group2", + "description": "new-desc2", + "privateGroup": true, + "selfRegister": true, + "domain": "test_domain_updated", + "ssoId": "sso_id_2_new", + "organizationId": "new_id", + "status": "active", + "oldId": "2", + "httpCode": 200 + } +] \ No newline at end of file diff --git a/test/postman/testData/group/update-group-with-invalid-data.json b/test/postman/testData/group/update-group-with-invalid-data.json new file mode 100644 index 0000000..12fdef9 --- /dev/null +++ b/test/postman/testData/group/update-group-with-invalid-data.json @@ -0,0 +1,322 @@ +[ + { + "required_field_1": "name_not_provided", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "oldId": "\"1\"", + "httpCode": 400, + "message": "\"name\" is required" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup_not_provided", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "oldId": "\"1\"", + "httpCode": 400, + "message": "\"privateGroup\" is required" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister_not_provided", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "oldId": "\"1\"", + "httpCode": 400, + "message": "\"selfRegister\" is required" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "oldId": "\"1\"", + "httpCode": 400, + "message": "\"name\" is not allowed to be empty" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": -12, + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "oldId": "\"1\"", + "httpCode": 400, + "message": "\"name\" must be a string" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "description": "\"\"", + "name": "\"POSTMANE2E-name1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "oldId": "\"1\"", + "httpCode": 400, + "message": "\"description\" is not allowed to be empty" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "description": -12, + "name": "\"POSTMANE2E-name1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "oldId": "\"1\"", + "httpCode": 400, + "message": "\"description\" must be a string" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": -12, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "oldId": "\"1\"", + "httpCode": 400, + "message": "\"privateGroup\" must be a boolean" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": "\"\"", + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "oldId": "\"1\"", + "httpCode": 400, + "message": "\"selfRegister\" must be a boolean" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "oldId": "\"1\"", + "httpCode": 400, + "message": "\"domain\" is not allowed to be empty" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": 9, + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "oldId": "\"1\"", + "httpCode": 400, + "message": "\"domain\" must be a string" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "oldId": "\"1\"", + "httpCode": 400, + "message": "\"ssoId\" is not allowed to be empty" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": -12, + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "oldId": "\"1\"", + "httpCode": 400, + "message": "\"ssoId\" must be a string" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"\"", + "status": "\"inactive\"", + "oldId": "\"1\"", + "httpCode": 400, + "message": "\"organizationId\" is not allowed to be empty" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": true, + "status": "\"inactive\"", + "oldId": "\"1\"", + "httpCode": 400, + "message": "\"organizationId\" must be a string" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"\"", + "oldId": "\"1\"", + "httpCode": 400, + "message": "\"status\" is not allowed to be empty" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"invalid_status\"", + "oldId": "\"1\"", + "httpCode": 400, + "message": "\"status\" must be one of [active, inactive]" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": false, + "oldId": "\"1\"", + "httpCode": 400, + "message": "\"status\" must be a string" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "oldId": "\"\"", + "httpCode": 400, + "message": "\"oldId\" is not allowed to be empty" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "oldId": true, + "httpCode": 400, + "message": "\"oldId\" must be a string" + } +] diff --git a/test/postman/testData/group/update-group-with-invalid-tokens.json b/test/postman/testData/group/update-group-with-invalid-tokens.json new file mode 100644 index 0000000..f99c1cb --- /dev/null +++ b/test/postman/testData/group/update-group-with-invalid-tokens.json @@ -0,0 +1,17 @@ + +[ + { + "jwtToken": "Bearer invalid", + "httpCode": 403, + "message": "Invalid Token." + }, + { + "jwtToken": "Bearer {{user_token}}", + "httpCode": 403, + "message": "You are not allowed to perform this action" + }, + { + "httpCode": 403, + "message": "No token provided." + } +] diff --git a/test/postman/testData/sub-group/create-sub-group-by-admin.json b/test/postman/testData/sub-group/create-sub-group-by-admin.json new file mode 100644 index 0000000..2d12637 --- /dev/null +++ b/test/postman/testData/sub-group/create-sub-group-by-admin.json @@ -0,0 +1,13 @@ +[ + { + "name": "POSTMANE2E-sub-group1", + "description": "sub-desc1", + "privateGroup": false, + "selfRegister": true, + "domain": "sub_domain_1", + "ssoId": "sub_sso_id_1", + "organizationId": "org_id", + "status": "active", + "httpCode": 200 + } +] diff --git a/test/postman/testData/sub-group/create-sub-group-by-m2m.json b/test/postman/testData/sub-group/create-sub-group-by-m2m.json new file mode 100644 index 0000000..0b50106 --- /dev/null +++ b/test/postman/testData/sub-group/create-sub-group-by-m2m.json @@ -0,0 +1,13 @@ +[ + { + "name": "POSTMANE2E-sub-group2", + "description": "sub-desc2", + "privateGroup": false, + "selfRegister": true, + "domain": "sub_domain_2", + "ssoId": "sub_sso_id_2", + "organizationId": "91bda549-9933-4ce4-b8d8-97974d86c710", + "status": "active", + "httpCode": 200 + } +] diff --git a/test/postman/testData/sub-group/create-sub-group-with-invalid-data.json b/test/postman/testData/sub-group/create-sub-group-with-invalid-data.json new file mode 100644 index 0000000..7987e8e --- /dev/null +++ b/test/postman/testData/sub-group/create-sub-group-with-invalid-data.json @@ -0,0 +1,287 @@ +[ + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "httpCode": 409, + "message": "The group name POSTMANE2E-group1 is already used" + }, + { + "required_field_1": "name_not_provided", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"name\" is required" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup_not_provided", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"privateGroup\" is required" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister_not_provided", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"selfRegister\" is required" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"name\" is not allowed to be empty" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": -12, + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"name\" must be a string" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "description": "\"\"", + "name": "\"POSTMANE2E-name1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"description\" is not allowed to be empty" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "description": -12, + "name": "\"POSTMANE2E-name1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"description\" must be a string" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": -12, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"privateGroup\" must be a boolean" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": "\"\"", + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"selfRegister\" must be a boolean" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"domain\" is not allowed to be empty" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": 9, + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"domain\" must be a string" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"ssoId\" is not allowed to be empty" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": -12, + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"ssoId\" must be a string" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"\"", + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"organizationId\" is not allowed to be empty" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": true, + "status": "\"inactive\"", + "httpCode": 400, + "message": "\"organizationId\" must be a string" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"\"", + "httpCode": 400, + "message": "\"status\" is not allowed to be empty" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": "\"invalid_status\"", + "httpCode": 400, + "message": "\"status\" must be one of [active, inactive]" + }, + { + "required_field_1": "name", + "required_field_2": "privateGroup", + "required_field_3": "selfRegister", + "name": "\"POSTMANE2E-group1\"", + "description": "\"desc1\"", + "privateGroup": true, + "selfRegister": true, + "domain": "\"test_domain\"", + "ssoId": "\"sso_id_1\"", + "organizationId": "\"91bda549-9933-4ce4-b8d8-97974d86c710\"", + "status": false, + "httpCode": 400, + "message": "\"status\" must be a string" + } +] diff --git a/test/postman/testData/sub-group/create-sub-group-with-invalid-tokens.json b/test/postman/testData/sub-group/create-sub-group-with-invalid-tokens.json new file mode 100644 index 0000000..0c11d17 --- /dev/null +++ b/test/postman/testData/sub-group/create-sub-group-with-invalid-tokens.json @@ -0,0 +1,17 @@ + +[ + { + "jwtToken": "Bearer invalid", + "httpCode": 403, + "message": "Invalid Token." + }, + { + "jwtToken": "Bearer {{user_token}}", + "httpCode": 403, + "message": "You are not allowed to perform this action!" + }, + { + "httpCode": 403, + "message": "No token provided." + } +] diff --git a/test/postman/testData/sub-group/delete-sub-group-not-found.json b/test/postman/testData/sub-group/delete-sub-group-not-found.json new file mode 100644 index 0000000..8e7d78e --- /dev/null +++ b/test/postman/testData/sub-group/delete-sub-group-not-found.json @@ -0,0 +1,18 @@ + +[ + { + "groupId": "{{GROUP_ID}}", + "subgroupId": "invalid_id", + "httpCode": 404 + }, + { + "groupId": "invalid_id", + "subgroupId": "{{SUBGROUP_ID}}", + "httpCode": 404 + }, + { + "groupId": "{{GROUP_ID}}", + "subgroupId": "{{GROUP_ID}}", + "httpCode": 400 + } +] diff --git a/test/postman/testData/sub-group/delete-sub-group-with-invalid-tokens.json b/test/postman/testData/sub-group/delete-sub-group-with-invalid-tokens.json new file mode 100644 index 0000000..0c11d17 --- /dev/null +++ b/test/postman/testData/sub-group/delete-sub-group-with-invalid-tokens.json @@ -0,0 +1,17 @@ + +[ + { + "jwtToken": "Bearer invalid", + "httpCode": 403, + "message": "Invalid Token." + }, + { + "jwtToken": "Bearer {{user_token}}", + "httpCode": 403, + "message": "You are not allowed to perform this action!" + }, + { + "httpCode": 403, + "message": "No token provided." + } +]