aboutsummaryrefslogtreecommitdiffstats
path: root/cypress/e2e/files_sharing/files-download.cy.ts
diff options
context:
space:
mode:
Diffstat (limited to 'cypress/e2e/files_sharing/files-download.cy.ts')
-rw-r--r--cypress/e2e/files_sharing/files-download.cy.ts102
1 files changed, 102 insertions, 0 deletions
diff --git a/cypress/e2e/files_sharing/files-download.cy.ts b/cypress/e2e/files_sharing/files-download.cy.ts
new file mode 100644
index 00000000000..97ea91b7647
--- /dev/null
+++ b/cypress/e2e/files_sharing/files-download.cy.ts
@@ -0,0 +1,102 @@
+/**
+ * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+import type { User } from '@nextcloud/cypress'
+import { createShare } from './FilesSharingUtils.ts'
+import {
+ getActionButtonForFile,
+ getActionEntryForFile,
+ getRowForFile,
+} from '../files/FilesUtils.ts'
+
+describe('files_sharing: Download forbidden', { testIsolation: true }, () => {
+ let user: User
+ let sharee: User
+
+ beforeEach(() => {
+ cy.runOccCommand('config:app:set --value yes core shareapi_allow_view_without_download')
+ cy.createRandomUser().then(($user) => {
+ user = $user
+ })
+ cy.createRandomUser().then(($user) => {
+ sharee = $user
+ })
+ })
+
+ after(() => {
+ cy.runOccCommand('config:app:delete core shareapi_allow_view_without_download')
+ })
+
+ it('cannot download a folder if disabled', () => {
+ // share the folder
+ cy.mkdir(user, '/folder')
+ cy.login(user)
+ cy.visit('/apps/files')
+ createShare('folder', sharee.userId, { read: true, download: false })
+ cy.logout()
+
+ // Now for the sharee
+ cy.login(sharee)
+
+ // visit shared files view
+ cy.visit('/apps/files')
+ // see the shared folder
+ getActionButtonForFile('folder')
+ .should('be.visible')
+ // open the action menu
+ .click({ force: true })
+ // see no download action
+ getActionEntryForFile('folder', 'download')
+ .should('not.exist')
+
+ // Disable view without download option
+ cy.runOccCommand('config:app:set --value no core shareapi_allow_view_without_download')
+
+ // visit shared files view
+ cy.visit('/apps/files')
+ // see the shared folder
+ getRowForFile('folder').should('be.visible')
+ getActionButtonForFile('folder')
+ .should('be.visible')
+ // open the action menu
+ .click({ force: true })
+ getActionEntryForFile('folder', 'download').should('not.exist')
+ })
+
+ it('cannot download a file if disabled', () => {
+ // share the folder
+ cy.uploadContent(user, new Blob([]), 'text/plain', '/file.txt')
+ cy.login(user)
+ cy.visit('/apps/files')
+ createShare('file.txt', sharee.userId, { read: true, download: false })
+ cy.logout()
+
+ // Now for the sharee
+ cy.login(sharee)
+
+ // visit shared files view
+ cy.visit('/apps/files')
+ // see the shared folder
+ getActionButtonForFile('file.txt')
+ .should('be.visible')
+ // open the action menu
+ .click({ force: true })
+ // see no download action
+ getActionEntryForFile('file.txt', 'download')
+ .should('not.exist')
+
+ // Disable view without download option
+ cy.runOccCommand('config:app:set --value no core shareapi_allow_view_without_download')
+
+ // visit shared files view
+ cy.visit('/apps/files')
+ // see the shared folder
+ getRowForFile('file.txt').should('be.visible')
+ getActionButtonForFile('file.txt')
+ .should('be.visible')
+ // open the action menu
+ .click({ force: true })
+ getActionEntryForFile('file.txt', 'download').should('not.exist')
+ })
+})