fix tests

This commit is contained in:
おさむのひと 2025-02-22 19:38:03 +09:00
parent 380e078210
commit 9018b7cebe
3 changed files with 23 additions and 25 deletions

View File

@ -101,7 +101,6 @@ export const DEFAULT_POLICIES: RolePolicies = {
@Injectable() @Injectable()
export class RoleService implements OnApplicationShutdown, OnModuleInit { export class RoleService implements OnApplicationShutdown, OnModuleInit {
private rootUserIdCache: MemorySingleCache<MiUser['id']>;
private rolesCache: MemorySingleCache<MiRole[]>; private rolesCache: MemorySingleCache<MiRole[]>;
private roleAssignmentByUserIdCache: MemoryKVCache<MiRoleAssignment[]>; private roleAssignmentByUserIdCache: MemoryKVCache<MiRoleAssignment[]>;
private notificationService: NotificationService; private notificationService: NotificationService;
@ -137,7 +136,6 @@ export class RoleService implements OnApplicationShutdown, OnModuleInit {
private moderationLogService: ModerationLogService, private moderationLogService: ModerationLogService,
private fanoutTimelineService: FanoutTimelineService, private fanoutTimelineService: FanoutTimelineService,
) { ) {
this.rootUserIdCache = new MemorySingleCache<MiUser['id']>(1000 * 60 * 60 * 24 * 7); // 1week. rootユーザのIDは不変なので長めに
this.rolesCache = new MemorySingleCache<MiRole[]>(1000 * 60 * 60); // 1h this.rolesCache = new MemorySingleCache<MiRole[]>(1000 * 60 * 60); // 1h
this.roleAssignmentByUserIdCache = new MemoryKVCache<MiRoleAssignment[]>(1000 * 60 * 5); // 5m this.roleAssignmentByUserIdCache = new MemoryKVCache<MiRoleAssignment[]>(1000 * 60 * 5); // 5m

View File

@ -6,19 +6,17 @@
process.env.NODE_ENV = 'test'; process.env.NODE_ENV = 'test';
import { jest } from '@jest/globals'; import { jest } from '@jest/globals';
import { ModuleMocker } from 'jest-mock';
import { Test } from '@nestjs/testing'; import { Test } from '@nestjs/testing';
import { GlobalModule } from '@/GlobalModule.js'; import { ModuleMocker } from 'jest-mock';
import { RelayService } from '@/core/RelayService.js';
import { ApRendererService } from '@/core/activitypub/ApRendererService.js';
import { CreateSystemUserService } from '@/core/CreateSystemUserService.js';
import { UserEntityService } from '@/core/entities/UserEntityService.js';
import { QueueService } from '@/core/QueueService.js';
import { IdService } from '@/core/IdService.js';
import type { RelaysRepository } from '@/models/_.js';
import { DI } from '@/di-symbols.js';
import type { TestingModule } from '@nestjs/testing'; import type { TestingModule } from '@nestjs/testing';
import type { MockFunctionMetadata } from 'jest-mock'; import type { MockFunctionMetadata } from 'jest-mock';
import { ApRendererService } from '@/core/activitypub/ApRendererService.js';
import { UserEntityService } from '@/core/entities/UserEntityService.js';
import { IdService } from '@/core/IdService.js';
import { QueueService } from '@/core/QueueService.js';
import { RelayService } from '@/core/RelayService.js';
import { SystemAccountService } from '@/core/SystemAccountService.js';
import { GlobalModule } from '@/GlobalModule.js';
const moduleMocker = new ModuleMocker(global); const moduleMocker = new ModuleMocker(global);
@ -26,8 +24,6 @@ describe('RelayService', () => {
let app: TestingModule; let app: TestingModule;
let relayService: RelayService; let relayService: RelayService;
let queueService: jest.Mocked<QueueService>; let queueService: jest.Mocked<QueueService>;
let relaysRepository: RelaysRepository;
let userEntityService: UserEntityService;
beforeAll(async () => { beforeAll(async () => {
app = await Test.createTestingModule({ app = await Test.createTestingModule({
@ -36,10 +32,10 @@ describe('RelayService', () => {
], ],
providers: [ providers: [
IdService, IdService,
CreateSystemUserService,
ApRendererService, ApRendererService,
RelayService, RelayService,
UserEntityService, UserEntityService,
SystemAccountService,
], ],
}) })
.useMocker((token) => { .useMocker((token) => {
@ -58,8 +54,6 @@ describe('RelayService', () => {
relayService = app.get<RelayService>(RelayService); relayService = app.get<RelayService>(RelayService);
queueService = app.get<QueueService>(QueueService) as jest.Mocked<QueueService>; queueService = app.get<QueueService>(QueueService) as jest.Mocked<QueueService>;
relaysRepository = app.get<RelaysRepository>(DI.relaysRepository);
userEntityService = app.get<UserEntityService>(UserEntityService);
}); });
afterAll(async () => { afterAll(async () => {

View File

@ -57,6 +57,12 @@ describe('RoleService', () => {
return await usersRepository.findOneByOrFail(x.identifiers[0]); return await usersRepository.findOneByOrFail(x.identifiers[0]);
} }
async function createRoot(data: Partial<MiUser> = {}) {
const user = await createUser(data);
meta.rootUserId = user.id;
return user;
}
async function createRole(data: Partial<MiRole> = {}) { async function createRole(data: Partial<MiRole> = {}) {
const x = await rolesRepository.insert({ const x = await rolesRepository.insert({
id: genAidx(Date.now()), id: genAidx(Date.now()),
@ -279,7 +285,7 @@ describe('RoleService', () => {
describe('getModeratorIds', () => { describe('getModeratorIds', () => {
test('includeAdmins = false, includeRoot = false, excludeExpire = false', async () => { test('includeAdmins = false, includeRoot = false, excludeExpire = false', async () => {
const [adminUser1, adminUser2, modeUser1, modeUser2, normalUser1, normalUser2, rootUser] = await Promise.all([ const [adminUser1, adminUser2, modeUser1, modeUser2, normalUser1, normalUser2, rootUser] = await Promise.all([
createUser(), createUser(), createUser(), createUser(), createUser(), createUser(), createUser({ isRoot: true }), createUser(), createUser(), createUser(), createUser(), createUser(), createUser(), createRoot(),
]); ]);
const role1 = await createRole({ name: 'admin', isAdministrator: true }); const role1 = await createRole({ name: 'admin', isAdministrator: true });
@ -305,7 +311,7 @@ describe('RoleService', () => {
test('includeAdmins = false, includeRoot = false, excludeExpire = true', async () => { test('includeAdmins = false, includeRoot = false, excludeExpire = true', async () => {
const [adminUser1, adminUser2, modeUser1, modeUser2, normalUser1, normalUser2, rootUser] = await Promise.all([ const [adminUser1, adminUser2, modeUser1, modeUser2, normalUser1, normalUser2, rootUser] = await Promise.all([
createUser(), createUser(), createUser(), createUser(), createUser(), createUser(), createUser({ isRoot: true }), createUser(), createUser(), createUser(), createUser(), createUser(), createUser(), createRoot(),
]); ]);
const role1 = await createRole({ name: 'admin', isAdministrator: true }); const role1 = await createRole({ name: 'admin', isAdministrator: true });
@ -331,7 +337,7 @@ describe('RoleService', () => {
test('includeAdmins = true, includeRoot = false, excludeExpire = false', async () => { test('includeAdmins = true, includeRoot = false, excludeExpire = false', async () => {
const [adminUser1, adminUser2, modeUser1, modeUser2, normalUser1, normalUser2, rootUser] = await Promise.all([ const [adminUser1, adminUser2, modeUser1, modeUser2, normalUser1, normalUser2, rootUser] = await Promise.all([
createUser(), createUser(), createUser(), createUser(), createUser(), createUser(), createUser({ isRoot: true }), createUser(), createUser(), createUser(), createUser(), createUser(), createUser(), createRoot(),
]); ]);
const role1 = await createRole({ name: 'admin', isAdministrator: true }); const role1 = await createRole({ name: 'admin', isAdministrator: true });
@ -357,7 +363,7 @@ describe('RoleService', () => {
test('includeAdmins = true, includeRoot = false, excludeExpire = true', async () => { test('includeAdmins = true, includeRoot = false, excludeExpire = true', async () => {
const [adminUser1, adminUser2, modeUser1, modeUser2, normalUser1, normalUser2, rootUser] = await Promise.all([ const [adminUser1, adminUser2, modeUser1, modeUser2, normalUser1, normalUser2, rootUser] = await Promise.all([
createUser(), createUser(), createUser(), createUser(), createUser(), createUser(), createUser({ isRoot: true }), createUser(), createUser(), createUser(), createUser(), createUser(), createUser(), createRoot(),
]); ]);
const role1 = await createRole({ name: 'admin', isAdministrator: true }); const role1 = await createRole({ name: 'admin', isAdministrator: true });
@ -383,7 +389,7 @@ describe('RoleService', () => {
test('includeAdmins = false, includeRoot = true, excludeExpire = false', async () => { test('includeAdmins = false, includeRoot = true, excludeExpire = false', async () => {
const [adminUser1, adminUser2, modeUser1, modeUser2, normalUser1, normalUser2, rootUser] = await Promise.all([ const [adminUser1, adminUser2, modeUser1, modeUser2, normalUser1, normalUser2, rootUser] = await Promise.all([
createUser(), createUser(), createUser(), createUser(), createUser(), createUser(), createUser({ isRoot: true }), createUser(), createUser(), createUser(), createUser(), createUser(), createUser(), createRoot(),
]); ]);
const role1 = await createRole({ name: 'admin', isAdministrator: true }); const role1 = await createRole({ name: 'admin', isAdministrator: true });
@ -409,7 +415,7 @@ describe('RoleService', () => {
test('root has moderator role', async () => { test('root has moderator role', async () => {
const [adminUser1, modeUser1, normalUser1, rootUser] = await Promise.all([ const [adminUser1, modeUser1, normalUser1, rootUser] = await Promise.all([
createUser(), createUser(), createUser(), createUser({ isRoot: true }), createUser(), createUser(), createUser(), createRoot(),
]); ]);
const role1 = await createRole({ name: 'admin', isAdministrator: true }); const role1 = await createRole({ name: 'admin', isAdministrator: true });
@ -433,7 +439,7 @@ describe('RoleService', () => {
test('root has administrator role', async () => { test('root has administrator role', async () => {
const [adminUser1, modeUser1, normalUser1, rootUser] = await Promise.all([ const [adminUser1, modeUser1, normalUser1, rootUser] = await Promise.all([
createUser(), createUser(), createUser(), createUser({ isRoot: true }), createUser(), createUser(), createUser(), createRoot(),
]); ]);
const role1 = await createRole({ name: 'admin', isAdministrator: true }); const role1 = await createRole({ name: 'admin', isAdministrator: true });
@ -457,7 +463,7 @@ describe('RoleService', () => {
test('root has moderator role(expire)', async () => { test('root has moderator role(expire)', async () => {
const [adminUser1, modeUser1, normalUser1, rootUser] = await Promise.all([ const [adminUser1, modeUser1, normalUser1, rootUser] = await Promise.all([
createUser(), createUser(), createUser(), createUser({ isRoot: true }), createUser(), createUser(), createUser(), createRoot(),
]); ]);
const role1 = await createRole({ name: 'admin', isAdministrator: true }); const role1 = await createRole({ name: 'admin', isAdministrator: true });