diff --git a/backend/globalConfig.json b/backend/globalConfig.json index ae7585862..9219d5f40 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: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 new file mode 100644 index 000000000..98e812ec6 --- /dev/null +++ b/backend/routers/checkUser.router.test.js @@ -0,0 +1,84 @@ +// 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(); +// express.json() is a body parser needed for POST API requests +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(); + }); + }); +});