@@ -50,6 +50,7 @@ export type changeRoleArgs = {
5050 linkName : string
5151 role : string
5252 space ?: boolean
53+ password ?: boolean
5354}
5455
5556export type deleteLinkArgs = {
@@ -102,6 +103,8 @@ const copyLinkButton =
102103 '//span[contains(@class, "files-links-name") and text()="%s"]//ancestor::li//button[contains(@class, "oc-files-public-link-copy-url")]'
103104const linkRoleDropdown = '.link-role-dropdown'
104105const createLinkModal = '.oc-modal-body'
106+ const removePublicLinkPasswordButton =
107+ '//div[contains(@id,"edit-public-link-dropdown")]//button/span[text()="Remove password"]'
105108
106109const getRecentLinkUrl = async ( page : Page , name : string ) : Promise < string > => {
107110 const linkElement = page . locator ( util . format ( copyLinkButton , name ) )
@@ -173,7 +176,7 @@ export const createLink = async (args: createLinkArgs): Promise<string> => {
173176}
174177
175178export const changeRole = async ( args : changeRoleArgs ) : Promise < string > => {
176- const { page, resource, linkName, role, space } = args
179+ const { page, resource, linkName, role, space, password = false } = args
177180
178181 // clear all popups
179182 await clearAllPopups ( page )
@@ -199,7 +202,14 @@ export const changeRole = async (args: changeRoleArgs): Promise<string> => {
199202 res . request ( ) . method ( ) === 'PATCH' &&
200203 res . status ( ) === 200
201204 ) ,
202- page . locator ( util . format ( publicLinkSetRoleButton , role ) ) . click ( )
205+ ( async ( ) => {
206+ await page . locator ( util . format ( publicLinkSetRoleButton , role ) ) . click ( )
207+
208+ if ( password ) {
209+ await generatePassword ( page )
210+ await setPassword ( page )
211+ }
212+ } ) ( )
203213 ] )
204214
205215 const message = await page . locator ( linkUpdateDialog ) . textContent ( )
@@ -374,3 +384,23 @@ export const copyLinkToClipboard = async (args: copyLinkArgs): Promise<string> =
374384 await page . getByLabel ( 'Copy link to clipboard' ) . click ( )
375385 return await page . evaluate ( 'navigator.clipboard.readText()' )
376386}
387+
388+ export const deletePassword = async ( args : createLinkArgs ) : Promise < void > => {
389+ const { page, resource, name } = args
390+
391+ // clear all popups
392+ await clearAllPopups ( page )
393+
394+ const resourcePaths = resource . split ( '/' )
395+ const resourceName = resourcePaths . pop ( )
396+ if ( resourcePaths . length ) {
397+ await clickResource ( { page : page , path : resourcePaths . join ( '/' ) } )
398+ }
399+ await sidebar . open ( { page : page , resource : resourceName } )
400+ await sidebar . openPanel ( { page : page , name : 'sharing' } )
401+ await page . locator ( util . format ( editPublicLinkButton , name ) ) . click ( )
402+
403+ const passwordIndication = page . locator ( '.oc-files-file-link-has-password' )
404+ await page . locator ( removePublicLinkPasswordButton ) . click ( )
405+ await expect ( passwordIndication ) . not . toBeVisible ( )
406+ }
0 commit comments