This document describes the features around ‘Links’ from the perspective of the owner. The perspective of a recipient is described in the section ‘Resources’.
User stories
Private Link
As a user I want to be able to refer to shared resources by posting a static link (that never changes) on other media like email, chat rooms
Link that can grant access (Public Link)
As a user (owner) I want to collaborate on any resource quickly & easily with anybody.
As a collaborator (share recipient) of a resource I want to collaborate on the resource quickly & easily with anybody.
As a user or a collaborator I want to protect any shared resource with a password to prevent leaks or abuse.
As a user I want to control the lifetime of links for that I do not provide infinite access (as I might forget about it and might leak data).
As a user I want to control what individual recipients are allowed to do with shared resources
Requirements
Adding a link on a resource
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Feature: Adding a link on a resource
Scenario: Setting link properties
GIVEN I'm a logged in user located in the links panel of a resource I'm an owner, co-owner or another role with share permission of
WHEN adding a link to the resource
THEN I can recognize which resource I'm about to create a link to
AND I can choose a name for the link. This name allows to add some information to the link and is only visible to the owner or co-owners.
AND I can choose a role for the recipients as in 'Feature: Roles for links'
AND I can set an expiration date for the link as in 'Feature: Expiration date for links'
AND I can set a password for the link as in 'Feature: Password protection for links'
AND I can enter email addresses and a personal note to send the link via mail as in 'Feature: Sending links via mail' if the Sharing option 'Allow users to send mail notification for shared files' is enabled
Scenario: Confirming link creation
GIVEN I have set link properties as in 'Scenario: Setting link properties'
WHEN I confirm the supplied information
THEN the link is added to the resource according to the specified properties
AND I get visual feedback to know whether the action was successful or not
Feature: Managing links on a resource
Scenario: Viewing links on a resource with the role 'Owner' or 'Co-Owner'
GIVEN I'm a collaborator of a specific resource
AND I have the role 'Owner'
OR I have the role 'Co-Owner'
WHEN looking at the resource in detail
THEN I see the base link / collaborator link
AND I see an explanatory note "Only invited collaborators can use this link."
THEN I get a list of all links with access roles on the resource whereby each entry contains the following information
- Link name
- Link role
- Indicator for password protection
- Expiration date
- Initiator of a reshare (if applicable)
AND I see an explanatory note "Anyone with the link can access this resource. No sign-in required."
AND I can recognize each links' URL
AND I can copy each links' URL as in 'Scenario: Copying a private link'
AND I can remove a link as in 'Scenario: Removing a link on a resource'
AND I can modify a link as in 'Scenario: Modifying a link on a resource'
Scenario: Viewing links on a resource as a collaborator **with** 'Share' permission
GIVEN I'm a collaborator of a specific resource
AND I have a role with 'Share' permission
WHEN looking at the resource in detail
THEN I see the base link / collaborator link
AND I see an explanatory note "Only invited collaborators can use this link."
THEN I get a list of all links with access roles on the resource **which I created** whereby each entry contains the following information
- Link name
- Link role
- Indicator for password protection
- Expiration date
- Initiator of a reshare (if applicable)
AND I see an explanatory note "Anyone with the link can access this resource. No sign-in required."
AND I can recognize each links' URL
AND I can copy each links' URL as in 'Scenario: Copying a private link'
AND I can remove a link **I created** as in 'Scenario: Removing a link on a resource'
AND I can modify a link **I created** as in 'Scenario: Modifying a link on a resource'
Scenario: Viewing links on a resource as a collaborator **without** 'Share' permission
GIVEN I'm a collaborator of a specific resource
AND I have a role without 'Share' permission
WHEN looking at the resource in detail
THEN I see the base link / collaborator link
AND I see an explanatory note "Only invited collaborators can use this link."
AND I can recognize each links' URL
AND I can copy each links' URL as in 'Scenario: Copying a private link'
Scenario: Removing a link on a resource
GIVEN I'm a collaborator of a specific resource
WHEN viewing links on a resource as in 'Scenario: Viewing links on a resource [*]'
THEN I can remove each link on the resource which I can list
AND I have to confirm the removal
AND a removed link disappears from the list
AND a removed link is invalidated
Scenario: Modifying a link on a resource
GIVEN I'm a collaborator of a specific resource
WHEN viewing links on a resource as in 'Scenario: Viewing links on a resource [*]'
THEN I can change the name of each link which I can list
AND I can change the role of each link which I can list as in 'Feature: Roles for links'
AND I can change the expiration date of each link which I can list as in 'Feature: Expiration date for links'
AND I can change the password of each link which I can list as in 'Feature: Password protection for links'
AND I can send the link via mail as in 'Feature: Sending links via mail'
AND I have to confirm the modifications
AND the modifications take effect
Roles for links
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Feature: Roles for links
Scenario: Setting roles for links on a single file
GIVEN I'm an owner or co-owner of a specific resource
WHEN located in 'Scenario: Setting link properties'
THEN the role 'Viewer' is chosen
AND I see an explanatory note "Recipients can view and download contents."
Scenario: Setting roles for links on a folder
GIVEN I'm an owner or co-owner of a specific resource
WHEN located in 'Scenario: Setting link properties'
THEN the role 'Viewer' is chosen unless a different role has been chosen before
AND I see an explanatory note "Recipients can view and download contents."
THEN I can choose the role 'Contributor'
AND I see an explanatory note "Recipients can view, download and upload contents."
THEN I can choose the role 'Editor'
AND I see an explanatory note "Recipients can view, download, edit, delete and upload contents."
THEN I can choose the role 'Uploader'
AND I see an explanatory note "Recipients can upload but existing contents are not revealed."
Feature: Expiration date for links
- As a user I want to set an expiration date for links in order to stay in control of access permissions by giving time-based access instead of granting access forever or until I manually remove the link.
- As an admin I want to set a default expiration date without enforcement to give a recommendation to users and help them maintain control over their resources. Still I don't want to force or annoy users as some may have reasons to collaborate on resources for a longer amount of time, e.g., in projects.
- As an admin I have to follow corporate policies which dictate that data exchange with externals may only take place for a certain maximum amount of time to prevent data leaks by human mistake or negligence.
Scenario: Setting an expiration date for links (no default expiration date set)
GIVEN I'm an owner or co-owner of a specific resource
AND the instance has no default expiration date set for links
WHEN located in 'Scenario: Setting link properties' or 'Scenario: Modifying a link on a resource'
THEN the expiration date is not set unless it was set before
THEN I can set an expiration date by manually entering it or by using a date picker
AND I'm not limited in any way concerning the date except that it must be in the future
Scenario: Setting an expiration date for links (default expiration date set without enforcement)
GIVEN I'm an owner or co-owner of a specific resource
AND the instance has a default expiration date without enforcement set for collaborators
WHEN located in 'Scenario: Setting link properties' or 'Scenario: Modifying a link on a resource'
THEN the expiration date is set to the default value unless it was set to a different value before
THEN I can change the expiration date by manually entering it or by using a date picker
AND I'm not limited in any way concerning the date except that it must be in the future
Scenario: Setting an expiration date for links (default expiration date set with enforcement)
GIVEN I'm an owner or co-owner of a specific resource
AND the instance has a default expiration date with enforcement set for collaborators
WHEN located in 'Scenario: Setting link properties' or 'Scenario: Modifying a link on a resource'
THEN the expiration date is set to the default value unless it was set to a different value before
THEN I can change the expiration date by manually entering it or by using a date picker
AND I'm limited concerning the date in a way that it must be at least the default value or earlier
Scenario: Setting an expiration date for links (Password Policy option 'X days until link expires if password is set' set)
TODO:
Scenario: Setting an expiration date for links (Password Policy option 'X days until link expires if password is NOT set' set)
TODO:
Scenario: Expiring a link
GIVEN an expiration date has been set for a collaborator on a certain resource
WHEN the specified day has just ended
THEN the collaborator is automatically removed from the resource according to 'Scenario: Removing a collaborator from a resource'