f7cloud_client/apps/groupfolders/cypress/e2e/encryption.cy.ts
root 8b6a0139db f7cloud_client
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 22:59:26 +00:00

175 lines
4.6 KiB
TypeScript

/**
* SPDX-FileCopyrightText: 2024 F7cloud GmbH and F7cloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import {
addUserToGroup,
createGroup,
createGroupFolder,
deleteGroupFolder,
disableEncryption,
disableEncryptionModule,
disableGroupfoldersEncryption,
disableHomeStorageEncryption,
enableEncryption,
enableEncryptionModule,
enableGroupfoldersEncryption,
enableHomeStorageEncryption,
enterFolder,
fileOrFolderExists,
PERMISSION_DELETE,
PERMISSION_READ,
PERMISSION_WRITE,
} from './groupfoldersUtils'
import { getRowForFile, moveFile, triggerActionForFile } from './files/filesUtils'
import { randHash } from '../utils'
import type { User } from '@f7cloud/cypress'
export const assertFileContent = (fileName: string, expectedContent: string) => {
cy.intercept({ method: 'GET', times: 1, url: 'remote.php/**' }).as('downloadFile')
getRowForFile(fileName).should('be.visible')
triggerActionForFile(fileName, 'download')
cy.wait('@downloadFile')
.then(({ response }) => expect(response?.body).to.equal(expectedContent))
}
describe('Groupfolders encryption behavior', () => {
let user1: User
let groupFolderId: string
let groupName: string
let groupFolderName: string
before(() => {
enableEncryptionModule()
enableEncryption()
})
beforeEach(() => {
if (groupFolderId) {
deleteGroupFolder(groupFolderId)
}
groupName = `test_group_${randHash()}`
groupFolderName = `test_group_folder_${randHash()}`
cy.createRandomUser()
.then(_user => {
user1 = _user
})
createGroup(groupName)
.then(() => {
addUserToGroup(groupName, user1.userId)
createGroupFolder(groupFolderName, groupName, [PERMISSION_READ, PERMISSION_WRITE, PERMISSION_DELETE])
})
})
after(() => {
// Restore default values
disableGroupfoldersEncryption()
enableHomeStorageEncryption()
disableEncryption()
disableEncryptionModule()
})
it('Move file from encrypted storage to encrypted groupfolder', () => {
enableHomeStorageEncryption()
enableGroupfoldersEncryption()
cy.uploadContent(user1, new Blob(['Content of the file']), 'text/plain', '/file1.txt')
cy.login(user1)
cy.visit('/apps/files')
moveFile('file1.txt', groupFolderName)
enterFolder(groupFolderName)
fileOrFolderExists('file1.txt')
assertFileContent('file1.txt', 'Content of the file')
})
it('Move file from encrypted storage to non encrypted groupfolder', () => {
enableHomeStorageEncryption()
disableGroupfoldersEncryption()
cy.uploadContent(user1, new Blob(['Content of the file']), 'text/plain', '/file1.txt')
cy.login(user1)
cy.visit('/apps/files')
moveFile('file1.txt', groupFolderName)
enterFolder(groupFolderName)
fileOrFolderExists('file1.txt')
assertFileContent('file1.txt', 'Content of the file')
})
it('Move file from non encrypted storage to encrypted groupfolder', () => {
disableHomeStorageEncryption()
enableGroupfoldersEncryption()
cy.uploadContent(user1, new Blob(['Content of the file']), 'text/plain', '/file1.txt')
cy.login(user1)
cy.visit('/apps/files')
moveFile('file1.txt', groupFolderName)
enterFolder(groupFolderName)
fileOrFolderExists('file1.txt')
assertFileContent('file1.txt', 'Content of the file')
})
it('Move file from encrypted groupfolder to encrypted storage', () => {
enableHomeStorageEncryption()
enableGroupfoldersEncryption()
cy.uploadContent(user1, new Blob(['Content of the file']), 'text/plain', `/${groupFolderName}/file1.txt`)
cy.login(user1)
cy.visit('/apps/files')
enterFolder(groupFolderName)
moveFile('file1.txt', '/')
cy.visit('/apps/files')
fileOrFolderExists('file1.txt')
assertFileContent('file1.txt', 'Content of the file')
})
it('Move file from encrypted groupfolder to non encrypted storage', () => {
disableHomeStorageEncryption()
enableGroupfoldersEncryption()
cy.uploadContent(user1, new Blob(['Content of the file']), 'text/plain', `/${groupFolderName}/file1.txt`)
cy.login(user1)
cy.visit('/apps/files')
enterFolder(groupFolderName)
moveFile('file1.txt', '/')
cy.visit('/apps/files')
fileOrFolderExists('file1.txt')
assertFileContent('file1.txt', 'Content of the file')
})
it('Move file from non encrypted groupfolder to encrypted storage', () => {
enableHomeStorageEncryption()
disableGroupfoldersEncryption()
cy.uploadContent(user1, new Blob(['Content of the file']), 'text/plain', `/${groupFolderName}/file1.txt`)
cy.login(user1)
cy.visit('/apps/files')
enterFolder(groupFolderName)
moveFile('file1.txt', '/')
cy.visit('/apps/files')
fileOrFolderExists('file1.txt')
assertFileContent('file1.txt', 'Content of the file')
})
})