Links

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

  1. 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
  2. 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

 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
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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
 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."
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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'