* Update update.ts

* Update api.ts
This commit is contained in:
Acid Chicken (硫酸鶏) 2019-03-26 22:24:14 +09:00 committed by syuilo
parent 52225d703b
commit 8ce1d4d6a3
2 changed files with 17 additions and 1 deletions

View file

@ -83,7 +83,9 @@ export default define(meta, async (ps, user) => {
if (ps.name) folder.name = ps.name; if (ps.name) folder.name = ps.name;
if (ps.parentId !== undefined) { if (ps.parentId !== undefined) {
if (ps.parentId === null) { if (ps.parentId.equals(folder._id)) {
throw new ApiError(meta.errors.recursiveNesting);
} else if (ps.parentId === null) {
folder.parentId = null; folder.parentId = null;
} else { } else {
// Get parent folder // Get parent folder

View file

@ -1141,6 +1141,20 @@ describe('API', () => {
expect(res).have.status(400); expect(res).have.status(400);
})); }));
it('フォルダが循環するような構造にできない(自身)', async(async () => {
const arisugawa = await signup({ username: 'arisugawa' });
const folderA = (await request('/drive/folders/create', {
name: 'test'
}, arisugawa)).body;
const res = await request('/drive/folders/update', {
folderId: folderA.id,
parentId: folderA.id
}, arisugawa);
expect(res).have.status(400);
}));
it('存在しない親フォルダを設定できない', async(async () => { it('存在しない親フォルダを設定できない', async(async () => {
const alice = await signup({ username: 'alice' }); const alice = await signup({ username: 'alice' });
const folder = (await request('/drive/folders/create', { const folder = (await request('/drive/folders/create', {