-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add collaborators #29
base: master
Are you sure you want to change the base?
Changes from 9 commits
f268558
b160f26
e2c73ea
6ba0025
cef8922
f654bb0
6d690a1
ca2209f
1633042
e66bf61
a579b4b
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
Feature: Accessing a resource as a collaborator | ||
|
||
Scenario: Accessing a resource as a collaborator with the 'Viewer' role | ||
Given I'm a logged in user who is a collaborator of a resource | ||
And I have the role 'Viewer' | ||
# And I have added the resource to my personal space as in 'Feature: Overview of received shared resources' / 'Feature: Pending Shares' | ||
When accessing this resource | ||
Then I can list the resource and its contents | ||
And I can download the resource and its contents | ||
And I can view the resource and its contents as in 'Feature: Accessing a resource' | ||
And I can rename the resource as in 'Scenario: Renaming a shared resource in a user's personal space' | ||
And I can move the resource as in 'Scenario: Moving a shared resource within a user's personal space' | ||
And I can remove the resource from my personal space as in 'Feature: Removing a shared resource from a user's personal space' | ||
|
||
Scenario: Accessing a resource as a collaborator with the 'Editor' role | ||
Given I'm a logged in user who is a collaborator of a resource | ||
And I have the role 'Editor' | ||
# And I have added the resource to my personal space as in 'Feature: Overview of received shared resources' / 'Feature: Pending Shares' | ||
When accessing this resource | ||
Then I can list the resource and its contents | ||
And I can download the resource and its contents | ||
And I can view the resource and its contents as in 'Feature: Accessing a resource' | ||
And I can rename the resource as in 'Scenario: Renaming a shared resource in a user's personal space' | ||
And I can move the resource as in 'Scenario: Moving a shared resource within a user's personal space' | ||
And I can remove the resource from my personal space as in 'Feature: Removing a shared resource from a user's personal space' | ||
And I can rename the contents of the resource as in 'Feature: Renaming a resource' | ||
And I can delete the contents of the resource as in 'Feature: Deleting a resource' | ||
And I can move the contents of the resource as in 'Feature: Moving a resource' | ||
And I can move resources into the resource as in 'Feature: Moving a resource' | ||
And I can move resources out of the resource as in 'Feature: Moving a resource' | ||
And I can create resources within the resource as in 'Feature: Creating a resource' | ||
And I can upload resources into the resource as in 'Feature: Uploading a resource' | ||
And I can edit/change/update the resource and its contents | ||
|
||
Scenario: Accessing a resource as a collaborator with the 'Advanced permissions' role | ||
Given I'm a logged in user who is a collaborator of a resource | ||
And I have the role 'Advanced permissions' | ||
# And I have added the resource to my personal space as in 'Feature: Overview of received shared resources' / 'Feature: Pending Shares' | ||
When accessing this resource | ||
Then I can list the resource and its contents | ||
And I can download the resource and its contents | ||
And I can view the resource and its contents as in 'Feature: Accessing a resource' | ||
And I can rename the resource as in 'Scenario: Renaming a shared resource in a user's personal space' | ||
And I can move the resource as in 'Scenario: Moving a shared resource within a user's personal space' | ||
And I can remove the resource from my personal space as in 'Feature: Removing a shared resource from a user's personal space' | ||
And I can use the resource based on the additionally granted detailed permissions described below | ||
And the granted detailed permissions can stack/complement each other | ||
|
||
When accessing this resources without any of the detailed permissions | ||
Then the behavior equals 'Scenario: Accessing a resource as a collaborator with the 'Viewer' role' | ||
|
||
When accessing this resource only with the permission "Edit" (single file) | ||
Then I can edit/change/update the resource | ||
|
||
When accessing this resource only with the permission "Create" (folder) | ||
Then I can move resources into the resource as in 'Feature: Moving a resource' | ||
And I can create resources within the resource as in 'Feature: Creating a resource' | ||
And I can upload resources into the resource as in 'Feature: Uploading a resource' | ||
|
||
When accessing this resource only with the permission "Change" (folder) | ||
Then I can rename the contents of the resource as in 'Feature: Renaming a resource' | ||
And I can edit/change/update the resource and its contents | ||
|
||
When accessing this resource only with the permission "Delete" (folder) | ||
Then I can delete the contents of the resource as in 'Feature: Deleting a resource' | ||
And I can move resources out of the resource as in 'Feature: Moving a resource' | ||
|
||
When accessing this resource only with the permission "Manage" | ||
Then I can add collaborators to the resource as in 'Feature: Adding collaborators to a resource' | ||
And I can manage the collaborators of the resource as in 'Feature: Managing collaborators of a resource' |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
Feature: Being added/removed as a collaborator to/from a resource | ||
|
||
Scenario: Being added as a regular single user | ||
Given I'm a regular ownCloud user of the instance the resource is located on | ||
When I'm added as a collaborator to a resource as in 'Feature: Adding collaborators to a resource' | ||
Then the subsequent behavior is determined by 'Feature: Pending Shares' | ||
|
||
Scenario: Being removed as a collaborator from a resource | ||
Given I'm a collaborator of a certain resource | ||
When an Owner removes me from the resource as in 'Scenario: Removing a collaborator from a resource' | ||
Or a Co-Owner removes me from the resource as in 'Scenario: Removing a collaborator from a resource' | ||
Then I do not have access to the resource anymore | ||
And the resource disappears from my resource list | ||
And I don't have a way to get back access except asking an Owner/Co-Owner to add me again |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
Feature: Overview of received shared resources | ||
|
||
Scenario: Listing received shared resources | ||
Given I'm logged in as a user | ||
When I have accepted collaborator invites | ||
Or I have pending collaborator invites as in 'Scenario: Being added as a collaborator to a resource (Pending Shares enabled)' | ||
Or I have shared resources that I removed from my personal space previously as in 'Feature: Removing a shared resource from a user's personal space' | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. same |
||
Then I can list these resources | ||
And I see the name of the resources | ||
And I see file type icons or thumbnails | ||
And I can recognize the initiator of the invite | ||
And I see the time since the invite has been initiated | ||
And I see the state of the invite (accepted/pending/declined) | ||
And I can add these resources to my personal space as in 'Scenario: Adding a shared resource to a user's personal space' | ||
And I can remove these resources from my personal space as in 'Scenario: Removing a shared resource from a user's personal space' | ||
And I can sort the list (ascending/descending) by name, state and time | ||
|
||
Scenario: Adding a shared resource to a user's personal space | ||
Given I'm a logged in user | ||
When I have pending collaborator invites as in 'Scenario: Being added as a collaborator to a resource (Pending Shares enabled)' | ||
Or I have declined collaborator invites | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. same |
||
Then I can add such a resource to my personal space | ||
And the state of the invite changes to 'accepted' | ||
And the resource is located in the folder configured via the 'share_folder' option | ||
And I can access it as in 'Feature: Accessing a resource as a collaborator' | ||
|
||
Scenario: Removing a shared resource from a user's personal space | ||
Given I'm a logged in user | ||
When I have accepted collaborator invites | ||
Then I can remove such a resource from my personal space | ||
And the state of the invite changes to 'declined' | ||
And the resource is not located in my hierarchy any more | ||
And I can't access it any more |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
Feature: Pending Shares | ||
|
||
Scenario: Being added as a collaborator to a resource (Pending Shares enabled) | ||
Given I'm added as a collaborator to a resource as in 'Feature: Adding collaborators to a resource' | ||
# When the option 'Automatically accept new incoming local user shares' is disabled | ||
Then the resource is not yet located in my file hierarchy | ||
# Then I am notified about the invite and can choose to 'accept' or 'decline' it | ||
And the resource appears in 'Feature: Overview of received shared resources' with state 'Pending' | ||
When I decline the resource | ||
# Then the notification is dismissed | ||
Then the state of the invite changes to 'declined' | ||
When I accept the resource | ||
# Then the notification is dismissed | ||
Then the state of the invite changes to 'accepted' | ||
And the resource is located in the folder configured via the 'share_folder' option | ||
And I can access it as in 'Feature: Accessing a resource as a collaborator' |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
Feature: Adding collaborators to a resource | ||
|
||
Scenario: Finding collaborators | ||
Given I'm a logged in user located in the collaborators panel of a resource | ||
When I start typing in the collaborator search field | ||
Then I see suggestions (with potentially many characters) based on the available user and group identifiers/attributes, sharing restrictions and options for autocomplete results. These are structured in the following way: | ||
- [Avatar] Identifier / name / mail address / federation ID | ||
- Additional information if applicable (e.g. 'Scenario: Extra field to display in autocomplete results') | ||
- Type (User/Group/Guest/Federated) | ||
And the suggestions for guests or federated users only appear once I enter a compliant identifier (e.g., "[email protected]") | ||
Then I choose a collaborator | ||
And the chosen collaborator's becomes fixed but can easily be removed again | ||
And I can start typing again to add additional collaborators | ||
|
||
Scenario: Setting collaborator properties | ||
Given I'm adding collaborators as in 'Scenario: Finding collaborators' | ||
When having added the first collaborator | ||
Then I can choose a role for the chosen collaborators as in 'Feature: Roles for collaborators' | ||
Then I can set an expiration date for the chosen collaborators as in 'Feature: Expiration date for collaborators' | ||
|
||
Scenario: Confirming collaborators | ||
Given I have set collaborator properties as in 'Scenario: Setting collaborator properties' | ||
When I confirm the supplied information | ||
Then the collaborators are added to the resource according to the specified properties | ||
And I get visual feedback to know whether the action was successful or not |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
--- | ||
title: Collaborators | ||
geekdocRepo: https://github.com/owncloud/product | ||
geekdocEditPath: edit/master/docs | ||
geekdocFilePath: collaborators.md | ||
--- | ||
|
||
This document describes the features around 'Collaborators' from the perspective of the owner. The perspective of a recipient is described in the section 'Resources'. | ||
|
||
## User stories | ||
|
||
1. Adding single collaborators to a resource (user share) | ||
* Use case: As a user I want to exchange data with internal single users for that they get access and can collaborate with me | ||
|
||
## Requirements | ||
|
||
### Adding collaborators to a resource | ||
|
||
- As an owner or co-owner of a resource I want to be able to add other collaborators to the resource in order to provide access and to enable collaboration on the resource. | ||
|
||
{{< include file="features/sharing/adding_collaborators_to_a_resource.feature" language="gherkin">}} | ||
|
||
### Managing collaborators of a resource | ||
|
||
{{< include file="features/sharing/managing_collaborators_of_a_resource.feature" language="gherkin">}} | ||
|
||
### Roles for collaborators | ||
|
||
- As a regular user adding collaborators to a resource I want to choose roles for collaborators as these are easy to understand and less technical than raw permissions. Still, I need a brief explanation of what the roles exactly stand for in order to prevent mistakes. For legacy reasons and as a power user I still need granular permissions to restrict collaborators to exactly the features I want to allow. | ||
|
||
{{< include file="features/sharing/roles_for_collaborators.feature" language="gherkin">}} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
Feature: Managing collaborators of a resource | ||
|
||
Scenario: Viewing collaborators of a resource as an Owner/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 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. same |
||
Then I get a list of all collaborators of the resource separated by users and groups whereby each entry contains the following information | ||
- Name | ||
# - Additional information based on 'Scenario: Extra field to display in autocomplete results' | ||
- Avatar | ||
# - Type (User/Guest/Federated) | ||
- Role | ||
# - State (pending/accepted; for local/federated/guest) | ||
# - Expiration date (if applicable) | ||
- Initiator of a reshare (if applicable) | ||
And I see the Owner of the resource always as the first entry in the list | ||
And I see myself in the list (if applicable) | ||
|
||
Scenario: Viewing collaborators of a resource as a regular collaborator | ||
Given I'm a collaborator of a specific resource | ||
And I don't have the role 'Owner' | ||
# And I don't have the role 'Co-Owner' | ||
When looking at the resource in detail | ||
Then I get a list of all collaborators whom I added to the resource, separated by users and groups whereby each entry contains the following information | ||
- Name | ||
# - Additional information based on 'Scenario: Extra field to display in autocomplete results' | ||
- Avatar | ||
# - Type (User/Guest/Federated) | ||
- Role | ||
# - State (pending/accepted; for local/federated/guest) | ||
# - Expiration date (if applicable) | ||
- Initiator of a reshare (if applicable) | ||
And I see the Owner of the resource always as the first entry in the list | ||
And I see myself in the list | ||
|
||
Scenario: Removing a collaborator from a resource | ||
Given I'm a collaborator of a specific resource | ||
And I have the role 'Owner' | ||
# Or I have the role 'Co-Owner' | ||
Or I have the permission 'Share' | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. same |
||
And I have previously added collaborators to the resource | ||
When looking at the resource in detail | ||
Then I can remove collaborators from the resource | ||
And I have to confirm the removal | ||
And the collaborator disappears from the list | ||
And the removed users do not have access anymore | ||
|
||
Scenario: Modifying a collaborator of a resource | ||
Given I'm a collaborator of a specific resource | ||
And I have the role 'Owner' | ||
# Or I have the role 'Co-Owner' | ||
Or I have the permission 'Share' | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. same |
||
And I have previously added collaborators to the resource | ||
When looking at the resource in detail | ||
Then I can change each collaborator's role as in 'Feature: Roles for collaborators' | ||
And I can change each collaborator's expiration date as in 'Feature: Expiration date for collaborators' | ||
And I have to confirm the modifications | ||
And the modifications take effect |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
Feature: Roles for collaborators | ||
|
||
- Owner: The physical owner of the resource | ||
#- Co-Owner: Full permissions including managing existing and adding additional collaborators | ||
- Editor: View + Edit permissions | ||
- Viewer: View only | ||
#- Dynamic roles (e.g. Secure Viewer) | ||
- Advanced permissions | ||
- Cover legacy permission combinations | ||
- Offer granular permission sets | ||
|
||
Scenario: Setting roles for collaborators on a single file | ||
Given I'm a collaborator of a specific file | ||
And I have the role 'Owner' | ||
# Or I have the role 'Co-Owner' | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. same |
||
When located in 'Scenario: Setting collaborator properties' | ||
# Then I can choose the role 'Co-Owner' | ||
# And I see an explanatory note "Manage collaborators, view, download and edit" | ||
Then I can choose the role 'Editor' | ||
And I see an explanatory note "View, download and edit" | ||
Then I can choose the role 'Viewer' | ||
And I see an explanatory note "View and download" | ||
# Then I can choose dynamic roles like 'Secure Viewer' which are introduced by apps | ||
# And I see an explanatory note defined by the respective app | ||
# When choosing a dynamic role | ||
# Then I can set single sub-permissions like 'Print / Export PDF' defined by the respective app | ||
Then I can choose the role 'Advanced permissions' | ||
And I see an explanatory note "Set detailed permissions" | ||
When choosing the role 'Advanced permissions' | ||
Then I can set single permissions "Manage" and "Edit" | ||
|
||
Scenario: Setting roles for collaborators on a folder | ||
Given I'm a collaborator of a specific folder | ||
And I have the role 'Owner' | ||
# Or I have the role 'Co-Owner' | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. same |
||
When located in 'Scenario: Setting collaborator properties' | ||
# Then I can choose the role 'Co-Owner' | ||
# And I see an explanatory note "Manage collaborators, view, download, edit and delete" | ||
Then I can choose the role 'Editor' | ||
And I see an explanatory note "View, download, edit and delete" | ||
Then I can choose the role 'Viewer' | ||
And I see an explanatory note "View and download" | ||
# Then I can choose dynamic roles like 'Secure Viewer' which are introduced by apps | ||
# And I see an explanatory note defined by the respective app | ||
# When choosing a dynamic role | ||
# Then I can set single sub-permissions like 'Print / Export PDF' defined by the respective app | ||
Then I can choose the role 'Advanced permissions' | ||
And I see an explanatory note "Set detailed permissions" | ||
When choosing the role 'Advanced permissions' | ||
Then I can set single permissions "Manage", "Create", "Change", "Delete" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Or is not allowed.
You need an extra scenario ;-)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
IIRC that "Or" thing was introduced by you here: a60caaf#diff-1c40b780bdbf7746a4b6f27bb29fd912R6
Anyway, will try to change it, thanks.