From 324a239ba41992512e17f5d7939f3a7bfacbb8fb Mon Sep 17 00:00:00 2001 From: JamesNg Date: Mon, 28 Apr 2025 16:18:27 -0400 Subject: [PATCH 1/2] wrote unit tests for checkUser router --- backend/globalConfig.json | 2 +- backend/routers/checkUser.router.test.js | 83 ++++++++++++++++++++++++ 2 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 backend/routers/checkUser.router.test.js diff --git a/backend/globalConfig.json b/backend/globalConfig.json index ae7585862..f04b63a8f 100644 --- a/backend/globalConfig.json +++ b/backend/globalConfig.json @@ -1 +1 @@ -{"mongoUri":"mongodb://127.0.0.1:56074/jest?","mongoDBName":"jest"} \ No newline at end of file +{"mongoUri":"mongodb://127.0.0.1:35839/jest?","mongoDBName":"jest"} \ No newline at end of file diff --git a/backend/routers/checkUser.router.test.js b/backend/routers/checkUser.router.test.js new file mode 100644 index 000000000..8e8e96b10 --- /dev/null +++ b/backend/routers/checkUser.router.test.js @@ -0,0 +1,83 @@ +// Mock and import User Model +jest.mock('../models/user.model'); +const { User } = require('../models'); + +// Import checkUser router +const express = require('express'); +const supertest = require('supertest'); +const checkUserRouter = require('./checkUser.router'); + +// Create a new Express application for testing +const testapp = express(); +testapp.use(express.json()); +testapp.use('/api/checkuser', checkUserRouter); +const request = supertest(testapp); + +describe('Unit tests for checkUser router', () => { + // Mock user for test + const id = '123'; + const mockUser = { + id, + name: { + firstName: 'mock', + lastName: 'user', + }, + accessLevel: 'user', + skillsToMatch: [], + projects: [], + textingOk: false, + managedProjects: [], + isActive: true, + email: 'mockuser@gmail.com', + currentRole: 'Product Owner', + desiredRole: 'Product Owner', + newMember: false, + firstAttended: 'NOV 2015', + createdDate: '2020-01-14T02:14:22.407Z', + attendanceReason: 'Civic Engagement', + currentProject: 'Undebate', + }; + + const auth_origin = 'test-origin'; + + // Clear all mocks after each test + afterEach(() => { + jest.clearAllMocks(); + }); + + describe('CREATE', () => { + it('should authenticate user with POST /api/checkuser', async (done) => { + // Mock Mongoose method + User.findOne.mockResolvedValue(mockUser); + + const response = await request + .post('/api/checkuser') + .send({ email: 'mockuser@gmail.com', auth_origin }); + + // Tests + expect(User.findOne).toHaveBeenCalledWith({ email: 'mockuser@gmail.com' }); + expect(response.status).toBe(200); + expect(response.body).toEqual({ user: mockUser, auth_origin: auth_origin }); + + // Marks completion of tests + done(); + }); + }); + + describe('READ', () => { + it('should return a user by id with GET /api/checkuser/:id', async (done) => { + // Mock Mongoose method + User.findById.mockResolvedValue(mockUser); + + const response = await request.get(`/api/checkuser/${id}`); + + // Tests + expect(User.findById).toHaveBeenCalledWith(id); + expect(response.status).toBe(200); + expect(response.body).toEqual(mockUser); + + // Marks completion of tests + done(); + }); + }); +}); From c7ec576fa55a3e3f77413a07a5540b5d1b6e5d4f Mon Sep 17 00:00:00 2001 From: JamesNg Date: Mon, 28 Apr 2025 16:22:21 -0400 Subject: [PATCH 2/2] added comment for context in reading code --- backend/globalConfig.json | 2 +- backend/routers/checkUser.router.test.js | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/backend/globalConfig.json b/backend/globalConfig.json index f04b63a8f..9219d5f40 100644 --- a/backend/globalConfig.json +++ b/backend/globalConfig.json @@ -1 +1 @@ -{"mongoUri":"mongodb://127.0.0.1:35839/jest?","mongoDBName":"jest"} \ No newline at end of file +{"mongoUri":"mongodb://127.0.0.1:43943/jest?","mongoDBName":"jest"} \ No newline at end of file diff --git a/backend/routers/checkUser.router.test.js b/backend/routers/checkUser.router.test.js index 8e8e96b10..98e812ec6 100644 --- a/backend/routers/checkUser.router.test.js +++ b/backend/routers/checkUser.router.test.js @@ -9,6 +9,7 @@ const checkUserRouter = require('./checkUser.router'); // Create a new Express application for testing const testapp = express(); +// express.json() is a body parser needed for POST API requests testapp.use(express.json()); testapp.use('/api/checkuser', checkUserRouter); const request = supertest(testapp); @@ -53,8 +54,8 @@ describe('Unit tests for checkUser router', () => { const response = await request .post('/api/checkuser') .send({ email: 'mockuser@gmail.com', auth_origin }); - - // Tests + + // Tests expect(User.findOne).toHaveBeenCalledWith({ email: 'mockuser@gmail.com' }); expect(response.status).toBe(200); expect(response.body).toEqual({ user: mockUser, auth_origin: auth_origin });