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.
This commit is contained in:
Danny Avila 2025-06-09 18:10:50 -04:00
parent 718af1ada1
commit dbb234d3bf
No known key found for this signature in database
GPG key ID: BF31EEB2C5CA0956

View file

@ -1,4 +1,3 @@
// Mock all dependencies before importing anything
jest.mock('@microsoft/microsoft-graph-client'); jest.mock('@microsoft/microsoft-graph-client');
jest.mock('~/strategies/openidStrategy'); jest.mock('~/strategies/openidStrategy');
jest.mock('~/cache/getLogStores'); jest.mock('~/cache/getLogStores');
@ -16,32 +15,39 @@ jest.mock('~/utils', () => ({
logAxiosError: jest.fn(), logAxiosError: jest.fn(),
})); }));
// Mock deeper dependencies to prevent loading entire dependency tree
jest.mock('~/server/services/Config', () => ({})); jest.mock('~/server/services/Config', () => ({}));
jest.mock('~/server/services/Files/strategies', () => ({ jest.mock('~/server/services/Files/strategies', () => ({
getStrategyFunctions: jest.fn(), getStrategyFunctions: jest.fn(),
})); }));
jest.mock('~/models', () => ({
User: {},
Group: {},
updateUser: jest.fn(),
findUser: jest.fn(),
createUser: jest.fn(),
}));
const GraphApiService = require('./GraphApiService'); const mongoose = require('mongoose');
const { Client } = require('@microsoft/microsoft-graph-client');
const getLogStores = require('~/cache/getLogStores');
const { getOpenIdConfig } = require('~/strategies/openidStrategy');
const client = require('openid-client'); 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', () => { describe('GraphApiService', () => {
let mongoServer;
let mockGraphClient; let mockGraphClient;
let mockTokensCache; let mockTokensCache;
let mockOpenIdConfig; 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(); jest.clearAllMocks();
await mongoose.connection.dropDatabase();
// Mock Graph client // Mock Graph client
mockGraphClient = { mockGraphClient = {