From dbb234d3bfbdccd7c006b38db7decb7da6f75d9e Mon Sep 17 00:00:00 2001 From: Danny Avila Date: Mon, 9 Jun 2025 18:10:50 -0400 Subject: [PATCH] ci: enhance GraphApiService tests with MongoDB in-memory server - Updated test setup to use MongoDB in-memory server for isolated testing. - Refactored beforeEach to beforeAll for database connection management. - Cleared database before each test to ensure a clean state. - Retained existing mocks while improving test structure for better clarity. --- api/server/services/GraphApiService.spec.js | 34 ++++++++++++--------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/api/server/services/GraphApiService.spec.js b/api/server/services/GraphApiService.spec.js index 2ccca41475..f83cb4a871 100644 --- a/api/server/services/GraphApiService.spec.js +++ b/api/server/services/GraphApiService.spec.js @@ -1,4 +1,3 @@ -// Mock all dependencies before importing anything jest.mock('@microsoft/microsoft-graph-client'); jest.mock('~/strategies/openidStrategy'); jest.mock('~/cache/getLogStores'); @@ -16,32 +15,39 @@ jest.mock('~/utils', () => ({ logAxiosError: jest.fn(), })); -// Mock deeper dependencies to prevent loading entire dependency tree jest.mock('~/server/services/Config', () => ({})); jest.mock('~/server/services/Files/strategies', () => ({ getStrategyFunctions: jest.fn(), })); -jest.mock('~/models', () => ({ - User: {}, - Group: {}, - updateUser: jest.fn(), - findUser: jest.fn(), - createUser: jest.fn(), -})); -const GraphApiService = require('./GraphApiService'); -const { Client } = require('@microsoft/microsoft-graph-client'); -const getLogStores = require('~/cache/getLogStores'); -const { getOpenIdConfig } = require('~/strategies/openidStrategy'); +const mongoose = require('mongoose'); const client = require('openid-client'); +const { MongoMemoryServer } = require('mongodb-memory-server'); +const { Client } = require('@microsoft/microsoft-graph-client'); +const { getOpenIdConfig } = require('~/strategies/openidStrategy'); +const getLogStores = require('~/cache/getLogStores'); +const GraphApiService = require('./GraphApiService'); describe('GraphApiService', () => { + let mongoServer; let mockGraphClient; let mockTokensCache; let mockOpenIdConfig; - beforeEach(() => { + beforeAll(async () => { + mongoServer = await MongoMemoryServer.create(); + const mongoUri = mongoServer.getUri(); + await mongoose.connect(mongoUri); + }); + + afterAll(async () => { + await mongoose.disconnect(); + await mongoServer.stop(); + }); + + beforeEach(async () => { jest.clearAllMocks(); + await mongoose.connection.dropDatabase(); // Mock Graph client mockGraphClient = {