From 78cf1f3ab7800a6ee9f9dceb60a4c89cfc606459 Mon Sep 17 00:00:00 2001 From: Jake Date: Mon, 7 Feb 2022 17:16:49 +0000 Subject: [PATCH 1/3] HT-20 Install swagger dependency and set up basic json file --- server/app.js | 5 +++++ server/package-lock.json | 46 +++++++++++++++++++++++++++++++++++++++- server/package.json | 3 ++- server/swagger.json | 34 +++++++++++++++++++++++++++++ 4 files changed, 86 insertions(+), 2 deletions(-) create mode 100644 server/swagger.json diff --git a/server/app.js b/server/app.js index f4b6b27..5584aa3 100644 --- a/server/app.js +++ b/server/app.js @@ -4,6 +4,8 @@ const bodyParser = require("body-parser"); const cors = require("cors"); const cookieSession = require("cookie-session"); const cookieParser = require("cookie-parser"); +const swaggerUi = require('swagger-ui-express'), + swaggerDocument = require('../swagger.json') require("./database"); require("dotenv").config(); @@ -26,6 +28,9 @@ app.use(cors({ origin: "http://localhost:8080", credentials: true })); */ const authRouter = require("./routes/auth.routes"); const billRouter = require("./routes/bill.routes"); +app.get('/api-docs/swagger.json', (req, res) => res.json(swaggerDocument)); +app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument)) + /** * View Engine setup */ diff --git a/server/package-lock.json b/server/package-lock.json index 470d780..a4fe72c 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -16,6 +16,7 @@ "eslint": "^8.8.0", "express": "^4.17.2", "haversine": "^1.1.1", + "haversine-distance": "^1.2.1", "http-errors": "^2.0.0", "jshint": "^2.13.4", "jsonwebtoken": "^8.5.1", @@ -23,7 +24,8 @@ "mongodb": "^4.3.1", "mongoose": "^6.1.9", "nodemon": "^2.0.15", - "nyc": "^15.1.0" + "nyc": "^15.1.0", + "swagger-ui-express": "^4.3.0" } }, "node_modules/@babel/code-frame": { @@ -2366,6 +2368,11 @@ "resolved": "https://registry.npmjs.org/haversine/-/haversine-1.1.1.tgz", "integrity": "sha512-KW4MS8+krLIeiw8bF5z532CptG0ZyGGFj0UbKMxx25lKnnJ1hMUbuzQl+PXQjNiDLnl1bOyz23U6hSK10r4guw==" }, + "node_modules/haversine-distance": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/haversine-distance/-/haversine-distance-1.2.1.tgz", + "integrity": "sha512-rQpG89d6NlAis0eqOSFXDqNU/GZcMPlHNVMqTSzD16niD9s1fDK8T6kwrK0WJ7OMU+iRNy3cgGYnNQihMqmaHg==" + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -4637,6 +4644,25 @@ "node": ">=8" } }, + "node_modules/swagger-ui-dist": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-4.5.0.tgz", + "integrity": "sha512-s00bemwjowAeGGCPxj4BmZrTbeKc9ig/99UEuJUVsaDXovIALD5/Hj0tmDCBGT3tgZQ9O7LrBdPmUlyhcudsLQ==" + }, + "node_modules/swagger-ui-express": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-4.3.0.tgz", + "integrity": "sha512-jN46SEEe9EoXa3ZgZoKgnSF6z0w3tnM1yqhO4Y+Q4iZVc8JOQB960EZpIAz6rNROrDApVDwcMHR0mhlnc/5Omw==", + "dependencies": { + "swagger-ui-dist": ">=4.1.3" + }, + "engines": { + "node": ">= v0.10.32" + }, + "peerDependencies": { + "express": ">=4.0.0" + } + }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -6798,6 +6824,11 @@ "resolved": "https://registry.npmjs.org/haversine/-/haversine-1.1.1.tgz", "integrity": "sha512-KW4MS8+krLIeiw8bF5z532CptG0ZyGGFj0UbKMxx25lKnnJ1hMUbuzQl+PXQjNiDLnl1bOyz23U6hSK10r4guw==" }, + "haversine-distance": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/haversine-distance/-/haversine-distance-1.2.1.tgz", + "integrity": "sha512-rQpG89d6NlAis0eqOSFXDqNU/GZcMPlHNVMqTSzD16niD9s1fDK8T6kwrK0WJ7OMU+iRNy3cgGYnNQihMqmaHg==" + }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -8502,6 +8533,19 @@ "has-flag": "^4.0.0" } }, + "swagger-ui-dist": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-4.5.0.tgz", + "integrity": "sha512-s00bemwjowAeGGCPxj4BmZrTbeKc9ig/99UEuJUVsaDXovIALD5/Hj0tmDCBGT3tgZQ9O7LrBdPmUlyhcudsLQ==" + }, + "swagger-ui-express": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-4.3.0.tgz", + "integrity": "sha512-jN46SEEe9EoXa3ZgZoKgnSF6z0w3tnM1yqhO4Y+Q4iZVc8JOQB960EZpIAz6rNROrDApVDwcMHR0mhlnc/5Omw==", + "requires": { + "swagger-ui-dist": ">=4.1.3" + } + }, "test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", diff --git a/server/package.json b/server/package.json index 77f3769..fe18985 100644 --- a/server/package.json +++ b/server/package.json @@ -23,6 +23,7 @@ "mongodb": "^4.3.1", "mongoose": "^6.1.9", "nodemon": "^2.0.15", - "nyc": "^15.1.0" + "nyc": "^15.1.0", + "swagger-ui-express": "^4.3.0" } } diff --git a/server/swagger.json b/server/swagger.json new file mode 100644 index 0000000..64e9279 --- /dev/null +++ b/server/swagger.json @@ -0,0 +1,34 @@ +{ + "swagger": "2.0", + "security": [{ + "cookie": [] + }], + "securityDefinitions": { + "cookie": { + "name": "access_token", + "in": "header", + "type": "apiKey", + "description": "JWT Authorisation Token" + } + }, + "info": { + "title": "Nordic Transport Group Highway Tracker", + "version": "1.0.0", + "description": "API for Nordic Transport Groups Highway Tracker." + }, + "host": "localhost:3000", + "basePath": "/", + "tags": [ + { + "name": "Authentication", + "description": "Authenticate with the API." + }, + { + "name": "Bill", + "description": "Manage bills." + } + ], + "paths": { + + } +} \ No newline at end of file From 42c0b266663f7a21f72868fecb9287c71139e301 Mon Sep 17 00:00:00 2001 From: Jake Date: Mon, 7 Feb 2022 18:23:53 +0000 Subject: [PATCH 2/3] HT-20 Add swagger endpoints for Bills and Auth Controller --- server/app.js | 2 +- server/business/user.business.js | 4 +- server/swagger.json | 346 ++++++++++++++++++++++++++++++- 3 files changed, 348 insertions(+), 4 deletions(-) diff --git a/server/app.js b/server/app.js index 5584aa3..dabe168 100644 --- a/server/app.js +++ b/server/app.js @@ -5,7 +5,7 @@ const cors = require("cors"); const cookieSession = require("cookie-session"); const cookieParser = require("cookie-parser"); const swaggerUi = require('swagger-ui-express'), - swaggerDocument = require('../swagger.json') + swaggerDocument = require('./swagger.json') require("./database"); require("dotenv").config(); diff --git a/server/business/user.business.js b/server/business/user.business.js index 51ac094..38134f7 100644 --- a/server/business/user.business.js +++ b/server/business/user.business.js @@ -47,7 +47,7 @@ module.exports = class UserBusiness { id: user._id, }; }) - .catch(() => {throw httpError(400, "Your email or password is incorrect."); + .catch(() => {throw httpError(401, "Your email or password is incorrect."); }); } @@ -84,7 +84,7 @@ module.exports = class UserBusiness { throw httpError(400, "Username is already in use."); if (error.message.includes("email")) throw httpError(400, "Email is already in use."); - throw httpError(404, error.message); + throw httpError(500, error.message); }); } diff --git a/server/swagger.json b/server/swagger.json index 64e9279..a45e022 100644 --- a/server/swagger.json +++ b/server/swagger.json @@ -29,6 +29,350 @@ } ], "paths": { - + "/bill": { + "get": { + "tags": ["Bill"], + "summary": "Returns a list of all bills.", + "parameters": [ + { + "name": "driverId", + "in": "query", + "type": "string", + "description": "Filter bills by the driver associated with them." + }, + { + "name": "paid", + "in": "query", + "type": "boolean", + "description": "Filter bills based on if they have been paid." + }, + { + "name": "limit", + "in": "query", + "type": "number", + "default": 10, + "description": "Filter the amount of bills to be returned on a page." + }, + { + "name": "offset", + "in": "query", + "type": "number", + "default": 0, + "description": "Filter the amount of pages needed to be skipped." + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/bill" + } + } + }, + "401": { + "description": "UNAUTHORISED", + "schema": { + "type": "string", + "example": ["Unauthorized: No token provided.", "Unauthorized: Invalid token."] + } + }, + "403": { + "description": "FORBIDDEN", + "schema": { + "type": "string", + "example": "Unauthorized: You not do have permission to view this page." + } + } + } + } + }, + "/bill/{id}": { + "parameters": [ + { + "name": "billId", + "in": "path", + "type": "string", + "description": "The ID of the bill which is to be retrieved.", + "required": true + } + ], + "get": { + "tags": ["Bill"], + "summary": "Return a bill by its ID.", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "$ref": "#/definition/bill" + } + }, + "401": { + "description": "UNAUTHORISED", + "schema": { + "type": "string", + "example": [ + "Unauthorized: No token provided.", + "Unauthorized: Invalid token." + ] + } + }, + "403": { + "description": "FORBIDDEN", + "schema": { + "type": "string", + "example": "Unauthorized: You not do have permission to view this page." + } + } + } + }, + "put": { + "tags": ["Bill"], + "summary": "Update a bills status to paid.", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "$ref": "#/definitions/bill" + } + }, + "400": { + "description": "BAD REQUEST", + "schema": { + "type": "string", + "example": "ID is not valid." + } + }, + "401": { + "description": "UNAUTHORISED", + "schema": { + "type": "string", + "example": [ + "Unauthorized: No token provided.", + "Unauthorized: Invalid token." + ] + } + }, + "403": { + "description": "FORBIDDEN", + "schema": { + "type": "string", + "example": "Unauthorized: You not do have permission to view this page." + } + }, + "404": { + "description": "NOT FOUND", + "schema": { + "type": "string", + "example": "Bill can't be found in the database." + } + } + } + } + }, + "/login": { + "parameters": [ + { + "name": "email", + "in": "formData", + "type": "string", + "description": "The email of the users account.", + "required": true + }, + { + "name": "password", + "in": "formData", + "type": "string", + "description": "The password of the users account.", + "required": true + } + ], + "post": { + "tags": ["Authentication"], + "description": "Authenticate the user.", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "message": { + "type": "string", + "example": "Successfully logged in." + }, + "username": { + "type": "string" + }, + "role": { + "type": "string", + "enum": ["Driver", "Toll Operator"] + }, + "id": { + "type": "string" + } + } + } + }, + "401": { + "description": "UNAUTHORISED", + "schema": { + "type": "string", + "example": "Your email or password is incorrect." + } + } + } + } + }, + "/logout": { + "post": { + "tags": ["Authentication"], + "description": "Log the user out and remove the authentication token.", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "string", + "example": "User was successfully logged out." + } + } + } + } + }, + "/register": { + "post": { + "tags": ["Authentication"], + "description": "Create a new account for the system.", + "parameters": [ + { + "name": "email", + "in": "formData", + "type": "string", + "description": "The email to be used for the users account.", + "required": true + }, + { + "name": "password", + "in": "formData", + "type": "string", + "description": "The password to be used for the users account.", + "required": true + }, + { + "name": "username", + "in": "formData", + "type": "string", + "description": "The username to be used for the users account.", + "required": true + } + ], + "responses": { + "201": { + "description": "CREATED", + "schema": { + "type": "string", + "example": "User was successfully created." + } + }, + "400": { + "description": "BAD REQUEST", + "schema": { + "type": "string", + "example": ["Username is already in use.", "Email is already in use.", "User data is invalid."] + } + } + } + } + } + }, + "definitions": { + "bill": { + "required": ["journey", "driver", "cost"], + "properties": { + "journey": { + "type": "object", + "$ref": "#/definitions/journey", + "uniqueItems": true + }, + "driver": { + "type": "object", + "$ref": "#/definitions/user" + }, + "cost": { + "type": "number" + }, + "paid": { + "type": "boolean", + "default": false + } + } + }, + "journey": { + "required": ["regNumber", "entryLocation", "exitLocation"], + "properties": { + "regNumber": { + "type": "string" + }, + "entryLocation": { + "type": "object", + "$ref": "#/definitions/location" + }, + "exitLocation": { + "type": "object", + "$ref": "#/definitions/location" + }, + "journeyDateTime": { + "type": "string" + } + } + }, + "user": { + "required": ["username", "email", "password", "type"], + "properties": { + "username": { + "type": "string", + "minLength": 5, + "uniqueItems": true + }, + "email": { + "type": "string", + "uniqueItems": true + }, + "password": { + "type": "string", + "minLength": 5 + }, + "type": { + "type": "string", + "enum": ["Driver", "Toll Operator"] + } + } + }, + "location": { + "required": ["name", "coordinates"], + "properties": { + "name": { + "type": "string" + }, + "coordinates": { + "type": "object", + "$ref": "#/definitions/coordinates" + } + } + }, + "coordinates": { + "required": ["longitude", "latitude"], + "properties": { + "longitude": { + "type": "number" + }, + "latitude": { + "type": "number" + } + } + } } } \ No newline at end of file From 2b1efd3d0ba734532b835baa89dcc9c81f0cd6fc Mon Sep 17 00:00:00 2001 From: Jake Date: Mon, 7 Feb 2022 18:34:51 +0000 Subject: [PATCH 3/3] HT-20 fix failing tests --- server/.nyc_output/processinfo/index.json | 2 +- server/coverage/lcov.info | 267 ++++++++++++------ .../test/integration/auth.controller.test.js | 2 +- 3 files changed, 175 insertions(+), 96 deletions(-) diff --git a/server/.nyc_output/processinfo/index.json b/server/.nyc_output/processinfo/index.json index 2edb59e..f175aa2 100644 --- a/server/.nyc_output/processinfo/index.json +++ b/server/.nyc_output/processinfo/index.json @@ -1 +1 @@ -{"processes":{"12f11c28-311f-49b3-9c08-cfa6cf70d965":{"parent":null,"children":[]}},"files":{"C:\\Projects\\CSSD-Assignment\\server\\app.js":["12f11c28-311f-49b3-9c08-cfa6cf70d965"],"C:\\Projects\\CSSD-Assignment\\server\\database\\index.js":["12f11c28-311f-49b3-9c08-cfa6cf70d965"],"C:\\Projects\\CSSD-Assignment\\server\\config\\db.config.js":["12f11c28-311f-49b3-9c08-cfa6cf70d965"],"C:\\Projects\\CSSD-Assignment\\server\\models\\journey.model.js":["12f11c28-311f-49b3-9c08-cfa6cf70d965"],"C:\\Projects\\CSSD-Assignment\\server\\models\\bill.model.js":["12f11c28-311f-49b3-9c08-cfa6cf70d965"],"C:\\Projects\\CSSD-Assignment\\server\\utilities.js":["12f11c28-311f-49b3-9c08-cfa6cf70d965"],"C:\\Projects\\CSSD-Assignment\\server\\models\\location.model.js":["12f11c28-311f-49b3-9c08-cfa6cf70d965"],"C:\\Projects\\CSSD-Assignment\\server\\models\\user.model.js":["12f11c28-311f-49b3-9c08-cfa6cf70d965"],"C:\\Projects\\CSSD-Assignment\\server\\routes\\auth.routes.js":["12f11c28-311f-49b3-9c08-cfa6cf70d965"],"C:\\Projects\\CSSD-Assignment\\server\\controllers\\auth.controller.js":["12f11c28-311f-49b3-9c08-cfa6cf70d965"],"C:\\Projects\\CSSD-Assignment\\server\\business\\user.business.js":["12f11c28-311f-49b3-9c08-cfa6cf70d965"],"C:\\Projects\\CSSD-Assignment\\server\\datalayer\\mongo.js":["12f11c28-311f-49b3-9c08-cfa6cf70d965"],"C:\\Projects\\CSSD-Assignment\\server\\routes\\bill.routes.js":["12f11c28-311f-49b3-9c08-cfa6cf70d965"],"C:\\Projects\\CSSD-Assignment\\server\\controllers\\bill.controller.js":["12f11c28-311f-49b3-9c08-cfa6cf70d965"],"C:\\Projects\\CSSD-Assignment\\server\\business\\bill.business.js":["12f11c28-311f-49b3-9c08-cfa6cf70d965"]},"externalIds":{}} \ No newline at end of file +{"processes":{"b2f11009-2b6c-4812-bc05-5d889a357cc7":{"parent":null,"children":[]}},"files":{"C:\\Projects\\CSSD-Assignment\\server\\app.js":["b2f11009-2b6c-4812-bc05-5d889a357cc7"],"C:\\Projects\\CSSD-Assignment\\server\\database\\index.js":["b2f11009-2b6c-4812-bc05-5d889a357cc7"],"C:\\Projects\\CSSD-Assignment\\server\\config\\db.config.js":["b2f11009-2b6c-4812-bc05-5d889a357cc7"],"C:\\Projects\\CSSD-Assignment\\server\\models\\journey.model.js":["b2f11009-2b6c-4812-bc05-5d889a357cc7"],"C:\\Projects\\CSSD-Assignment\\server\\models\\bill.model.js":["b2f11009-2b6c-4812-bc05-5d889a357cc7"],"C:\\Projects\\CSSD-Assignment\\server\\utilities.js":["b2f11009-2b6c-4812-bc05-5d889a357cc7"],"C:\\Projects\\CSSD-Assignment\\server\\models\\location.model.js":["b2f11009-2b6c-4812-bc05-5d889a357cc7"],"C:\\Projects\\CSSD-Assignment\\server\\models\\user.model.js":["b2f11009-2b6c-4812-bc05-5d889a357cc7"],"C:\\Projects\\CSSD-Assignment\\server\\routes\\auth.routes.js":["b2f11009-2b6c-4812-bc05-5d889a357cc7"],"C:\\Projects\\CSSD-Assignment\\server\\controllers\\auth.controller.js":["b2f11009-2b6c-4812-bc05-5d889a357cc7"],"C:\\Projects\\CSSD-Assignment\\server\\business\\user.business.js":["b2f11009-2b6c-4812-bc05-5d889a357cc7"],"C:\\Projects\\CSSD-Assignment\\server\\datalayer\\mongo.js":["b2f11009-2b6c-4812-bc05-5d889a357cc7"],"C:\\Projects\\CSSD-Assignment\\server\\routes\\bill.routes.js":["b2f11009-2b6c-4812-bc05-5d889a357cc7"],"C:\\Projects\\CSSD-Assignment\\server\\middleware\\auth\\authJwt.js":["b2f11009-2b6c-4812-bc05-5d889a357cc7"],"C:\\Projects\\CSSD-Assignment\\server\\controllers\\bill.controller.js":["b2f11009-2b6c-4812-bc05-5d889a357cc7"],"C:\\Projects\\CSSD-Assignment\\server\\business\\bill.business.js":["b2f11009-2b6c-4812-bc05-5d889a357cc7"]},"externalIds":{}} \ No newline at end of file diff --git a/server/coverage/lcov.info b/server/coverage/lcov.info index 09ce477..94f9490 100644 --- a/server/coverage/lcov.info +++ b/server/coverage/lcov.info @@ -1,82 +1,104 @@ TN: SF:app.js -FNF:0 +FN:31,(anonymous_0) +FNF:1 FNH:0 +FNDA:0,(anonymous_0) DA:1,1 DA:2,1 DA:3,1 DA:4,1 DA:5,1 DA:6,1 +DA:7,1 DA:8,1 -DA:9,1 +DA:10,1 DA:11,1 DA:13,1 -DA:22,1 -DA:27,1 -DA:28,1 +DA:15,1 +DA:24,1 +DA:29,1 +DA:30,1 +DA:31,1 DA:32,1 -DA:33,1 -DA:34,1 -DA:35,1 -DA:36,1 DA:37,1 DA:38,1 DA:39,1 +DA:40,1 +DA:41,1 DA:42,1 DA:43,1 -DA:45,1 -LF:24 -LH:24 +DA:44,1 +DA:47,1 +DA:48,1 +DA:50,1 +LF:28 +LH:28 BRF:0 BRH:0 end_of_record TN: SF:utilities.js -FN:4,(anonymous_0) -FNF:1 -FNH:1 +FN:6,(anonymous_0) +FN:10,(anonymous_1) +FNF:2 +FNH:2 FNDA:1,(anonymous_0) +FNDA:2,(anonymous_1) DA:1,1 +DA:2,1 DA:3,1 DA:5,1 -DA:8,1 -LF:4 -LH:4 -BRF:0 -BRH:0 +DA:7,1 +DA:11,2 +DA:12,2 +DA:14,0 +DA:17,1 +LF:9 +LH:8 +BRDA:11,0,0,2 +BRDA:11,0,1,0 +BRF:2 +BRH:1 end_of_record TN: SF:business\bill.business.js -FN:6,(anonymous_0) -FN:14,(anonymous_1) -FN:23,(anonymous_2) -FN:30,(anonymous_3) -FN:35,(anonymous_4) -FNF:5 +FN:7,(anonymous_0) +FN:15,(anonymous_1) +FN:24,(anonymous_2) +FN:31,(anonymous_3) +FN:34,(anonymous_4) +FN:42,(anonymous_5) +FN:47,(anonymous_6) +FNF:7 FNH:4 FNDA:1,(anonymous_0) FNDA:5,(anonymous_1) FNDA:0,(anonymous_2) -FNDA:2,(anonymous_3) -FNDA:1,(anonymous_4) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:2,(anonymous_5) +FNDA:1,(anonymous_6) DA:1,1 DA:2,1 DA:3,1 -DA:5,1 -DA:8,1 -DA:15,5 -DA:21,5 -DA:24,0 -DA:31,2 -DA:34,2 -DA:35,1 -LF:11 -LH:10 -BRDA:18,0,0,5 -BRDA:18,0,1,4 -BRDA:19,1,0,5 -BRDA:19,1,1,4 +DA:4,1 +DA:6,1 +DA:9,1 +DA:16,5 +DA:22,5 +DA:25,0 +DA:32,0 +DA:35,0 +DA:43,2 +DA:46,2 +DA:47,1 +LF:14 +LH:11 +BRDA:19,0,0,5 +BRDA:19,0,1,4 +BRDA:20,1,0,5 +BRDA:20,1,1,4 BRF:4 BRH:4 end_of_record @@ -97,15 +119,15 @@ FN:110,isUserDataValid FNF:12 FNH:11 FNDA:1,(anonymous_0) -FNDA:2,(anonymous_1) -FNDA:2,(anonymous_2) +FNDA:3,(anonymous_1) +FNDA:3,(anonymous_2) FNDA:1,(anonymous_3) FNDA:3,(anonymous_4) FNDA:2,(anonymous_5) FNDA:3,(anonymous_6) FNDA:2,(anonymous_7) -FNDA:2,(anonymous_8) -FNDA:2,(anonymous_9) +FNDA:3,(anonymous_8) +FNDA:3,(anonymous_9) FNDA:0,(anonymous_10) FNDA:3,isUserDataValid DA:1,1 @@ -115,12 +137,12 @@ DA:4,1 DA:5,1 DA:7,1 DA:10,1 -DA:17,2 -DA:19,2 -DA:24,2 +DA:17,3 +DA:19,3 +DA:24,3 DA:25,1 -DA:31,1 -DA:43,1 +DA:31,2 +DA:43,2 DA:50,1 DA:58,3 DA:64,2 @@ -133,14 +155,14 @@ DA:84,1 DA:85,1 DA:86,1 DA:87,0 -DA:95,2 -DA:99,2 +DA:95,3 +DA:99,3 DA:102,0 DA:111,3 LF:29 LH:26 BRDA:24,0,0,1 -BRDA:24,0,1,1 +BRDA:24,0,1,2 BRDA:72,1,0,0 BRDA:72,1,1,3 BRDA:83,2,0,1 @@ -175,8 +197,8 @@ FN:39,(anonymous_5) FN:47,(anonymous_6) FNF:7 FNH:6 -FNDA:2,(anonymous_0) -FNDA:1,(anonymous_1) +FNDA:3,(anonymous_0) +FNDA:2,(anonymous_1) FNDA:1,(anonymous_2) FNDA:3,(anonymous_3) FNDA:1,(anonymous_4) @@ -185,12 +207,12 @@ FNDA:0,(anonymous_6) DA:1,1 DA:2,1 DA:7,1 -DA:8,2 -DA:11,1 -DA:12,1 -DA:13,1 -DA:14,1 -DA:16,1 +DA:8,3 +DA:11,2 +DA:12,2 +DA:13,2 +DA:14,2 +DA:16,2 DA:24,1 DA:31,1 DA:32,3 @@ -209,29 +231,39 @@ SF:controllers\bill.controller.js FN:7,(anonymous_0) FN:9,(anonymous_1) FN:10,(anonymous_2) -FN:19,(anonymous_3) -FN:21,(anonymous_4) -FN:22,(anonymous_5) -FNF:6 +FN:18,(anonymous_3) +FN:20,(anonymous_4) +FN:21,(anonymous_5) +FN:27,(anonymous_6) +FN:29,(anonymous_7) +FN:30,(anonymous_8) +FNF:9 FNH:5 FNDA:5,(anonymous_0) FNDA:5,(anonymous_1) FNDA:0,(anonymous_2) -FNDA:2,(anonymous_3) -FNDA:1,(anonymous_4) -FNDA:1,(anonymous_5) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:2,(anonymous_6) +FNDA:1,(anonymous_7) +FNDA:1,(anonymous_8) DA:1,1 DA:2,1 DA:7,1 DA:8,5 DA:9,5 DA:11,0 -DA:19,1 -DA:20,2 -DA:21,1 -DA:22,1 -LF:10 -LH:9 +DA:18,1 +DA:19,0 +DA:20,0 +DA:21,0 +DA:27,1 +DA:28,2 +DA:29,1 +DA:30,1 +LF:14 +LH:10 BRF:0 BRH:0 end_of_record @@ -287,34 +319,79 @@ FN:10,(anonymous_1) FN:15,(anonymous_2) FN:16,(anonymous_3) FN:25,(anonymous_4) -FN:32,(anonymous_5) -FN:39,(anonymous_6) -FN:42,(anonymous_7) -FNF:8 +FN:34,(anonymous_5) +FN:41,(anonymous_6) +FN:48,(anonymous_7) +FN:51,(anonymous_8) +FNF:9 FNH:8 FNDA:2,(anonymous_0) FNDA:5,(anonymous_1) FNDA:5,(anonymous_2) FNDA:5,(anonymous_3) -FNDA:2,(anonymous_4) +FNDA:0,(anonymous_4) FNDA:3,(anonymous_5) -FNDA:2,(anonymous_6) -FNDA:1,(anonymous_7) +FNDA:3,(anonymous_6) +FNDA:2,(anonymous_7) +FNDA:1,(anonymous_8) DA:4,2 DA:11,5 DA:16,5 DA:17,5 -DA:26,2 -DA:33,3 -DA:40,2 -DA:42,1 -DA:47,1 -LF:9 +DA:26,0 +DA:35,3 +DA:42,3 +DA:49,2 +DA:51,1 +DA:56,1 +LF:10 LH:9 BRF:0 BRH:0 end_of_record TN: +SF:middleware\auth\authJwt.js +FN:4,(anonymous_0) +FN:12,(anonymous_1) +FN:27,(anonymous_2) +FNF:3 +FNH:2 +FNDA:7,(anonymous_0) +FNDA:7,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,1 +DA:4,1 +DA:5,7 +DA:6,0 +DA:10,7 +DA:12,7 +DA:13,7 +DA:14,0 +DA:19,7 +DA:20,7 +DA:21,7 +DA:22,7 +DA:23,7 +DA:27,1 +DA:28,0 +DA:30,0 +DA:31,0 +DA:36,0 +DA:39,1 +LF:19 +LH:13 +BRDA:5,0,0,0 +BRDA:5,0,1,7 +BRDA:5,1,0,7 +BRDA:5,1,1,7 +BRDA:13,2,0,0 +BRDA:13,2,1,7 +BRDA:30,3,0,0 +BRDA:30,3,1,0 +BRF:8 +BRH:4 +end_of_record +TN: SF:models\bill.model.js FN:2,(anonymous_0) FN:27,(anonymous_1) @@ -402,12 +479,14 @@ FNF:0 FNH:0 DA:1,1 DA:2,1 -DA:5,1 -DA:8,1 -DA:11,1 -DA:13,1 -LF:6 -LH:6 +DA:3,1 +DA:6,1 +DA:9,1 +DA:12,1 +DA:15,1 +DA:17,1 +LF:8 +LH:8 BRF:0 BRH:0 end_of_record diff --git a/server/test/integration/auth.controller.test.js b/server/test/integration/auth.controller.test.js index 752f027..6f55a30 100644 --- a/server/test/integration/auth.controller.test.js +++ b/server/test/integration/auth.controller.test.js @@ -66,7 +66,7 @@ describe("Testing /auth paths", () => { .send(request) .end((err, res) => { // Assert - res.should.have.status(400); + res.should.have.status(401); res.should.be.a("object"); res.body.should.have.property("message"); res.body.message.should.be.eql(