aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cypress/e2e/files_sharing/FilesSharingUtils.ts4
-rw-r--r--cypress/e2e/files_sharing/public-share/download.cy.ts (renamed from cypress/e2e/files_sharing/public-share/download-files.cy.ts)97
-rw-r--r--cypress/e2e/files_sharing/public-share/setup-public-share.ts15
3 files changed, 110 insertions, 6 deletions
diff --git a/cypress/e2e/files_sharing/FilesSharingUtils.ts b/cypress/e2e/files_sharing/FilesSharingUtils.ts
index 842c246334b..d63e46914c7 100644
--- a/cypress/e2e/files_sharing/FilesSharingUtils.ts
+++ b/cypress/e2e/files_sharing/FilesSharingUtils.ts
@@ -20,9 +20,9 @@ export function createShare(fileName: string, username: string, shareSettings: P
openSharingPanel(fileName)
cy.get('#app-sidebar-vue').within(() => {
- cy.get('#sharing-search-input').clear()
cy.intercept({ times: 1, method: 'GET', url: '**/apps/files_sharing/api/v1/sharees?*' }).as('userSearch')
- cy.get('#sharing-search-input').type(username)
+ cy.findByRole('combobox', { name: /Search for internal recipients/i })
+ .type(`{selectAll}${username}`)
cy.wait('@userSearch')
})
diff --git a/cypress/e2e/files_sharing/public-share/download-files.cy.ts b/cypress/e2e/files_sharing/public-share/download.cy.ts
index 59542f080a8..3afae7139f1 100644
--- a/cypress/e2e/files_sharing/public-share/download-files.cy.ts
+++ b/cypress/e2e/files_sharing/public-share/download.cy.ts
@@ -4,9 +4,10 @@
*/
// @ts-expect-error The package is currently broken - but works...
import { deleteDownloadsFolderBeforeEach } from 'cypress-delete-downloads-folder'
-import { createShare, getShareUrl, setupPublicShare, type ShareContext } from './setup-public-share.ts'
+import { createShare, getShareUrl, openLinkShareDetails, setupPublicShare, type ShareContext } from './setup-public-share.ts'
import { getRowForFile, getRowForFileId, triggerActionForFile, triggerActionForFileId } from '../../files/FilesUtils.ts'
import { zipFileContains } from '../../../support/utils/assertions.ts'
+import type { User } from '@nextcloud/cypress'
describe('files_sharing: Public share - downloading files', { testIsolation: true }, () => {
@@ -170,4 +171,98 @@ describe('files_sharing: Public share - downloading files', { testIsolation: tru
})
})
})
+
+ describe('download permission - link share', () => {
+ let context: ShareContext
+ beforeEach(() => {
+ cy.createRandomUser().then((user) => {
+ cy.mkdir(user, '/test')
+
+ context = { user }
+ createShare(context, 'test')
+ cy.login(context.user)
+ cy.visit('/apps/files')
+ })
+ })
+
+ deleteDownloadsFolderBeforeEach()
+
+ it('download permission is retained', () => {
+ getRowForFile('test').should('be.visible')
+ triggerActionForFile('test', 'details')
+
+ openLinkShareDetails(0)
+
+ cy.intercept('PUT', '**/ocs/v2.php/apps/files_sharing/api/v1/shares/*').as('update')
+
+ cy.findByRole('checkbox', { name: /hide download/i })
+ .should('exist')
+ .and('not.be.checked')
+ .check({ force: true })
+ cy.findByRole('checkbox', { name: /hide download/i })
+ .should('be.checked')
+ cy.findByRole('button', { name: /update share/i })
+ .click()
+
+ cy.wait('@update')
+
+ openLinkShareDetails(0)
+ cy.findByRole('checkbox', { name: /hide download/i })
+ .should('be.checked')
+
+ cy.reload()
+
+ getRowForFile('test').should('be.visible')
+ triggerActionForFile('test', 'details')
+ openLinkShareDetails(0)
+ cy.findByRole('checkbox', { name: /hide download/i })
+ .should('be.checked')
+ })
+ })
+
+ describe('download permission - mail share', () => {
+ let user: User
+
+ beforeEach(() => {
+ cy.createRandomUser().then(($user) => {
+ user = $user
+ cy.mkdir(user, '/test')
+ cy.login(user)
+ cy.visit('/apps/files')
+ })
+ })
+
+ it('download permission is retained', () => {
+ getRowForFile('test').should('be.visible')
+ triggerActionForFile('test', 'details')
+
+ cy.findByRole('combobox', { name: /Enter external recipients/i })
+ .type('test@example.com')
+
+ cy.get('.option[sharetype="4"][user="test@example.com"]')
+ .parent('li')
+ .click()
+ cy.findByRole('button', { name: /advanced settings/i })
+ .should('be.visible')
+ .click()
+
+ cy.intercept('PUT', '**/ocs/v2.php/apps/files_sharing/api/v1/shares/*').as('update')
+
+ cy.findByRole('checkbox', { name: /hide download/i })
+ .should('exist')
+ .and('not.be.checked')
+ .check({ force: true })
+ cy.findByRole('button', { name: /save share/i })
+ .click()
+
+ cy.wait('@update')
+
+ openLinkShareDetails(1)
+ cy.findByRole('button', { name: /advanced settings/i })
+ .click()
+ cy.findByRole('checkbox', { name: /hide download/i })
+ .should('exist')
+ .and('be.checked')
+ })
+ })
})
diff --git a/cypress/e2e/files_sharing/public-share/setup-public-share.ts b/cypress/e2e/files_sharing/public-share/setup-public-share.ts
index 42dedc77183..5ff6bf2c657 100644
--- a/cypress/e2e/files_sharing/public-share/setup-public-share.ts
+++ b/cypress/e2e/files_sharing/public-share/setup-public-share.ts
@@ -122,15 +122,24 @@ export function createShare(context: ShareContext, shareName: string, options: S
}
/**
- * Adjust share permissions to be editable
+ * open link share details for specific index
+ *
+ * @param index
*/
-function adjustSharePermission(): void {
+export function openLinkShareDetails(index: number) {
cy.findByRole('list', { name: 'Link shares' })
.findAllByRole('listitem')
- .first()
+ .eq(index)
.findByRole('button', { name: /Actions/i })
.click()
cy.findByRole('menuitem', { name: /Customize link/i }).click()
+}
+
+/**
+ * Adjust share permissions to be editable
+ */
+function adjustSharePermission(): void {
+ openLinkShareDetails(0)
cy.get('[data-cy-files-sharing-share-permissions-bundle]').should('be.visible')
cy.get('[data-cy-files-sharing-share-permissions-bundle="upload-edit"]').click()