-
-
Notifications
You must be signed in to change notification settings - Fork 4.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #50192 from nextcloud/fix/files_sharing/sharing-en…
…try-link-override-expiration-date fix(files_sharing): Stop overwriting the share expiration date with the default expiration date
- Loading branch information
Showing
14 changed files
with
160 additions
and
18 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,128 @@ | ||
/*! | ||
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors | ||
* SPDX-License-Identifier: AGPL-3.0-or-later | ||
*/ | ||
|
||
import { User } from '@nextcloud/cypress' | ||
import { closeSidebar } from '../files/FilesUtils.ts' | ||
import { createShare, openSharingDetails, openSharingPanel, updateShare } from './FilesSharingUtils.ts' | ||
|
||
describe('files_sharing: Expiry date', () => { | ||
const expectedDefaultDate = new Date(Date.now() + 2 * 24 * 60 * 60 * 1000) | ||
const expectedDefaultDateString = `${expectedDefaultDate.getFullYear()}-${String(expectedDefaultDate.getMonth() + 1).padStart(2, '0')}-${String(expectedDefaultDate.getDate()).padStart(2, '0')}` | ||
const fortnight = new Date(Date.now() + 14 * 24 * 60 * 60 * 1000) | ||
const fortnightString = `${fortnight.getFullYear()}-${String(fortnight.getMonth() + 1).padStart(2, '0')}-${String(fortnight.getDate()).padStart(2, '0')}` | ||
|
||
let alice: User | ||
let bob: User | ||
|
||
before(() => { | ||
// Ensure we have the admin setting setup for default dates with 2 days in the future | ||
cy.runOccCommand('config:app:set --value yes core shareapi_default_internal_expire_date') | ||
cy.runOccCommand('config:app:set --value 2 core shareapi_internal_expire_after_n_days') | ||
|
||
cy.createRandomUser().then((user) => { | ||
alice = user | ||
cy.login(alice) | ||
}) | ||
cy.createRandomUser().then((user) => { | ||
bob = user | ||
}) | ||
}) | ||
|
||
after(() => { | ||
cy.runOccCommand('config:app:delete core shareapi_default_internal_expire_date') | ||
cy.runOccCommand('config:app:delete core shareapi_enforce_internal_expire_date') | ||
cy.runOccCommand('config:app:delete core shareapi_internal_expire_after_n_days') | ||
}) | ||
|
||
beforeEach(() => { | ||
cy.runOccCommand('config:app:delete core shareapi_enforce_internal_expire_date') | ||
}) | ||
|
||
it('See default expiry date is set and enforced', () => { | ||
// Enforce the date | ||
cy.runOccCommand('config:app:set --value yes core shareapi_enforce_internal_expire_date') | ||
const dir = 'defaultExpiryDateEnforced' | ||
prepareDirectory(dir) | ||
|
||
validateExpiryDate(dir, expectedDefaultDateString) | ||
cy.findByRole('checkbox', { name: /expiration date/i }) | ||
.should('be.checked') | ||
.and('be.disabled') | ||
}) | ||
|
||
it('See default expiry date is set also if not enforced', () => { | ||
const dir = 'defaultExpiryDate' | ||
prepareDirectory(dir) | ||
|
||
validateExpiryDate(dir, expectedDefaultDateString) | ||
cy.findByRole('checkbox', { name: /expiration date/i }) | ||
.should('be.checked') | ||
.and('not.be.disabled') | ||
.check({ force: true, scrollBehavior: 'nearest' }) | ||
}) | ||
|
||
it('Can set custom expiry date', () => { | ||
const dir = 'customExpiryDate' | ||
prepareDirectory(dir) | ||
updateShare(dir, 0, { expiryDate: fortnight }) | ||
validateExpiryDate(dir, fortnightString) | ||
}) | ||
|
||
it('Custom expiry date survives reload', () => { | ||
const dir = 'customExpiryDateReload' | ||
prepareDirectory(dir) | ||
updateShare(dir, 0, { expiryDate: fortnight }) | ||
validateExpiryDate(dir, fortnightString) | ||
|
||
cy.visit('/apps/files') | ||
validateExpiryDate(dir, fortnightString) | ||
}) | ||
|
||
/** | ||
* Regression test for https://github.com/nextcloud/server/pull/50192 | ||
* Ensure that admin default settings do not always override the user set value. | ||
*/ | ||
it('Custom expiry date survives unrelated update', () => { | ||
const dir = 'customExpiryUnrelatedChanges' | ||
prepareDirectory(dir) | ||
updateShare(dir, 0, { expiryDate: fortnight }) | ||
validateExpiryDate(dir, fortnightString) | ||
|
||
closeSidebar() | ||
updateShare(dir, 0, { note: 'Only note changed' }) | ||
validateExpiryDate(dir, fortnightString) | ||
|
||
cy.visit('/apps/files') | ||
validateExpiryDate(dir, fortnightString) | ||
}) | ||
|
||
/** | ||
* Prepare directory, login and share to bob | ||
* | ||
* @param name The directory name | ||
*/ | ||
function prepareDirectory(name: string) { | ||
cy.mkdir(alice, `/${name}`) | ||
cy.login(alice) | ||
cy.visit('/apps/files') | ||
createShare(name, bob.userId) | ||
} | ||
|
||
/** | ||
* Validate expiry date on a share | ||
* | ||
* @param filename The filename to validate | ||
* @param expectedDate The expected date in YYYY-MM-dd | ||
*/ | ||
function validateExpiryDate(filename: string, expectedDate: string) { | ||
openSharingPanel(filename) | ||
openSharingDetails(0) | ||
|
||
cy.get('#share-date-picker') | ||
.should('exist') | ||
.and('have.value', expectedDate) | ||
} | ||
|
||
}) |
Large diffs are not rendered by default.
Oops, something went wrong.
File renamed without changes.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
467-467.js.license |
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.