diff --git a/packages/backend/test/unit/AbuseReportNotificationService.ts b/packages/backend/test/unit/AbuseReportNotificationService.ts index a67cb3664a..948f0cd18e 100644 --- a/packages/backend/test/unit/AbuseReportNotificationService.ts +++ b/packages/backend/test/unit/AbuseReportNotificationService.ts @@ -149,6 +149,9 @@ describe('AbuseReportNotificationService', () => { }) .compile(); + await app.init(); + app.enableShutdownHooks(); + usersRepository = app.get(DI.usersRepository); userProfilesRepository = app.get(DI.userProfilesRepository); systemWebhooksRepository = app.get(DI.systemWebhooksRepository); @@ -159,8 +162,10 @@ describe('AbuseReportNotificationService', () => { roleService = app.get(RoleService) as jest.Mocked; emailService = app.get(EmailService) as jest.Mocked; webhookService = app.get(SystemWebhookService) as jest.Mocked; + }); - app.enableShutdownHooks(); + afterAll(async () => { + await app.close(); }); beforeEach(async () => { @@ -185,10 +190,6 @@ describe('AbuseReportNotificationService', () => { await abuseReportNotificationRecipientRepository.delete({}); }); - afterAll(async () => { - await app.close(); - }); - // -------------------------------------------------------------------------------------- describe('createRecipient', () => { diff --git a/packages/backend/test/unit/CaptchaService.ts b/packages/backend/test/unit/CaptchaService.ts index 94a743e6b8..6afac8c284 100644 --- a/packages/backend/test/unit/CaptchaService.ts +++ b/packages/backend/test/unit/CaptchaService.ts @@ -45,6 +45,7 @@ describe('CaptchaService', () => { ], }).compile(); + await app.init(); app.enableShutdownHooks(); service = app.get(CaptchaService); diff --git a/packages/backend/test/unit/CustomEmojiService.ts b/packages/backend/test/unit/CustomEmojiService.ts index 1d854457cd..c3ea1589d2 100644 --- a/packages/backend/test/unit/CustomEmojiService.ts +++ b/packages/backend/test/unit/CustomEmojiService.ts @@ -44,6 +44,8 @@ describe('CustomEmojiService', () => { ], }) .compile(); + + await app.init(); app.enableShutdownHooks(); service = app.get(CustomEmojiService); diff --git a/packages/backend/test/unit/DriveService.ts b/packages/backend/test/unit/DriveService.ts index 964c65ccaa..7ea031ada9 100644 --- a/packages/backend/test/unit/DriveService.ts +++ b/packages/backend/test/unit/DriveService.ts @@ -27,20 +27,22 @@ describe('DriveService', () => { beforeAll(async () => { app = await Test.createTestingModule({ imports: [GlobalModule, CoreModule], - providers: [DriveService], }).compile(); - app.enableShutdownHooks(); - driveService = app.get(DriveService); - }); - beforeEach(async () => { - s3Mock.reset(); + await app.init(); + app.enableShutdownHooks(); + + driveService = app.get(DriveService); }); afterAll(async () => { await app.close(); }); + beforeEach(async () => { + s3Mock.reset(); + }); + describe('Object storage', () => { test('delete a file', async () => { s3Mock.on(DeleteObjectCommand) diff --git a/packages/backend/test/unit/FileInfoService.ts b/packages/backend/test/unit/FileInfoService.ts index 89583e7304..d09fbc65df 100644 --- a/packages/backend/test/unit/FileInfoService.ts +++ b/packages/backend/test/unit/FileInfoService.ts @@ -56,6 +56,7 @@ describe('FileInfoService', () => { }) .compile(); + await app.init(); app.enableShutdownHooks(); fileInfoService = app.get(FileInfoService); diff --git a/packages/backend/test/unit/FlashService.ts b/packages/backend/test/unit/FlashService.ts index da016b4322..43cb733456 100644 --- a/packages/backend/test/unit/FlashService.ts +++ b/packages/backend/test/unit/FlashService.ts @@ -9,7 +9,9 @@ import { FlashService } from '@/core/FlashService.js'; import { IdService } from '@/core/IdService.js'; import { FlashsRepository, MiFlash, MiUser, UserProfilesRepository, UsersRepository } from '@/models/_.js'; import { DI } from '@/di-symbols.js'; +import { CacheManagementService } from '@/core/CacheManagementService.js'; import { GlobalModule } from '@/GlobalModule.js'; +import { CoreModule } from '@/core/CoreModule.js'; describe('FlashService', () => { let app: TestingModule; @@ -21,6 +23,7 @@ describe('FlashService', () => { let usersRepository: UsersRepository; let userProfilesRepository: UserProfilesRepository; let idService: IdService; + let cacheManagementService: CacheManagementService; // -------------------------------------------------------------------------------------- @@ -61,16 +64,15 @@ describe('FlashService', () => { // -------------------------------------------------------------------------------------- - beforeEach(async () => { + beforeAll(async () => { app = await Test.createTestingModule({ imports: [ GlobalModule, - ], - providers: [ - FlashService, - IdService, + CoreModule, ], }).compile(); + + await app.init(); app.enableShutdownHooks(); service = app.get(FlashService); @@ -79,7 +81,14 @@ describe('FlashService', () => { usersRepository = app.get(DI.usersRepository); userProfilesRepository = app.get(DI.userProfilesRepository); idService = app.get(IdService); + cacheManagementService = app.get(CacheManagementService); + }); + afterAll(async () => { + await app.close(); + }); + + beforeEach(async () => { root = await createUser({ username: 'root', usernameLower: 'root' }); alice = await createUser({ username: 'alice', usernameLower: 'alice' }); bob = await createUser({ username: 'bob', usernameLower: 'bob' }); @@ -89,10 +98,7 @@ describe('FlashService', () => { await usersRepository.delete({}); await userProfilesRepository.delete({}); await flashsRepository.delete({}); - }); - - afterAll(async () => { - await app.close(); + cacheManagementService.clear(); }); // -------------------------------------------------------------------------------------- diff --git a/packages/backend/test/unit/MetaService.ts b/packages/backend/test/unit/MetaService.ts index 056838e180..5c1996045b 100644 --- a/packages/backend/test/unit/MetaService.ts +++ b/packages/backend/test/unit/MetaService.ts @@ -27,6 +27,7 @@ describe('MetaService', () => { ], }).compile(); + await app.init(); app.enableShutdownHooks(); metaService = app.get(MetaService, { strict: false }); diff --git a/packages/backend/test/unit/RelayService.ts b/packages/backend/test/unit/RelayService.ts index 074430dd31..959017260a 100644 --- a/packages/backend/test/unit/RelayService.ts +++ b/packages/backend/test/unit/RelayService.ts @@ -52,6 +52,7 @@ describe('RelayService', () => { }) .compile(); + await app.init(); app.enableShutdownHooks(); relayService = app.get(RelayService); diff --git a/packages/backend/test/unit/S3Service.ts b/packages/backend/test/unit/S3Service.ts index 643d71f8e6..4967e41471 100644 --- a/packages/backend/test/unit/S3Service.ts +++ b/packages/backend/test/unit/S3Service.ts @@ -37,6 +37,8 @@ describe('S3Service', () => { }) .overrideProvider(InternalEventService).useClass(FakeInternalEventService) .compile(); + + await app.init(); app.enableShutdownHooks(); }); diff --git a/packages/backend/test/unit/SigninWithPasskeyApiService.ts b/packages/backend/test/unit/SigninWithPasskeyApiService.ts index b7fff58385..2a708aa45f 100644 --- a/packages/backend/test/unit/SigninWithPasskeyApiService.ts +++ b/packages/backend/test/unit/SigninWithPasskeyApiService.ts @@ -10,6 +10,7 @@ import { FastifyReply, FastifyRequest } from 'fastify'; import { AuthenticationResponseJSON } from '@simplewebauthn/types'; import { HttpHeader } from 'fastify/types/utils.js'; import { MockFunctionMetadata, ModuleMocker } from 'jest-mock'; +import { FakeSkRateLimiterService } from '../misc/FakeSkRateLimiterService.js'; import { MiUser } from '@/models/User.js'; import { MiUserProfile, UserProfilesRepository, UsersRepository } from '@/models/_.js'; import { IdService } from '@/core/IdService.js'; @@ -21,23 +22,11 @@ import { WebAuthnService } from '@/core/WebAuthnService.js'; import { SigninService } from '@/server/api/SigninService.js'; import { IdentifiableError } from '@/misc/identifiable-error.js'; import { SkRateLimiterService } from '@/server/SkRateLimiterService.js'; -import { LimitInfo } from '@/misc/rate-limit-utils.js'; +import { CacheManagementService } from '@/core/CacheManagementService.js'; +import { ServerModule } from '@/server/ServerModule.js'; const moduleMocker = new ModuleMocker(global); -class FakeLimiter { - public async limit(): Promise { - return { - blocked: false, - remaining: Number.MAX_SAFE_INTEGER, - resetMs: 0, - resetSec: 0, - fullResetMs: 0, - fullResetSec: 0, - }; - } -} - class FakeSigninService { public signin(..._args: any): any { return true; @@ -52,6 +41,7 @@ class DummyFastifyReply { header(_key: HttpHeader, _value: any): void { } } + class DummyFastifyRequest { public ip: string; public body: { credential: any, context: string }; @@ -76,44 +66,46 @@ describe('SigninWithPasskeyApiService', () => { let userProfilesRepository: UserProfilesRepository; let webAuthnService: WebAuthnService; let idService: IdService; + let cacheManagementService: CacheManagementService; let FakeWebauthnVerify: ()=>Promise; async function createUser(data: Partial = {}) { - const user = await usersRepository - .save({ - ...data, - }); - return user; + await usersRepository.insert(data); + return await usersRepository.findOneByOrFail({ id: data.id }); } async function createUserProfile(data: Partial = {}) { - const userProfile = await userProfilesRepository - .save({ ...data }, - ); - return userProfile; + await userProfilesRepository.insert(data); + return await userProfilesRepository.findOneByOrFail({ userId: data.userId }); } beforeAll(async () => { app = await Test.createTestingModule({ - imports: [GlobalModule, CoreModule], - providers: [ - SigninWithPasskeyApiService, - { provide: SkRateLimiterService, useClass: FakeLimiter }, - { provide: SigninService, useClass: FakeSigninService }, - ], + imports: [GlobalModule, CoreModule, ServerModule], }).useMocker((token) => { if (typeof token === 'function') { const mockMetadata = moduleMocker.getMetadata(token) as MockFunctionMetadata; const Mock = moduleMocker.generateFromMetadata(mockMetadata); return new Mock(); } - }).compile(); + }) + .overrideProvider(SkRateLimiterService).useClass(FakeSkRateLimiterService) + .overrideProvider(SigninService).useClass(FakeSigninService) + .compile(); + + await app.init(); app.enableShutdownHooks(); + passkeyApiService = app.get(SigninWithPasskeyApiService); usersRepository = app.get(DI.usersRepository); userProfilesRepository = app.get(DI.userProfilesRepository); webAuthnService = app.get(WebAuthnService); idService = app.get(IdService); + cacheManagementService = app.get(CacheManagementService); + }); + + afterAll(async () => { + await app.close(); }); beforeEach(async () => { @@ -125,7 +117,7 @@ describe('SigninWithPasskeyApiService', () => { const dummyUser = { id: uid, username: uid, usernameLower: uid.toLowerCase(), uri: null, host: null, - }; + }; const dummyProfile = { userId: uid, password: 'qwerty', @@ -135,8 +127,10 @@ describe('SigninWithPasskeyApiService', () => { await createUserProfile(dummyProfile); }); - afterAll(async () => { - await app.close(); + afterEach(async () => { + await userProfilesRepository.delete({}); + await usersRepository.delete({}); + cacheManagementService.clear(); }); describe('Get Passkey Options', () => { diff --git a/packages/backend/test/unit/server/api/drive/files/create.ts b/packages/backend/test/unit/server/api/drive/files/create.ts index 9b38f4d744..1b7b369011 100644 --- a/packages/backend/test/unit/server/api/drive/files/create.ts +++ b/packages/backend/test/unit/server/api/drive/files/create.ts @@ -32,6 +32,8 @@ describe('/drive/files/create', () => { module = await Test.createTestingModule({ imports: [GlobalModule, CoreModule, ServerModule], }).compile(); + + await module.init(); module.enableShutdownHooks(); const serverService = module.get(ServerService);