From 3b9ade4d9e4f0fb6f0faadef6fd0d8ef9836342d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Molakvo=C3=A6?= Date: Sun, 23 Apr 2023 10:03:00 +0200 Subject: [PATCH] fix(node): default permissions should be NONE and fix undefined return MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: John Molakvoæ --- __tests__/files/file.spec.ts | 4 ++-- __tests__/files/folder.spec.ts | 4 ++-- __tests__/files/node.spec.ts | 21 +++++++++++++++++++++ lib/files/node.ts | 5 ++++- 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/__tests__/files/file.spec.ts b/__tests__/files/file.spec.ts index 1a7aab92..3f71cd22 100644 --- a/__tests__/files/file.spec.ts +++ b/__tests__/files/file.spec.ts @@ -32,7 +32,7 @@ describe('File creation', () => { expect(file.root).toBe('/files/emma/Photos') expect(file.path).toBe('/picture.jpg') expect(file.isDavRessource).toBe(true) - expect(file.permissions).toBe(Permission.READ) + expect(file.permissions).toBe(Permission.NONE) }) test('Valid dav file with root', () => { @@ -59,7 +59,7 @@ describe('File creation', () => { expect(file.root).toBe('/files/emma') expect(file.path).toBe('/Photos/picture.jpg') expect(file.isDavRessource).toBe(true) - expect(file.permissions).toBe(Permission.READ) + expect(file.permissions).toBe(Permission.NONE) }) test('Valid remote file', () => { diff --git a/__tests__/files/folder.spec.ts b/__tests__/files/folder.spec.ts index 39069f22..0aef6f01 100644 --- a/__tests__/files/folder.spec.ts +++ b/__tests__/files/folder.spec.ts @@ -24,7 +24,7 @@ describe('Folder creation', () => { expect(folder.dirname).toBe('/') expect(folder.root).toBe('/files/emma') expect(folder.isDavRessource).toBe(true) - expect(folder.permissions).toBe(Permission.READ) + expect(folder.permissions).toBe(Permission.NONE) }) test('Valid dav folder with root', () => { @@ -49,7 +49,7 @@ describe('Folder creation', () => { expect(folder.dirname).toBe('/Photos') expect(folder.root).toBe('/files/emma') expect(folder.isDavRessource).toBe(true) - expect(folder.permissions).toBe(Permission.READ) + expect(folder.permissions).toBe(Permission.NONE) }) test('Valid remote folder', () => { diff --git a/__tests__/files/node.spec.ts b/__tests__/files/node.spec.ts index 3c712de0..77f4c5f9 100644 --- a/__tests__/files/node.spec.ts +++ b/__tests__/files/node.spec.ts @@ -1,6 +1,7 @@ import { File } from '../../lib/files/file' import { Folder } from '../../lib/files/folder' import NodeData, { Attribute } from '../../lib/files/nodeData' +import { Permission } from '../../lib/permissions' describe('Node testing', () => { test('Root null fallback', () => { @@ -229,6 +230,26 @@ describe('Dav service detection', () => { }) }) +describe('Permissions handling', () => { + test('Default permissions', () => { + const file = new File({ + source: 'https://cloud.domain.com/remote.php/dav/files/emma/Photos/picture.jpg', + mime: 'image/jpeg', + owner: 'emma', + }) + expect(file.permissions).toBe(0) + }) + + test('Custom permissions', () => { + const file = new File({ + source: 'https://cloud.domain.com/remote.php/dav/files/emma/Photos/picture.jpg', + mime: 'image/jpeg', + owner: 'emma', + permissions: Permission.READ | Permission.UPDATE | Permission.CREATE | Permission.DELETE | Permission.SHARE, + }) + expect(file.permissions).toBe(31) + }) +}) describe('Root and paths detection', () => { test('Unknown root', () => { diff --git a/lib/files/node.ts b/lib/files/node.ts index 3ab97d7f..ebafd918 100644 --- a/lib/files/node.ts +++ b/lib/files/node.ts @@ -148,7 +148,10 @@ export abstract class Node { return Permission.READ } - return this._data.permissions || Permission.READ + // If the permissions are not defined, we have none + return this._data.permissions !== undefined + ? this._data.permissions + : Permission.NONE } /**