summaryrefslogtreecommitdiff
path: root/packages/backend/test/unit
diff options
context:
space:
mode:
authormisskey-release-bot[bot] <157398866+misskey-release-bot[bot]@users.noreply.github.com>2025-05-07 02:46:42 +0000
committerGitHub <noreply@github.com>2025-05-07 02:46:42 +0000
commit9ed0d5ccecb53c973cef1e762dd0fae9e04f9a5b (patch)
treec41c3ee20b995c3a74a75d4005ab980d217a3727 /packages/backend/test/unit
parentMerge pull request #15842 from misskey-dev/develop (diff)
parentRelease: 2025.5.0 (diff)
downloadmisskey-9ed0d5ccecb53c973cef1e762dd0fae9e04f9a5b.tar.gz
misskey-9ed0d5ccecb53c973cef1e762dd0fae9e04f9a5b.tar.bz2
misskey-9ed0d5ccecb53c973cef1e762dd0fae9e04f9a5b.zip
Merge pull request #15933 from misskey-dev/develop
Release: 2025.5.0
Diffstat (limited to 'packages/backend/test/unit')
-rw-r--r--packages/backend/test/unit/entities/UserEntityService.ts2
-rw-r--r--packages/backend/test/unit/server/api/drive/files/create.ts102
2 files changed, 80 insertions, 24 deletions
diff --git a/packages/backend/test/unit/entities/UserEntityService.ts b/packages/backend/test/unit/entities/UserEntityService.ts
index ce3f931bb0..ca6a639be8 100644
--- a/packages/backend/test/unit/entities/UserEntityService.ts
+++ b/packages/backend/test/unit/entities/UserEntityService.ts
@@ -232,7 +232,7 @@ describe('UserEntityService', () => {
});
test('MeDetailed', async() => {
- const achievements = [{ name: 'achievement', unlockedAt: new Date().getTime() }];
+ const achievements = [{ name: 'iLoveMisskey' as const, unlockedAt: new Date().getTime() }];
const me = await createUser({}, {
birthday: '2000-01-01',
achievements: achievements,
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 b98892fa03..9b38f4d744 100644
--- a/packages/backend/test/unit/server/api/drive/files/create.ts
+++ b/packages/backend/test/unit/server/api/drive/files/create.ts
@@ -3,29 +3,31 @@
* SPDX-License-Identifier: AGPL-3.0-only
*/
-import { S3Client } from '@aws-sdk/client-s3';
import { Test, TestingModule } from '@nestjs/testing';
-import { mockClient } from 'aws-sdk-client-mock';
import { FastifyInstance } from 'fastify';
import request from 'supertest';
+import { randomString } from '../../../../../utils.js';
import { CoreModule } from '@/core/CoreModule.js';
import { RoleService } from '@/core/RoleService.js';
import { DI } from '@/di-symbols.js';
import { GlobalModule } from '@/GlobalModule.js';
-import { MiRole, UserProfilesRepository, UsersRepository } from '@/models/_.js';
+import { DriveFoldersRepository, MiDriveFolder, MiRole, UserProfilesRepository, UsersRepository } from '@/models/_.js';
import { MiUser } from '@/models/User.js';
import { ServerModule } from '@/server/ServerModule.js';
import { ServerService } from '@/server/ServerService.js';
+import { IdService } from '@/core/IdService.js';
describe('/drive/files/create', () => {
let module: TestingModule;
let server: FastifyInstance;
- const s3Mock = mockClient(S3Client);
let roleService: RoleService;
+ let idService: IdService;
let root: MiUser;
let role_tinyAttachment: MiRole;
+ let folder: MiDriveFolder;
+
beforeAll(async () => {
module = await Test.createTestingModule({
imports: [GlobalModule, CoreModule, ServerModule],
@@ -33,21 +35,34 @@ describe('/drive/files/create', () => {
module.enableShutdownHooks();
const serverService = module.get<ServerService>(ServerService);
- server = await serverService.launch();
+ await serverService.launch();
+ server = serverService.fastify;
+
+ idService = module.get(IdService);
const usersRepository = module.get<UsersRepository>(DI.usersRepository);
+ await usersRepository.delete({});
root = await usersRepository.insert({
- id: 'root',
+ id: idService.gen(),
username: 'root',
usernameLower: 'root',
token: '1234567890123456',
}).then(x => usersRepository.findOneByOrFail(x.identifiers[0]));
const userProfilesRepository = module.get<UserProfilesRepository>(DI.userProfilesRepository);
+ await userProfilesRepository.delete({});
await userProfilesRepository.insert({
userId: root.id,
});
+ const driveFoldersRepository = module.get<DriveFoldersRepository>(DI.driveFoldersRepository);
+ folder = await driveFoldersRepository.insertOne({
+ id: idService.gen(),
+ name: 'root-folder',
+ parentId: null,
+ userId: root.id,
+ });
+
roleService = module.get<RoleService>(RoleService);
role_tinyAttachment = await roleService.create({
name: 'test-role001',
@@ -65,8 +80,8 @@ describe('/drive/files/create', () => {
});
beforeEach(async () => {
- s3Mock.reset();
- await roleService.unassign(root.id, role_tinyAttachment.id).catch(() => {});
+ await roleService.unassign(root.id, role_tinyAttachment.id).catch(() => {
+ });
});
afterAll(async () => {
@@ -74,35 +89,76 @@ describe('/drive/files/create', () => {
await module.close();
});
- test('200 ok', async () => {
- const result = await request(server.server)
+ async function postFile(props: {
+ name: string,
+ comment: string,
+ isSensitive: boolean,
+ force: boolean,
+ fileContent: Buffer | string,
+ }) {
+ const { name, comment, isSensitive, force, fileContent } = props;
+
+ return await request(server.server)
.post('/api/drive/files/create')
.set('Content-Type', 'multipart/form-data')
- .set('Authorization', `Bearer ${root.token}`)
- .attach('file', Buffer.from('a'.repeat(1024 * 1024)));
+ .attach('file', fileContent)
+ .field('name', name)
+ .field('comment', comment)
+ .field('isSensitive', isSensitive)
+ .field('force', force)
+ .field('folderId', folder.id)
+ .field('i', root.token ?? '');
+ }
+
+ test('200 ok', async () => {
+ const name = randomString();
+ const comment = randomString();
+ const result = await postFile({
+ name: name,
+ comment: comment,
+ isSensitive: true,
+ force: true,
+ fileContent: Buffer.from('a'.repeat(1000 * 1000)),
+ });
expect(result.statusCode).toBe(200);
+ expect(result.body.name).toBe(name + '.unknown');
+ expect(result.body.comment).toBe(comment);
+ expect(result.body.isSensitive).toBe(true);
+ expect(result.body.folderId).toBe(folder.id);
});
test('200 ok(with role)', async () => {
await roleService.assign(root.id, role_tinyAttachment.id);
- const result = await request(server.server)
- .post('/api/drive/files/create')
- .set('Content-Type', 'multipart/form-data')
- .set('Authorization', `Bearer ${root.token}`)
- .attach('file', Buffer.from('a'.repeat(10)));
+ 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(200);
+ expect(result.body.name).toBe(name + '.unknown');
+ expect(result.body.comment).toBe(comment);
+ expect(result.body.isSensitive).toBe(true);
+ expect(result.body.folderId).toBe(folder.id);
});
test('413 too large', async () => {
await roleService.assign(root.id, role_tinyAttachment.id);
- const result = await request(server.server)
- .post('/api/drive/files/create')
- .set('Content-Type', 'multipart/form-data')
- .set('Authorization', `Bearer ${root.token}`)
- .attach('file', Buffer.from('a'.repeat(11)));
+ const name = randomString();
+ const comment = randomString();
+ const result = await postFile({
+ name: name,
+ comment: comment,
+ isSensitive: true,
+ force: true,
+ fileContent: Buffer.from('a'.repeat(11)),
+ });
expect(result.statusCode).toBe(413);
- expect(result.body.error.code).toBe('FILE_SIZE_TOO_LARGE');
+ expect(result.body.error.code).toBe('MAX_FILE_SIZE_EXCEEDED');
});
});