diff options
-rw-r--r-- | cypress/e2e/files_sharing/FilesSharingUtils.ts | 4 | ||||
-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.ts | 15 |
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() |