diff options
author | Tobias Kaminsky <tobiasKaminsky@users.noreply.github.com> | 2017-12-06 16:19:17 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-06 16:19:17 +0100 |
commit | 430f60db21bbda895825bdb37632b5d68dff1f6e (patch) | |
tree | cf1fac2ea8bbbfaeeaf17a575657a7bbb7777e5b /apps | |
parent | c32cb6b4b79baeb86f5702d20db0d4b6ed874d86 (diff) | |
parent | 7bc28f14de8c3d77ec611a4ffd8ad48dc6093cea (diff) | |
download | nextcloud-server-430f60db21bbda895825bdb37632b5d68dff1f6e.tar.gz nextcloud-server-430f60db21bbda895825bdb37632b5d68dff1f6e.zip |
Merge pull request #6670 from nextcloud/handle-encryption-state-in-web-interface
Handle encryption state in web interface
Diffstat (limited to 'apps')
-rw-r--r-- | apps/files/js/filelist.js | 15 | ||||
-rw-r--r-- | apps/files/tests/js/filelistSpec.js | 64 |
2 files changed, 70 insertions, 9 deletions
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index 10efa54496a..fa9819b78b5 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -950,7 +950,8 @@ type: $el.attr('data-type'), etag: $el.attr('data-etag'), permissions: parseInt($el.attr('data-permissions'), 10), - hasPreview: $el.attr('data-has-preview') === 'true' + hasPreview: $el.attr('data-has-preview') === 'true', + isEncrypted: $el.attr('data-e2eencrypted') === 'true' }; var size = $el.attr('data-size'); if (size) { @@ -1152,7 +1153,10 @@ if (type === 'dir') { mime = mime || 'httpd/unix-directory'; - if (fileData.mountType && fileData.mountType.indexOf('external') === 0) { + if (fileData.isEncrypted) { + icon = OC.MimeType.getIconUrl('dir-encrypted'); + dataIcon = icon; + } else if (fileData.mountType && fileData.mountType.indexOf('external') === 0) { icon = OC.MimeType.getIconUrl('dir-external'); dataIcon = icon; } @@ -1173,7 +1177,8 @@ "data-mtime": mtime, "data-etag": fileData.etag, "data-permissions": permissions, - "data-has-preview": fileData.hasPreview !== false + "data-has-preview": fileData.hasPreview !== false, + "data-e2eencrypted": fileData.isEncrypted === true }); if (dataIcon) { @@ -1444,7 +1449,9 @@ path = fileData.path || this.getCurrentDirectory(), permissions = parseInt(fileData.permissions, 10) || 0; - if (fileData.isShareMountPoint) { + var isEndToEndEncrypted = (type === 'dir' && fileData.isEncrypted); + + if (!isEndToEndEncrypted && fileData.isShareMountPoint) { permissions = permissions | OC.PERMISSION_UPDATE; } diff --git a/apps/files/tests/js/filelistSpec.js b/apps/files/tests/js/filelistSpec.js index 64fc6876493..83926b24fee 100644 --- a/apps/files/tests/js/filelistSpec.js +++ b/apps/files/tests/js/filelistSpec.js @@ -217,6 +217,7 @@ describe('OCA.Files.FileList tests', function() { expect($tr.attr('data-permissions')).toEqual('31'); expect($tr.attr('data-mime')).toEqual('text/plain'); expect($tr.attr('data-mtime')).toEqual('123456'); + expect($tr.attr('data-e2eencrypted')).toEqual('false'); expect($tr.find('a.name').attr('href')) .toEqual(OC.webroot + '/remote.php/webdav/subdir/testName.txt'); expect($tr.find('.nametext').text().trim()).toEqual('testName.txt'); @@ -246,6 +247,7 @@ describe('OCA.Files.FileList tests', function() { expect($tr.attr('data-permissions')).toEqual('31'); expect($tr.attr('data-mime')).toEqual('httpd/unix-directory'); expect($tr.attr('data-mtime')).toEqual('123456'); + expect($tr.attr('data-e2eencrypted')).toEqual('false'); expect($tr.find('.filesize').text()).toEqual('1 KB'); expect($tr.find('.date').text()).not.toEqual('?'); @@ -271,6 +273,7 @@ describe('OCA.Files.FileList tests', function() { expect($tr.attr('data-permissions')).toEqual('31'); expect($tr.attr('data-mime')).toBeUndefined(); expect($tr.attr('data-mtime')).toEqual('123456'); + expect($tr.attr('data-e2eencrypted')).toEqual('false'); expect($tr.find('.filesize').text()).toEqual('Pending'); expect($tr.find('.date').text()).not.toEqual('?'); @@ -293,10 +296,20 @@ describe('OCA.Files.FileList tests', function() { expect($tr.attr('data-permissions')).toEqual('31'); expect($tr.attr('data-mime')).toEqual('httpd/unix-directory'); expect($tr.attr('data-mtime')).toEqual('123456'); + expect($tr.attr('data-e2eencrypted')).toEqual('false'); expect($tr.find('.filesize').text()).toEqual('Pending'); expect($tr.find('.date').text()).not.toEqual('?'); }); + it('generates dir element with true e2eencrypted attribute when calling add() with minimal data including isEncrypted', function() { + var fileData = { + type: 'dir', + name: 'testFolder', + isEncrypted: true + }; + var $tr = fileList.add(fileData); + expect($tr.attr('data-e2eencrypted')).toEqual('true'); + }); it('generates file element with no permissions when permissions are explicitly none', function() { var fileData = { type: 'dir', @@ -1442,6 +1455,32 @@ describe('OCA.Files.FileList tests', function() { expect(OC.TestUtil.getImageUrl($td.find('.thumbnail'))).toEqual(OC.webroot + '/core/img/filetypes/folder.svg'); expect(previewLoadStub.notCalled).toEqual(true); }); + it('render encrypted folder icon for encrypted root', function() { + var fileData = { + type: 'dir', + mimetype: 'httpd/unix-directory', + name: 'test dir', + isEncrypted: true + }; + var $tr = fileList.add(fileData); + var $td = $tr.find('td.filename'); + expect(OC.TestUtil.getImageUrl($td.find('.thumbnail'))).toEqual(OC.webroot + '/core/img/filetypes/folder-encrypted.svg'); + expect(previewLoadStub.notCalled).toEqual(true); + }); + it('render encrypted folder icon for encrypted subdir', function() { + var fileData = { + type: 'dir', + mimetype: 'httpd/unix-directory', + name: 'test dir', + isEncrypted: true + }; + var $tr = fileList.add(fileData); + var $td = $tr.find('td.filename'); + expect(OC.TestUtil.getImageUrl($td.find('.thumbnail'))).toEqual(OC.webroot + '/core/img/filetypes/folder-encrypted.svg'); + expect(previewLoadStub.notCalled).toEqual(true); + // default icon override + expect($tr.attr('data-icon')).toEqual(OC.webroot + '/core/img/filetypes/folder-encrypted.svg'); + }); it('render external storage icon for external storage root', function() { var fileData = { type: 'dir', @@ -2086,7 +2125,8 @@ describe('OCA.Files.FileList tests', function() { size: 12, etag: 'abc', permissions: OC.PERMISSION_ALL, - hasPreview: true + hasPreview: true, + isEncrypted: false }); expect(files[1]).toEqual({ id: 3, @@ -2097,7 +2137,8 @@ describe('OCA.Files.FileList tests', function() { size: 58009, etag: '123', permissions: OC.PERMISSION_ALL, - hasPreview: true + hasPreview: true, + isEncrypted: false }); expect(files[2]).toEqual({ id: 4, @@ -2108,7 +2149,8 @@ describe('OCA.Files.FileList tests', function() { size: 250, etag: '456', permissions: OC.PERMISSION_ALL, - hasPreview: true + hasPreview: true, + isEncrypted: false }); expect(files[0].id).toEqual(1); expect(files[0].name).toEqual('One.txt'); @@ -2130,7 +2172,8 @@ describe('OCA.Files.FileList tests', function() { size: 12, etag: 'abc', permissions: OC.PERMISSION_ALL, - hasPreview: true + hasPreview: true, + isEncrypted: false }); expect(files[1]).toEqual({ id: 4, @@ -2141,7 +2184,8 @@ describe('OCA.Files.FileList tests', function() { size: 250, etag: '456', permissions: OC.PERMISSION_ALL, - hasPreview: true + hasPreview: true, + isEncrypted: false }); }); describe('Download', function() { @@ -3231,6 +3275,16 @@ describe('OCA.Files.FileList tests', function() { expect(fileInfo.mimetype).toEqual('text/plain'); expect(fileInfo.type).toEqual('file'); expect(fileInfo.path).not.toBeDefined(); + expect(fileInfo.isEncrypted).toEqual(false); + }); + it('sets isEncrypted attribute if data includes true e2eencrypted', function() { + testFiles[3].isEncrypted = true; + + fileList.setFiles(testFiles); + $tr = fileList.findFileEl('somedir'); + + var fileInfo = fileList.elementToFile($tr); + expect(fileInfo.isEncrypted).toEqual(true); }); it('adds path attribute if available', function() { $tr.attr('data-path', '/subdir'); |