call app.init, app.enableShutdownHooks, and app.close in more tests
This commit is contained in:
parent
7d6732bf96
commit
92892338f3
11 changed files with 66 additions and 53 deletions
|
|
@ -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<RoleService>;
|
||||
emailService = app.get<EmailService>(EmailService) as jest.Mocked<EmailService>;
|
||||
webhookService = app.get<SystemWebhookService>(SystemWebhookService) as jest.Mocked<SystemWebhookService>;
|
||||
});
|
||||
|
||||
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', () => {
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ describe('CaptchaService', () => {
|
|||
],
|
||||
}).compile();
|
||||
|
||||
await app.init();
|
||||
app.enableShutdownHooks();
|
||||
|
||||
service = app.get(CaptchaService);
|
||||
|
|
|
|||
|
|
@ -44,6 +44,8 @@ describe('CustomEmojiService', () => {
|
|||
],
|
||||
})
|
||||
.compile();
|
||||
|
||||
await app.init();
|
||||
app.enableShutdownHooks();
|
||||
|
||||
service = app.get<CustomEmojiService>(CustomEmojiService);
|
||||
|
|
|
|||
|
|
@ -27,20 +27,22 @@ describe('DriveService', () => {
|
|||
beforeAll(async () => {
|
||||
app = await Test.createTestingModule({
|
||||
imports: [GlobalModule, CoreModule],
|
||||
providers: [DriveService],
|
||||
}).compile();
|
||||
app.enableShutdownHooks();
|
||||
driveService = app.get<DriveService>(DriveService);
|
||||
});
|
||||
|
||||
beforeEach(async () => {
|
||||
s3Mock.reset();
|
||||
await app.init();
|
||||
app.enableShutdownHooks();
|
||||
|
||||
driveService = app.get<DriveService>(DriveService);
|
||||
});
|
||||
|
||||
afterAll(async () => {
|
||||
await app.close();
|
||||
});
|
||||
|
||||
beforeEach(async () => {
|
||||
s3Mock.reset();
|
||||
});
|
||||
|
||||
describe('Object storage', () => {
|
||||
test('delete a file', async () => {
|
||||
s3Mock.on(DeleteObjectCommand)
|
||||
|
|
|
|||
|
|
@ -56,6 +56,7 @@ describe('FileInfoService', () => {
|
|||
})
|
||||
.compile();
|
||||
|
||||
await app.init();
|
||||
app.enableShutdownHooks();
|
||||
|
||||
fileInfoService = app.get<FileInfoService>(FileInfoService);
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
});
|
||||
|
||||
// --------------------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ describe('MetaService', () => {
|
|||
],
|
||||
}).compile();
|
||||
|
||||
await app.init();
|
||||
app.enableShutdownHooks();
|
||||
|
||||
metaService = app.get<MetaService>(MetaService, { strict: false });
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@ describe('RelayService', () => {
|
|||
})
|
||||
.compile();
|
||||
|
||||
await app.init();
|
||||
app.enableShutdownHooks();
|
||||
|
||||
relayService = app.get<RelayService>(RelayService);
|
||||
|
|
|
|||
|
|
@ -37,6 +37,8 @@ describe('S3Service', () => {
|
|||
})
|
||||
.overrideProvider(InternalEventService).useClass(FakeInternalEventService)
|
||||
.compile();
|
||||
|
||||
await app.init();
|
||||
app.enableShutdownHooks();
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -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<LimitInfo> {
|
||||
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<string>;
|
||||
|
||||
async function createUser(data: Partial<MiUser> = {}) {
|
||||
const user = await usersRepository
|
||||
.save({
|
||||
...data,
|
||||
});
|
||||
return user;
|
||||
await usersRepository.insert(data);
|
||||
return await usersRepository.findOneByOrFail({ id: data.id });
|
||||
}
|
||||
|
||||
async function createUserProfile(data: Partial<MiUserProfile> = {}) {
|
||||
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<any, any>;
|
||||
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>(SigninWithPasskeyApiService);
|
||||
usersRepository = app.get<UsersRepository>(DI.usersRepository);
|
||||
userProfilesRepository = app.get<UserProfilesRepository>(DI.userProfilesRepository);
|
||||
webAuthnService = app.get<WebAuthnService>(WebAuthnService);
|
||||
idService = app.get<IdService>(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', () => {
|
||||
|
|
|
|||
|
|
@ -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>(ServerService);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue