diff options
| author | misskey-release-bot[bot] <157398866+misskey-release-bot[bot]@users.noreply.github.com> | 2025-05-07 02:46:42 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-07 02:46:42 +0000 |
| commit | 9ed0d5ccecb53c973cef1e762dd0fae9e04f9a5b (patch) | |
| tree | c41c3ee20b995c3a74a75d4005ab980d217a3727 /packages/backend/test/unit | |
| parent | Merge pull request #15842 from misskey-dev/develop (diff) | |
| parent | Release: 2025.5.0 (diff) | |
| download | misskey-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.ts | 2 | ||||
| -rw-r--r-- | packages/backend/test/unit/server/api/drive/files/create.ts | 102 |
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'); }); }); |