summaryrefslogtreecommitdiff
path: root/packages/backend/test/unit
diff options
context:
space:
mode:
authorsyuilo <4439005+syuilo@users.noreply.github.com>2025-05-29 12:41:27 +0900
committerGitHub <noreply@github.com>2025-05-29 12:41:27 +0900
commite4b7a1f4e14a35055bb67dc198614f04f69e2ff9 (patch)
treeaeba520f07212ed065b91efe5d63317b2ad59c27 /packages/backend/test/unit
parentBump version to 2025.5.1-beta.3 (diff)
downloadmisskey-e4b7a1f4e14a35055bb67dc198614f04f69e2ff9.tar.gz
misskey-e4b7a1f4e14a35055bb67dc198614f04f69e2ff9.tar.bz2
misskey-e4b7a1f4e14a35055bb67dc198614f04f69e2ff9.zip
fix tests
* test * Update activitypub.ts * Update activitypub.ts * Update create.ts * Update create.ts * Update endpoints.ts
Diffstat (limited to 'packages/backend/test/unit')
-rw-r--r--packages/backend/test/unit/activitypub.ts22
-rw-r--r--packages/backend/test/unit/server/api/drive/files/create.ts58
2 files changed, 72 insertions, 8 deletions
diff --git a/packages/backend/test/unit/activitypub.ts b/packages/backend/test/unit/activitypub.ts
index 9df947982b..c6e09bdda2 100644
--- a/packages/backend/test/unit/activitypub.ts
+++ b/packages/backend/test/unit/activitypub.ts
@@ -6,9 +6,15 @@
process.env.NODE_ENV = 'test';
import * as assert from 'assert';
+import * as fs from 'node:fs';
+import { fileURLToPath } from 'node:url';
+import { dirname } from 'node:path';
import { Test } from '@nestjs/testing';
import { jest } from '@jest/globals';
+import { MockResolver } from '../misc/mock-resolver.js';
+import type { IActor, IApDocument, ICollection, IObject, IPost } from '@/core/activitypub/type.js';
+import type { MiRemoteUser } from '@/models/User.js';
import { ApImageService } from '@/core/activitypub/models/ApImageService.js';
import { ApNoteService } from '@/core/activitypub/models/ApNoteService.js';
import { ApPersonService } from '@/core/activitypub/models/ApPersonService.js';
@@ -19,14 +25,14 @@ import { GlobalModule } from '@/GlobalModule.js';
import { CoreModule } from '@/core/CoreModule.js';
import { FederatedInstanceService } from '@/core/FederatedInstanceService.js';
import { LoggerService } from '@/core/LoggerService.js';
-import type { IActor, IApDocument, ICollection, IObject, IPost } from '@/core/activitypub/type.js';
import { MiMeta, MiNote, UserProfilesRepository } from '@/models/_.js';
import { DI } from '@/di-symbols.js';
import { secureRndstr } from '@/misc/secure-rndstr.js';
import { DownloadService } from '@/core/DownloadService.js';
-import type { MiRemoteUser } from '@/models/User.js';
import { genAidx } from '@/misc/id/aidx.js';
-import { MockResolver } from '../misc/mock-resolver.js';
+
+const _filename = fileURLToPath(import.meta.url);
+const _dirname = dirname(_filename);
const host = 'https://host1.test';
@@ -120,7 +126,13 @@ describe('ActivityPub', () => {
imports: [GlobalModule, CoreModule],
})
.overrideProvider(DownloadService).useValue({
- async downloadUrl(): Promise<{ filename: string }> {
+ async downloadUrl(url: string, path: string): Promise<{ filename: string }> {
+ if (url.endsWith('.png')) {
+ fs.copyFileSync(
+ _dirname + '/../resources/hw.png',
+ path,
+ );
+ }
return {
filename: 'dummy.tmp',
};
@@ -440,7 +452,7 @@ describe('ActivityPub', () => {
});
});
- describe('JSON-LD', () =>{
+ describe('JSON-LD', () => {
test('Compaction', async () => {
const jsonLd = jsonLdService.use();
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 723e399430..e86b818ca5 100644
--- a/packages/backend/test/unit/server/api/drive/files/create.ts
+++ b/packages/backend/test/unit/server/api/drive/files/create.ts
@@ -17,6 +17,8 @@ import { ServerModule } from '@/server/ServerModule.js';
import { ServerService } from '@/server/ServerService.js';
import { IdService } from '@/core/IdService.js';
+// TODO: uploadableFileTypes で許可されていないファイルが弾かれるかのテスト
+
describe('/drive/files/create', () => {
let module: TestingModule;
let server: FastifyInstance;
@@ -25,6 +27,8 @@ describe('/drive/files/create', () => {
let root: MiUser;
let role_tinyAttachment: MiRole;
+ let role_imageOnly: MiRole;
+ let role_allowAllTypes: MiRole;
let folder: MiDriveFolder;
@@ -64,11 +68,35 @@ describe('/drive/files/create', () => {
});
roleService = module.get<RoleService>(RoleService);
- role_tinyAttachment = await roleService.create({
+ role_imageOnly = await roleService.create({
name: 'test-role001',
description: 'Test role001 description',
target: 'manual',
policies: {
+ uploadableFileTypes: {
+ useDefault: false,
+ priority: 1,
+ value: ['image/png'],
+ },
+ },
+ });
+ role_allowAllTypes = await roleService.create({
+ name: 'test-role002',
+ description: 'Test role002 description',
+ target: 'manual',
+ policies: {
+ uploadableFileTypes: {
+ useDefault: false,
+ priority: 1,
+ value: ['*/*'],
+ },
+ },
+ });
+ role_tinyAttachment = await roleService.create({
+ name: 'test-role003',
+ description: 'Test role003 description',
+ target: 'manual',
+ policies: {
maxFileSizeMb: {
useDefault: false,
priority: 1,
@@ -82,6 +110,10 @@ describe('/drive/files/create', () => {
beforeEach(async () => {
await roleService.unassign(root.id, role_tinyAttachment.id).catch(() => {
});
+ await roleService.unassign(root.id, role_imageOnly.id).catch(() => {
+ });
+ await roleService.unassign(root.id, role_allowAllTypes.id).catch(() => {
+ });
});
afterAll(async () => {
@@ -110,7 +142,9 @@ describe('/drive/files/create', () => {
.field('i', root.token ?? '');
}
- test('200 ok', async () => {
+ test('200 ok (all types allowed)', async () => {
+ await roleService.assign(root.id, role_allowAllTypes.id);
+
const name = randomString();
const comment = randomString();
const result = await postFile({
@@ -127,7 +161,24 @@ describe('/drive/files/create', () => {
expect(result.body.folderId).toBe(folder.id);
});
- test('200 ok(with role)', async () => {
+ test('400 when not allowed type', async () => {
+ await roleService.assign(root.id, role_imageOnly.id);
+
+ const name = randomString();
+ const comment = randomString();
+ const result = await postFile({
+ name: name,
+ comment: comment,
+ isSensitive: true,
+ force: true,
+ fileContent: Buffer.from('a'.repeat(10)),
+ });
+ expect(result.statusCode).toBe(400);
+ expect(result.body.error.code).toBe('UNALLOWED_FILE_TYPE');
+ });
+
+ test('200 ok (with size limited role)', async () => {
+ await roleService.assign(root.id, role_allowAllTypes.id);
await roleService.assign(root.id, role_tinyAttachment.id);
const name = randomString();
@@ -147,6 +198,7 @@ describe('/drive/files/create', () => {
});
test('413 too large', async () => {
+ await roleService.assign(root.id, role_allowAllTypes.id);
await roleService.assign(root.id, role_tinyAttachment.id);
const name = randomString();