From 21dc98a22c5a37f22b995a8b134b7b51e6c10983 Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Thu, 24 Mar 2022 16:55:02 +0545 Subject: [PATCH 01/17] beta testplan --- docs/ocis/development/beta-testplan.md | 129 +++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 docs/ocis/development/beta-testplan.md diff --git a/docs/ocis/development/beta-testplan.md b/docs/ocis/development/beta-testplan.md new file mode 100644 index 000000000..5980b7555 --- /dev/null +++ b/docs/ocis/development/beta-testplan.md @@ -0,0 +1,129 @@ +--- +title: "Beta testplan" +date: 2022-03-24T00:00:00+00:00 +weight: 37 +geekdocRepo: https://github.com/owncloud/ocis +geekdocEditPath: edit/master/docs/ocis/development +geekdocFilePath: beta-testplan.md +--- + +## user / groups from LDAP + +- connect ocis to your preferred LDAP server TODO link documentation +- create users and groups in LDAP +- start ocis with basic auth `OCIS_INSECURE=true PROXY_ENABLE_BASIC_AUTH=true bin/ocis server` + +| Test Case | Expected Result | Example / Comment | +|-------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------|----------------------------| +| share file / folder to a group | member of the group can access shared item | TODO curl commands | +| share file / folder to a group, remove member from group in LDAP | removed member should not have access to the shared item | TODO curl commands | +| share file / folder to a group with different permissions, as receiver try to violate the permissions | receiver should not be able to violate the permissions | TODO curl commands | +| try to login with wrong credentials | login should not be possible | TODO curl commands | +| set a quota in LDAP, upload files till the quota is exceeded | upload should work till quota is full, uploads should not work when quota is full | **Is that even possible?** | +| try to access files / folders of other users | access should not be possible | TODO curl commands | +| try to share with non-existing users and groups | sharing should not be possible | TODO curl commands | +| try to share with user/groups-names that contain special characters | sharing should be possible, access shares with that user does not create any problems | TODO curl commands | + +## parallel deployment + +- setup oC10 and ocis is parallel TODO documentation link +- create users and groups in LDAP + +| Test Case | Expected Result | Example / Comment | +|------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------|----------------------------| +| share file / folder to a group in one implementation (use different permissions), access the items with the other implementation, try to violate the permissions | receiver should not be able to violate the permissions | TODO curl commands | +| share file / folder to a group, remove member from group in LDAP, try to access items with the removed member from both implementations | removed member should not have access to the shared item | TODO curl commands | + +## Spaces + +Prerequisite: +- create a new user TODO curl commands +- give the user the "Admin" role TODO curl commands + +| Test Case | Expected Result | Example / Comment | +|---------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------|---------------------------------------------------------------------------------| +| create a space | space should exist | TODO curl commands | +| create a space with special characters as a name & description | space should exist | TODO curl commands / **what are valid characters for space name/ description?** | +| create a space, delete the space | space should not exist | TODO curl commands | +| create a space, share the space with a user | space should be accessible | TODO curl commands | +| create a space, share the space with a group | space should be accessible, space content is shared among all users | TODO curl commands | +| create a space, share the space with a group, disable the space | space should not be accessible | TODO curl commands | +| create a space, disable the space, try to share the space | sharing the space should not be possible | TODO curl commands | +| create & share a space with a group with viewer role, do CRUD file/folder operations | space content is readable but neither space not content should not be writable | TODO curl commands | +| create & share a space with a group with editor role, do CRUD file/folder operations | space and content should be writable | TODO curl commands | +| create a space, try CRUD file/folder operations on the space with a user that its not shared with | space and content should not be accessible | TODO curl commands | +| create a space with a quota, share the space, upload files till the quota is exceeded | upload should work till quota is full, uploads should not work when quota is full | TODO curl commands | + + +## Web + +Prerequisite: +- connect ocis to your preferred LDAP server +- create users and groups in LDAP +- Use your preferred browser + +| Test Case | Expected Result | Comment | +|--------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------|---------| +| Login with the created user | Admin logs in. | | +| Create a text file. | Text editor can open, file is saved. | | +| Create a text file with special characters as name | file is created if the name is legal otherwise an error is displayed | | +| Modify a text file. | File can be modified, no problems found. | | +| Rename a file. | File is renamed. | | +| Upload a file. | File is uploaded, no problems found. | | +| Upload multiple files at once. | Files are uploaded, no problems found. | | +| delete all content of a folder at once. | Folder is cleanded, items are visible in the trashbin | | +| Overwrite a file by uploading a new version. | File is uploaded and overwritten, file versions are displayed | | +| Overwrite a file by uploading a new version, restore the original version. | File is restored correctly | | +| upload a huge file | File is uploaded, no problems found. | | +| upload a huge file, cancel the upload, restart the upload | File is uploaded, no problems founnd. | | +| Remove a file. | File is removed correctly, it appears in the trashbin. | | +| Restore the deleted file from trashbin | File is restores correctly | | +| Remove multiple files that have the same name but are located in different folders | Files are removed correctly, they appear in the trashbin. | | +| Restore some of the deleted files from trashbin | Files are restored correctly in the correct folders. | | +| Restore some of the deleted files from trashbin, but delete the original containing folder before | Files are restored correctly | | +| Clean files from the trashbin | files are permanetly deleted | | +| Create a lot of files, delete a lot of files, empty the trashbin | trashbin is cleaned | | +| Move a file inside a folder. | There are not problems on the process. | | +| Move a file inside a folder that already contains a file with the same name | File is not moved, content in the destination is not overwritten | | +| Create a folder. | Folder is created, no MKCOL problems appear. | | +| Create a folder with special characters as name | Folder is created if the name is legal otherwise an error is displayed | | +| Create a folder with a name of an already existing file/folder | Folder is not created, an error is displayed | | +| Create a folder with a lot of subfolders, use special characters in the name | Folder is created, no MKCOL problems appear. | | +| Delete a folder. | Folder is removed. | | +| Move a folder inside another. | No problems while moving the folder. | | +| open images in mediaviewer | files are displayed correctly. | | +| open videos in mediaviewer | files are displayed correctly. | | +| switch through videos and images in mediaviewer | files are displayed correctly. | | +| Share a file by public link. | Link is created and can be accessed. | | +| Share a folder by public link. | Link is created and can be accessed. | | +| Share a file with another user. | It is shared correctly. | | +| Share a folder with another user. | It is shared correctly. | | +| Share a file with a group. | It is shared correctly. | | +| Share a folder with a group. | It is shared correctly. | | +| Share a folder with userB giving edit permissions. As userB do CRUD operations on items inside the received folder | userB doesn't find any problem while interacting with files. | | +| Use your mobile device to access the UI | All elements reachable | | + +## Desktop Client + +Prerequisite: +- connect ocis to your preferred LDAP server +- create users and groups in LDAP +- use your preferred OS for the desktop client + +| Test Case | Expected Result | Comment | +|---------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------|---------| +| Set up two clients with the same user. Change files, add some, delete some, move some, create folders. | Changes sync properly in both clients without errors. | | +| Share a file using contextual menu with userB. | Option to share appears in the contextual menu and file is correctly shared. | | + + +## Mobile Clients (iOS || Android) + +Prerequisite: +- connect ocis to your preferred LDAP server +- create users and groups in LDAP + +| Test Case | Expected Result | Comment | +|-----------------------------------------------|------------------------------------------|---------| +| Connect to server, see files, download one. | No problems while downloading. | | +| Upload a file using mobile client. | No problems while uploading. | | +| Share a file with userB using mobile client. | File is correctly shared. | | From 83a9d4397272960a57b11ff3e85e57840aa040d5 Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Fri, 25 Mar 2022 12:07:18 +0545 Subject: [PATCH 02/17] more tests, some docs, examples and tips --- docs/ocis/development/beta-testplan.md | 135 ++++++++++++++++++++----- 1 file changed, 109 insertions(+), 26 deletions(-) diff --git a/docs/ocis/development/beta-testplan.md b/docs/ocis/development/beta-testplan.md index 5980b7555..2bca0656a 100644 --- a/docs/ocis/development/beta-testplan.md +++ b/docs/ocis/development/beta-testplan.md @@ -9,24 +9,47 @@ geekdocFilePath: beta-testplan.md ## user / groups from LDAP -- connect ocis to your preferred LDAP server TODO link documentation +Prerequisite: +- connect ocis to your preferred LDAP server - create users and groups in LDAP - start ocis with basic auth `OCIS_INSECURE=true PROXY_ENABLE_BASIC_AUTH=true bin/ocis server` -| Test Case | Expected Result | Example / Comment | -|-------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------|----------------------------| -| share file / folder to a group | member of the group can access shared item | TODO curl commands | -| share file / folder to a group, remove member from group in LDAP | removed member should not have access to the shared item | TODO curl commands | -| share file / folder to a group with different permissions, as receiver try to violate the permissions | receiver should not be able to violate the permissions | TODO curl commands | -| try to login with wrong credentials | login should not be possible | TODO curl commands | -| set a quota in LDAP, upload files till the quota is exceeded | upload should work till quota is full, uploads should not work when quota is full | **Is that even possible?** | -| try to access files / folders of other users | access should not be possible | TODO curl commands | -| try to share with non-existing users and groups | sharing should not be possible | TODO curl commands | -| try to share with user/groups-names that contain special characters | sharing should be possible, access shares with that user does not create any problems | TODO curl commands | +documentations resources: + - configure ocis with LDAP **TODO link documentation** + - [sharing API is compatible to ownCloud 10](https://doc.owncloud.com/server/10.9/developer_manual/core/apis/ocs-share-api.html) + + +| Test Case | Expected Result | Example / Comment | +|-------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------|-------------------| +| share file / folder to a group | member of the group can access shared item | | +| share file / folder to a group, remove member from group in LDAP | removed member should not have access to the shared item | | +| share file / folder to a group with different permissions, as receiver try to violate the permissions | receiver should not be able to violate the permissions | | +| try to login with wrong credentials | login should not be possible | | +| set a quota in LDAP, upload files till the quota is exceeded | upload should work till quota is full, uploads should not work when quota is full | | +| try to access files / folders of other users | access should not be possible | | +| try to share with non-existing users and groups | sharing should not be possible | | +| try to share with user/groups-names that contain special characters | sharing should be possible, access shares with that user does not create any problems | | + +## other sharing + +should be tried in various ways and in different environment + +documentations resources: +- [sharing API is compatible to ownCloud 10](https://doc.owncloud.com/server/10.9/developer_manual/core/apis/ocs-share-api.html) + +| Test Case | Expected Result | Example / Comment | +|---------------------------------------------------------------------------------------|-----------------------------------------------------------------------|-----------------------------------------------------------| +| share a file/folder with the same name from different users | receiver can accept and access both file/folders and distinguish them | [known bug](https://github.com/owncloud/ocis/issues/2131) | +| share a file/folder with the same name but different permissions from different users | receiver can access both file/folders according to the permissions | [known bug](https://github.com/owncloud/ocis/issues/2131) | +| share a file/folder with the same name but different locations from one user | receiver can accept and access both file/folders and distinguish them | [known bug](https://github.com/owncloud/ocis/issues/2131) | +| share a file/folder back to the sharer | sharing back should not be possible | | +| re-share a file/folder with different permissions | sharing with lower permissions is possible, but not with higher | | +| decline received share | share should be gone | | + ## parallel deployment -- setup oC10 and ocis is parallel TODO documentation link +- setup oC10 and ocis is parallel **TODO documentation link** - create users and groups in LDAP | Test Case | Expected Result | Example / Comment | @@ -40,20 +63,20 @@ Prerequisite: - create a new user TODO curl commands - give the user the "Admin" role TODO curl commands -| Test Case | Expected Result | Example / Comment | -|---------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------|---------------------------------------------------------------------------------| -| create a space | space should exist | TODO curl commands | -| create a space with special characters as a name & description | space should exist | TODO curl commands / **what are valid characters for space name/ description?** | -| create a space, delete the space | space should not exist | TODO curl commands | -| create a space, share the space with a user | space should be accessible | TODO curl commands | -| create a space, share the space with a group | space should be accessible, space content is shared among all users | TODO curl commands | -| create a space, share the space with a group, disable the space | space should not be accessible | TODO curl commands | -| create a space, disable the space, try to share the space | sharing the space should not be possible | TODO curl commands | -| create & share a space with a group with viewer role, do CRUD file/folder operations | space content is readable but neither space not content should not be writable | TODO curl commands | -| create & share a space with a group with editor role, do CRUD file/folder operations | space and content should be writable | TODO curl commands | -| create a space, try CRUD file/folder operations on the space with a user that its not shared with | space and content should not be accessible | TODO curl commands | -| create a space with a quota, share the space, upload files till the quota is exceeded | upload should work till quota is full, uploads should not work when quota is full | TODO curl commands | - +| Test Case | Expected Result | Example / Comment | +|---------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|---------------------------------------------------------------------------------| +| create a space | space should exist | TODO curl commands | +| create a space with special characters as a name & description | space should exist | TODO curl commands / **what are valid characters for space name/ description?** | +| create a space, delete the space | space should not exist | TODO curl commands | +| create a space, share the space with a user | space should be accessible | TODO curl commands | +| create a space, share the space with a group | space should be accessible, space content is shared among all users | TODO curl commands | +| create a space, share the space with a group, disable the space | space should not be accessible | TODO curl commands | +| create a space, disable the space, try to share the space | sharing the space should not be possible | TODO curl commands | +| create & share a space with a group with viewer role, do CRUD file/folder operations | space content is readable but neither space not content should not be writable | TODO curl commands | +| create & share a space with a group with editor role, do CRUD file/folder operations | space and content should be writable | TODO curl commands | +| create a space, try CRUD file/folder operations on the space with a user that its not shared with | space and content should not be accessible | TODO curl commands | +| create a space with a quota, share the space, upload files till the quota is exceeded | upload should work till quota is full, uploads should not work when quota is full | TODO curl commands | +| share file/folders from inside a space (see other sharing section) | | | ## Web @@ -127,3 +150,63 @@ Prerequisite: | Connect to server, see files, download one. | No problems while downloading. | | | Upload a file using mobile client. | No problems while uploading. | | | Share a file with userB using mobile client. | File is correctly shared. | | + +## other WebDAV clients + +Prerequisite: +- start ocis with basic auth `OCIS_INSECURE=true PROXY_ENABLE_BASIC_AUTH=true bin/ocis server` + +| Test Case | Expected Result | Comment | +|---------------------------------------------------------------|-------------------------------------------------------------|--------------------------------------------------------------------------------------------------------| +| use ocis as webDAV external storage in ownCloud 10 | resource access works | | +| use ocis as webDAV external storage in ownCloud 10 | resource access works | | +| access webDAV with your file-manager | that will not give you a good UX, but ocis should not crash | Urls: https:///remote.php/webdav & https:///remote.php/dav/files/ | +| access webDAV with the "remote-files" function of LibreOffice | files are accessible and can be written back | | + +# Tips for testing +## WebDav +WebDav is accessible under two different path +- https:///remote.php/webdav +- https:///remote.php/dav/files/ + +WebDav specifications can be found on http://webdav.org/ + +here some general WebDav requests examples: + +variable declaration: +```shell +SERVER_URI=https://localhost:9200 +API_PATH=remote.php/webdav +USER=admin +PASSWORD=admin +``` +- list content of root folder: `curl -k -u $USER:$PASSWORD "$SERVER_URI/$API_PATH/" -X PROPFIND` +- list content of sub-folder: `curl -k -u $USER:$PASSWORD "$SERVER_URI/$API_PATH/f1" -X PROPFIND` +- create a folder: `curl -k -u $USER:$PASSWORD "$SERVER_URI/$API_PATH/folder" -X MKCOL` +- delete a resource: `curl -k -u $USER:$PASSWORD "$SERVER_URI/$API_PATH/folder" -X DELETE` +- rename / move a resource: `curl -k -u $USER:$PASSWORD "$SERVER_URI/$API_PATH/folder" -X MOVE -H "Destination: $SERVER_URI/$API_PATH/renamed"` +- copy a resource: `curl -k -u $USER:$PASSWORD "$SERVER_URI/$API_PATH/folder" -X COPY -H "Destination: $SERVER_URI/$API_PATH/folder-copy"` + +## decode HTTPS traffic with wireshark +To decode the HTTPS traffic we need the keys that were used to encrypt the traffic. Those keys are kept secret by the clients, but we can request the clients to save them in a specific file, so that wireshark can use them to decrypt the traffic again. + +1. create key file: `touch /tmp/sslkey.log` +2. start wireshark +3. set log filename + - navigate to Edit=>Preferences=>Protocols=>TLS + - in the field `(Pre)-Master-Secret log filename` enter `/tmp/sslkey.log` +4. decode as HTTP + - navigate to Analyze=>Decode As... + - click the + button + - set Field: `TLS Port; Value=9200; Type: Integer, base 10; Default (none); Current HTTP` (adjust the port if you are using another one than 9200) +5. start recording + - use `port 9200` as capture filter to only record ocis packages + - use `http` as display filter to see only decoded traffic +6. run test-software with `SSLKEYLOGFILE=/tmp/sslkey.log` as env. variable e.g. + - curl: `SSLKEYLOGFILE=/tmp/sslkey.log curl -k -u admin:admin https://localhost:9200/ocs/v1.php/cloud/users` + - Browser: `SSLKEYLOGFILE=/tmp/sslkey.log firefox` + - LibreOffice: `SSLKEYLOGFILE=/tmp/sslkey.log libreoffice` + +## format output +- piping **xml** results to `xmllint` gives you nice formats. E.g. `curl -k --user marie:radioactivity "https://localhost:9200/ocs/v1.php/apps/files_sharing/api/v1/shares" | xmllint --format -` +- piping **json** results to `jq` gives you nice formats. E.g. `curl -k --user marie:radioactivity "https://localhost:9200/ocs/v1.php/apps/files_sharing/api/v1/shares?format=json" | jq` From 1ee17bdb26f220c2a3e4c5fe981bb988939314eb Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Fri, 25 Mar 2022 12:12:09 +0545 Subject: [PATCH 03/17] fix formating --- docs/ocis/development/beta-testplan.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/ocis/development/beta-testplan.md b/docs/ocis/development/beta-testplan.md index 2bca0656a..1dcf0e03d 100644 --- a/docs/ocis/development/beta-testplan.md +++ b/docs/ocis/development/beta-testplan.md @@ -156,18 +156,18 @@ Prerequisite: Prerequisite: - start ocis with basic auth `OCIS_INSECURE=true PROXY_ENABLE_BASIC_AUTH=true bin/ocis server` -| Test Case | Expected Result | Comment | -|---------------------------------------------------------------|-------------------------------------------------------------|--------------------------------------------------------------------------------------------------------| -| use ocis as webDAV external storage in ownCloud 10 | resource access works | | -| use ocis as webDAV external storage in ownCloud 10 | resource access works | | -| access webDAV with your file-manager | that will not give you a good UX, but ocis should not crash | Urls: https:///remote.php/webdav & https:///remote.php/dav/files/ | -| access webDAV with the "remote-files" function of LibreOffice | files are accessible and can be written back | | +| Test Case | Expected Result | Comment | +|---------------------------------------------------------------|-------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------| +| use ocis as webDAV external storage in ownCloud 10 | resource access works | | +| use ocis as webDAV external storage in ownCloud 10 | resource access works | | +| access webDAV with your file-manager | that will not give you a good UX, but ocis should not crash | Urls: https://\/remote.php/webdav & https://\/remote.php/dav/files/\ | +| access webDAV with the "remote-files" function of LibreOffice | files are accessible and can be written back | | # Tips for testing ## WebDav WebDav is accessible under two different path -- https:///remote.php/webdav -- https:///remote.php/dav/files/ +- https://\/remote.php/webdav +- https://\/remote.php/dav/files/\ WebDav specifications can be found on http://webdav.org/ From 069fb6d5ac250c6573e6e346a54df115ade70f69 Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Fri, 25 Mar 2022 12:38:18 +0545 Subject: [PATCH 04/17] some general information / ideas --- docs/ocis/development/beta-testplan.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/docs/ocis/development/beta-testplan.md b/docs/ocis/development/beta-testplan.md index 1dcf0e03d..ef8b86faf 100644 --- a/docs/ocis/development/beta-testplan.md +++ b/docs/ocis/development/beta-testplan.md @@ -7,6 +7,21 @@ geekdocEditPath: edit/master/docs/ocis/development geekdocFilePath: beta-testplan.md --- +# Beta Testing + +This document is supposed to give you some ideas how and what to test on ocis. It's not ment to be an extensive list of all tests to be done, rather it should help you, as beta-tester, to get started and enable you to get creative and create own test-cases. [Derive from these examples, be creative, do unusual and unconventional things, to try to break things](https://twitter.com/sempf/status/514473420277694465). + +Some cases have suggested setup steps, but feel free to use other setups. This can include: +- different deployment methods (e.g. running compiled binary, docker-container, docker-compose setup) +- different identity managers (e.g. different external LDAP, internal IDM) **TODO documentation link** +- different reverse proxies **TODO documentation link** +- different IdPs **TODO documentation link** +- different storage systems ([cephfs](https://owncloud.dev/ocis/storage-backends/cephfs/), decompose fs, [decompose fs on NFS](https://owncloud.dev/ocis/storage-backends/dcfsnfs/), [EOS](https://owncloud.dev/ocis/storage-backends/eos/), S3 ) **are that the things we want to support?** + +It's a good idea to test ocis in the same environment where you are planning to use it later (with the LDAP server, storage system, etc. of your organisation). + +# Testplan + ## user / groups from LDAP Prerequisite: From c3866cb30997457df1b7e9407b32544413d3cc62 Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Fri, 25 Mar 2022 12:41:49 +0545 Subject: [PATCH 05/17] Big List of Naughty Strings --- docs/ocis/development/beta-testplan.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/ocis/development/beta-testplan.md b/docs/ocis/development/beta-testplan.md index ef8b86faf..380735a11 100644 --- a/docs/ocis/development/beta-testplan.md +++ b/docs/ocis/development/beta-testplan.md @@ -179,6 +179,7 @@ Prerequisite: | access webDAV with the "remote-files" function of LibreOffice | files are accessible and can be written back | | # Tips for testing + ## WebDav WebDav is accessible under two different path - https://\/remote.php/webdav @@ -225,3 +226,6 @@ To decode the HTTPS traffic we need the keys that were used to encrypt the traff ## format output - piping **xml** results to `xmllint` gives you nice formats. E.g. `curl -k --user marie:radioactivity "https://localhost:9200/ocs/v1.php/apps/files_sharing/api/v1/shares" | xmllint --format -` - piping **json** results to `jq` gives you nice formats. E.g. `curl -k --user marie:radioactivity "https://localhost:9200/ocs/v1.php/apps/files_sharing/api/v1/shares?format=json" | jq` + +## create corner cases +- (Big List of Naughty Strings)[https://github.com/minimaxir/big-list-of-naughty-strings] From daa41f888b2a630e06a984347f17afb4bfa3f57f Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Fri, 25 Mar 2022 13:02:28 +0545 Subject: [PATCH 06/17] use api tests or web to get ideas how to stress the system --- docs/ocis/development/beta-testplan.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/ocis/development/beta-testplan.md b/docs/ocis/development/beta-testplan.md index 380735a11..29d1a2e9d 100644 --- a/docs/ocis/development/beta-testplan.md +++ b/docs/ocis/development/beta-testplan.md @@ -11,6 +11,9 @@ geekdocFilePath: beta-testplan.md This document is supposed to give you some ideas how and what to test on ocis. It's not ment to be an extensive list of all tests to be done, rather it should help you, as beta-tester, to get started and enable you to get creative and create own test-cases. [Derive from these examples, be creative, do unusual and unconventional things, to try to break things](https://twitter.com/sempf/status/514473420277694465). +One option to create new test-cases and to stress the system is to examine what the [API acceptance-tests](https://owncloud.dev/ocis/development/testing/#testing-with-test-suite-natively-installed) or the [web-UI](#web) does, [examine the requests](# +decode-https-traffic-with-wireshark) and do something a bit different with curl. This is also a good way to find out how APIs work that are not already fully documented. + Some cases have suggested setup steps, but feel free to use other setups. This can include: - different deployment methods (e.g. running compiled binary, docker-container, docker-compose setup) - different identity managers (e.g. different external LDAP, internal IDM) **TODO documentation link** @@ -222,6 +225,7 @@ To decode the HTTPS traffic we need the keys that were used to encrypt the traff - curl: `SSLKEYLOGFILE=/tmp/sslkey.log curl -k -u admin:admin https://localhost:9200/ocs/v1.php/cloud/users` - Browser: `SSLKEYLOGFILE=/tmp/sslkey.log firefox` - LibreOffice: `SSLKEYLOGFILE=/tmp/sslkey.log libreoffice` + - acceptance tests: `SSLKEYLOGFILE=/tmp/sslkey.log make test-acceptance-api ...` ## format output - piping **xml** results to `xmllint` gives you nice formats. E.g. `curl -k --user marie:radioactivity "https://localhost:9200/ocs/v1.php/apps/files_sharing/api/v1/shares" | xmllint --format -` From ffcf058e76faf83b3fa17aa178e2a48b9ecf984b Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Fri, 25 Mar 2022 13:04:48 +0545 Subject: [PATCH 07/17] fix formating --- docs/ocis/development/beta-testplan.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/ocis/development/beta-testplan.md b/docs/ocis/development/beta-testplan.md index 29d1a2e9d..ab92ceb75 100644 --- a/docs/ocis/development/beta-testplan.md +++ b/docs/ocis/development/beta-testplan.md @@ -11,8 +11,7 @@ geekdocFilePath: beta-testplan.md This document is supposed to give you some ideas how and what to test on ocis. It's not ment to be an extensive list of all tests to be done, rather it should help you, as beta-tester, to get started and enable you to get creative and create own test-cases. [Derive from these examples, be creative, do unusual and unconventional things, to try to break things](https://twitter.com/sempf/status/514473420277694465). -One option to create new test-cases and to stress the system is to examine what the [API acceptance-tests](https://owncloud.dev/ocis/development/testing/#testing-with-test-suite-natively-installed) or the [web-UI](#web) does, [examine the requests](# -decode-https-traffic-with-wireshark) and do something a bit different with curl. This is also a good way to find out how APIs work that are not already fully documented. +One option to create new test-cases and to stress the system is to examine what the [API acceptance-tests](https://owncloud.dev/ocis/development/testing/#testing-with-test-suite-natively-installed) or the [web-UI](#web) does, [examine the requests](#decode-https-traffic-with-wireshark) and do something a bit different with curl. This is also a good way to find out how APIs work that are not already fully documented. Some cases have suggested setup steps, but feel free to use other setups. This can include: - different deployment methods (e.g. running compiled binary, docker-container, docker-compose setup) @@ -232,4 +231,4 @@ To decode the HTTPS traffic we need the keys that were used to encrypt the traff - piping **json** results to `jq` gives you nice formats. E.g. `curl -k --user marie:radioactivity "https://localhost:9200/ocs/v1.php/apps/files_sharing/api/v1/shares?format=json" | jq` ## create corner cases -- (Big List of Naughty Strings)[https://github.com/minimaxir/big-list-of-naughty-strings] +- [Big List of Naughty Strings](https://github.com/minimaxir/big-list-of-naughty-strings) From c51f7cdcdbf499aec9c8313603cdd6c3cdd738cc Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Fri, 25 Mar 2022 16:17:15 +0545 Subject: [PATCH 08/17] details and examples for spaces tests --- docs/ocis/development/beta-testplan.md | 76 ++++++++++++++++++++------ 1 file changed, 58 insertions(+), 18 deletions(-) diff --git a/docs/ocis/development/beta-testplan.md b/docs/ocis/development/beta-testplan.md index ab92ceb75..1ff8f0941 100644 --- a/docs/ocis/development/beta-testplan.md +++ b/docs/ocis/development/beta-testplan.md @@ -77,23 +77,62 @@ documentations resources: ## Spaces Prerequisite: +- variable declaration, for curl examples: +```shell +SERVER_URI=https://localhost:9200 +GRAPH_API_PATH=graph/v1.0 +SHARE_API_PATH=ocs/v2.php/apps/files_sharing/api/v1/shares +USER=admin +PASSWORD=admin +``` - create a new user TODO curl commands -- give the user the "Admin" role TODO curl commands +- give the user the "Admin" role + 1. get the id of the admin role `curl -k -u $USER:$PASSWORD $SERVER_URI/api/v0/settings/roles-list -d"{}" | jq '.bundles[] | select (.name | test("admin")) | .id'` + 2. get the id of the user: `curl -k -u $USER:$PASSWORD $SERVER_URI/api/v0/accounts/accounts-list -d"{}" | jq '.accounts[] | select (.preferredName | test("")) | .id'` + 3. assign role user to role: `curl -k -u $USER:$PASSWORD $SERVER_URI/api/v0/settings/assignments-add -d'{"account_uuid":"","role_id":""}` +- create a space: `curl -k -u $USER:$PASSWORD "$SERVER_URI/$GRAPH_API_PATH/drives" -X POST -d'{"Name":"Space for finance","driveType":"project", "description":"we need some space"}'` +- list spaces: `curl -k -u $USER:$PASSWORD $SERVER_URI/$GRAPH_API_PATH/me/drives` +- disable a space: `curl -k -u $USER:$PASSWORD $SERVER_URI/$GRAPH_API_PATH/drives/ -X DELETE` +- delete a space: `curl -k -u $USER:$PASSWORD $SERVER_URI/$GRAPH_API_PATH/drives/ -X DELETE -H'Purge: T'` +- restore a space: `curl -k -u $USER:$PASSWORD $SERVER_URI/$GRAPH_API_PATH/drives/ -X PATCH -d"{}" -H"Restore: true"` +- share a space: `curl -k -u $USER:$PASSWORD $SERVER_URI/$SHARE_API_PATH -d'space_ref=&shareType=7&shareWith=&role='` + - Roles: + - viewer + - editor + - manager +- share a resource within a space `curl -k -u $USER:$PASSWORD $SERVER_URI/$SHARE_API_PATH -d'shareType=0&shareWith=&space_ref=%2F&permissions=` + - possible permissions + - 1 = read + - 2 = update + - 4 = create + - 8 = delete + - 15 = read/write + - 16 = share + - 31 = All permissions +- WebDAV + - root: `https:///dav/spaces/` + - [example commands for operations](#webdav) + +| Test Case | Expected Result | Example / Comment | +|---------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|-------------------| +| create a space | space should exist | | +| create a space with special characters as a name & description | space should exist | | +| create a space, delete the space | space should not exist | | +| create a space, share the space with a user | space should be accessible | | +| create a space, share the space with a group | space should be accessible, space content is shared among all users | | +| create a space, share the space with a group, disable the space | space should not be accessible | | +| create a space, share the space with a user, disable the space, restore the space | space should be accessible | | +| create a space, disable the space, delete the space, restore the space | it should not be possible to restore the space | | +| create a space, disable the space, try to share the space | sharing the space should not be possible | | +| create a space, try delete the space | it should not be possible to delete an enabled space | | +| create & share a space with a group with viewer role, do CRUD file/folder operations with WebDAV | space content is readable but neither space not content should not be writable | | +| create & share a space with a group with editor role, do CRUD file/folder operations with WebDAV | space and content should be writable | | +| create a space, try CRUD file/folder operations with WebDAV on the space with a user that its not shared with | space and content should not be accessible | | +| create a space with a quota, share the space, upload files till the quota is exceeded | upload should work till quota is full, uploads should not work when quota is full | | +| share file/folders from inside a space (see other sharing section) | sharing works and obeys the permissions | | +| try the various space operations with invalid data | good error output, server does not crash | | +| try the various space operations without the correct permissions | operations are not possible without sufficient permissions | | -| Test Case | Expected Result | Example / Comment | -|---------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|---------------------------------------------------------------------------------| -| create a space | space should exist | TODO curl commands | -| create a space with special characters as a name & description | space should exist | TODO curl commands / **what are valid characters for space name/ description?** | -| create a space, delete the space | space should not exist | TODO curl commands | -| create a space, share the space with a user | space should be accessible | TODO curl commands | -| create a space, share the space with a group | space should be accessible, space content is shared among all users | TODO curl commands | -| create a space, share the space with a group, disable the space | space should not be accessible | TODO curl commands | -| create a space, disable the space, try to share the space | sharing the space should not be possible | TODO curl commands | -| create & share a space with a group with viewer role, do CRUD file/folder operations | space content is readable but neither space not content should not be writable | TODO curl commands | -| create & share a space with a group with editor role, do CRUD file/folder operations | space and content should be writable | TODO curl commands | -| create a space, try CRUD file/folder operations on the space with a user that its not shared with | space and content should not be accessible | TODO curl commands | -| create a space with a quota, share the space, upload files till the quota is exceeded | upload should work till quota is full, uploads should not work when quota is full | TODO curl commands | -| share file/folders from inside a space (see other sharing section) | | | ## Web @@ -183,9 +222,10 @@ Prerequisite: # Tips for testing ## WebDav -WebDav is accessible under two different path -- https://\/remote.php/webdav -- https://\/remote.php/dav/files/\ +WebDav is accessible under different path +- old: https://\/remote.php/webdav +- new: https://\/remote.php/dav/files/\ +- spaces: https://\/dav/spaces/\ WebDav specifications can be found on http://webdav.org/ From 5fc19f59b84c8e8efdf95f37272d47e6f2c77d0c Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Fri, 25 Mar 2022 16:44:22 +0545 Subject: [PATCH 09/17] more documentation links --- docs/ocis/development/beta-testplan.md | 37 +++++++++++++++----------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/docs/ocis/development/beta-testplan.md b/docs/ocis/development/beta-testplan.md index 1ff8f0941..c36a138d9 100644 --- a/docs/ocis/development/beta-testplan.md +++ b/docs/ocis/development/beta-testplan.md @@ -14,11 +14,11 @@ This document is supposed to give you some ideas how and what to test on ocis. I One option to create new test-cases and to stress the system is to examine what the [API acceptance-tests](https://owncloud.dev/ocis/development/testing/#testing-with-test-suite-natively-installed) or the [web-UI](#web) does, [examine the requests](#decode-https-traffic-with-wireshark) and do something a bit different with curl. This is also a good way to find out how APIs work that are not already fully documented. Some cases have suggested setup steps, but feel free to use other setups. This can include: -- different deployment methods (e.g. running compiled binary, docker-container, docker-compose setup) -- different identity managers (e.g. different external LDAP, internal IDM) **TODO documentation link** -- different reverse proxies **TODO documentation link** +- different deployment methods (e.g. running single binary, docker-container, docker-compose setup, [individual services in own docker containers](https://owncloud.dev/ocis/deployment/ocis_individual_services/)) +- different identity managers (e.g. [different external LDAP](https://owncloud.dev/ocis/deployment/ocis_ldap/), internal IDM) +- different reverse proxies (e.g. [traefik](https://owncloud.dev/ocis/deployment/ocis_traefik/)) - different IdPs **TODO documentation link** -- different storage systems ([cephfs](https://owncloud.dev/ocis/storage-backends/cephfs/), decompose fs, [decompose fs on NFS](https://owncloud.dev/ocis/storage-backends/dcfsnfs/), [EOS](https://owncloud.dev/ocis/storage-backends/eos/), S3 ) **are that the things we want to support?** +- different storage systems ([cephfs](https://owncloud.dev/ocis/storage-backends/cephfs/), decompose fs, [decompose fs on NFS](https://owncloud.dev/ocis/storage-backends/dcfsnfs/), [EOS](https://owncloud.dev/ocis/storage-backends/eos/), [S3](https://owncloud.dev/ocis/deployment/ocis_s3/) ) **are that the things we want to support?** It's a good idea to test ocis in the same environment where you are planning to use it later (with the LDAP server, storage system, etc. of your organisation). @@ -32,9 +32,9 @@ Prerequisite: - start ocis with basic auth `OCIS_INSECURE=true PROXY_ENABLE_BASIC_AUTH=true bin/ocis server` documentations resources: - - configure ocis with LDAP **TODO link documentation** + - [configure ocis with LDAP](https://owncloud.dev/ocis/deployment/ocis_ldap/) - [sharing API is compatible to ownCloud 10](https://doc.owncloud.com/server/10.9/developer_manual/core/apis/ocs-share-api.html) - + - [webDav operations](#webdav) | Test Case | Expected Result | Example / Comment | |-------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------|-------------------| @@ -53,6 +53,7 @@ should be tried in various ways and in different environment documentations resources: - [sharing API is compatible to ownCloud 10](https://doc.owncloud.com/server/10.9/developer_manual/core/apis/ocs-share-api.html) +- [webDav operations](#webdav) | Test Case | Expected Result | Example / Comment | |---------------------------------------------------------------------------------------|-----------------------------------------------------------------------|-----------------------------------------------------------| @@ -66,13 +67,17 @@ documentations resources: ## parallel deployment -- setup oC10 and ocis is parallel **TODO documentation link** +- [configure ocis with LDAP](https://owncloud.dev/ocis/deployment/ocis_ldap/) +- [setup oC10 and ocis is parallel](https://owncloud.dev/ocis/deployment/oc10_ocis_parallel/) - create users and groups in LDAP -| Test Case | Expected Result | Example / Comment | -|------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------|----------------------------| -| share file / folder to a group in one implementation (use different permissions), access the items with the other implementation, try to violate the permissions | receiver should not be able to violate the permissions | TODO curl commands | -| share file / folder to a group, remove member from group in LDAP, try to access items with the removed member from both implementations | removed member should not have access to the shared item | TODO curl commands | +documentations resources: +- [sharing API is compatible to ownCloud 10](https://doc.owncloud.com/server/10.9/developer_manual/core/apis/ocs-share-api.html) + +| Test Case | Expected Result | Example / Comment | +|------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------|-------------------| +| share file / folder to a group in one implementation (use different permissions), access the items with the other implementation, try to violate the permissions | receiver should not be able to violate the permissions | | +| share file / folder to a group, remove member from group in LDAP, try to access items with the removed member from both implementations | removed member should not have access to the shared item | | ## Spaces @@ -85,7 +90,7 @@ SHARE_API_PATH=ocs/v2.php/apps/files_sharing/api/v1/shares USER=admin PASSWORD=admin ``` -- create a new user TODO curl commands +- create a new user `curl -k -u $USER:$PASSWORD $SERVER_URI/ocs/v2.php/cloud/users -d'userid=&password=&displayname=&username=&email='` - give the user the "Admin" role 1. get the id of the admin role `curl -k -u $USER:$PASSWORD $SERVER_URI/api/v0/settings/roles-list -d"{}" | jq '.bundles[] | select (.name | test("admin")) | .id'` 2. get the id of the user: `curl -k -u $USER:$PASSWORD $SERVER_URI/api/v0/accounts/accounts-list -d"{}" | jq '.accounts[] | select (.preferredName | test("")) | .id'` @@ -137,7 +142,7 @@ PASSWORD=admin ## Web Prerequisite: -- connect ocis to your preferred LDAP server +- [connect ocis to your preferred LDAP server](https://owncloud.dev/ocis/deployment/ocis_ldap/) - create users and groups in LDAP - Use your preferred browser @@ -185,7 +190,7 @@ Prerequisite: ## Desktop Client Prerequisite: -- connect ocis to your preferred LDAP server +- [connect ocis to your preferred LDAP server](https://owncloud.dev/ocis/deployment/ocis_ldap/) - create users and groups in LDAP - use your preferred OS for the desktop client @@ -198,7 +203,7 @@ Prerequisite: ## Mobile Clients (iOS || Android) Prerequisite: -- connect ocis to your preferred LDAP server +- [connect ocis to your preferred LDAP server](https://owncloud.dev/ocis/deployment/ocis_ldap/) - create users and groups in LDAP | Test Case | Expected Result | Comment | @@ -270,5 +275,5 @@ To decode the HTTPS traffic we need the keys that were used to encrypt the traff - piping **xml** results to `xmllint` gives you nice formats. E.g. `curl -k --user marie:radioactivity "https://localhost:9200/ocs/v1.php/apps/files_sharing/api/v1/shares" | xmllint --format -` - piping **json** results to `jq` gives you nice formats. E.g. `curl -k --user marie:radioactivity "https://localhost:9200/ocs/v1.php/apps/files_sharing/api/v1/shares?format=json" | jq` -## create corner cases +## create edge cases - [Big List of Naughty Strings](https://github.com/minimaxir/big-list-of-naughty-strings) From 7792abfcd6b7e5757cf294ce69b69fbfa02e5002 Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Fri, 25 Mar 2022 16:55:16 +0545 Subject: [PATCH 10/17] more spaces tests --- docs/ocis/development/beta-testplan.md | 43 ++++++++++++++------------ 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/docs/ocis/development/beta-testplan.md b/docs/ocis/development/beta-testplan.md index c36a138d9..0f9b1f55a 100644 --- a/docs/ocis/development/beta-testplan.md +++ b/docs/ocis/development/beta-testplan.md @@ -118,25 +118,29 @@ PASSWORD=admin - root: `https:///dav/spaces/` - [example commands for operations](#webdav) -| Test Case | Expected Result | Example / Comment | -|---------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|-------------------| -| create a space | space should exist | | -| create a space with special characters as a name & description | space should exist | | -| create a space, delete the space | space should not exist | | -| create a space, share the space with a user | space should be accessible | | -| create a space, share the space with a group | space should be accessible, space content is shared among all users | | -| create a space, share the space with a group, disable the space | space should not be accessible | | -| create a space, share the space with a user, disable the space, restore the space | space should be accessible | | -| create a space, disable the space, delete the space, restore the space | it should not be possible to restore the space | | -| create a space, disable the space, try to share the space | sharing the space should not be possible | | -| create a space, try delete the space | it should not be possible to delete an enabled space | | -| create & share a space with a group with viewer role, do CRUD file/folder operations with WebDAV | space content is readable but neither space not content should not be writable | | -| create & share a space with a group with editor role, do CRUD file/folder operations with WebDAV | space and content should be writable | | -| create a space, try CRUD file/folder operations with WebDAV on the space with a user that its not shared with | space and content should not be accessible | | -| create a space with a quota, share the space, upload files till the quota is exceeded | upload should work till quota is full, uploads should not work when quota is full | | -| share file/folders from inside a space (see other sharing section) | sharing works and obeys the permissions | | -| try the various space operations with invalid data | good error output, server does not crash | | -| try the various space operations without the correct permissions | operations are not possible without sufficient permissions | | +| Test Case | Expected Result | Example / Comment | +|-------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|--------------------| +| create a space | space should exist | | +| create a space with special characters as a name & description | space should exist | | +| create a space, delete the space | space should not exist | | +| create a space, share the space with a user | space should be accessible | | +| create a space, share the space with a group | space should be accessible, space content is shared among all users | | +| create a space, share the space with a group, disable the space | space should not be accessible | | +| create a space, share the space with a user, disable the space, restore the space | space should be accessible | | +| create a space, disable the space, delete the space, restore the space | it should not be possible to restore the space | | +| create a space, disable the space, try to share the space | sharing the space should not be possible | | +| create a space, try delete the space | it should not be possible to delete an enabled space | | +| create & share a space with a group with viewer role, do CRUD file/folder operations with WebDAV | space content is readable but neither space not content should not be writable | | +| create & share a space with a group with editor role, do CRUD file/folder operations with WebDAV | space and content should be writable | | +| create a space, try CRUD file/folder operations with WebDAV on the space with a user that its not shared with | space and content should not be accessible | | +| create a space with a quota, share the space, upload files till the quota is exceeded | upload should work till quota is full, uploads should not work when quota is full | | +| share file/folders from inside a space (see other sharing section) | sharing works and obeys the permissions | | +| create a space, rename the space | new name should be displayed in API calls and web | TODO curl examples | +| create a space, change description of the space | new description should be displayed in API calls and web | TODO curl examples | +| create a space, set quota, change quota of the space | new quota is obeyed | TODO curl examples | +| create a space, set quota, change quota of the space to a value that is lower than the sum of data already stored | new quota is obeyed, new files cannot be uploaded | TODO curl examples | +| try the various space operations with invalid data | good error output, server does not crash | | +| try the various space operations without the correct permissions | operations are not possible without sufficient permissions | | ## Web @@ -186,6 +190,7 @@ Prerequisite: | Share a folder with a group. | It is shared correctly. | | | Share a folder with userB giving edit permissions. As userB do CRUD operations on items inside the received folder | userB doesn't find any problem while interacting with files. | | | Use your mobile device to access the UI | All elements reachable | | +| TODO spaces tests in web | | | ## Desktop Client From f231bde1b9e243f0e75968bdf23bd00227abd3f7 Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Mon, 28 Mar 2022 12:44:33 +0545 Subject: [PATCH 11/17] more spaces tests and examples --- docs/ocis/development/beta-testplan.md | 57 +++++++++++++++----------- 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/docs/ocis/development/beta-testplan.md b/docs/ocis/development/beta-testplan.md index 0f9b1f55a..2c14c67a7 100644 --- a/docs/ocis/development/beta-testplan.md +++ b/docs/ocis/development/beta-testplan.md @@ -100,6 +100,13 @@ PASSWORD=admin - disable a space: `curl -k -u $USER:$PASSWORD $SERVER_URI/$GRAPH_API_PATH/drives/ -X DELETE` - delete a space: `curl -k -u $USER:$PASSWORD $SERVER_URI/$GRAPH_API_PATH/drives/ -X DELETE -H'Purge: T'` - restore a space: `curl -k -u $USER:$PASSWORD $SERVER_URI/$GRAPH_API_PATH/drives/ -X PATCH -d"{}" -H"Restore: true"` +- rename the space: `curl -k -u $USER:$PASSWORD $SERVER_URI/$GRAPH_API_PATH/drives/ -X PATCH -d'{"name":"नेपालि नाम"}'` +- change description of the space: `curl -k -u $USER:$PASSWORD $SERVER_URI/$GRAPH_API_PATH/drives/ -X PATCH -d'{"description":"this contains important data"}'` +- change quota of the space `curl -k -u $USER:$PASSWORD $SERVER_URI/$GRAPH_API_PATH/drives/ -X PATCH -d'{"quota":{"total":}}'` +- change image of space: + 1. upload an image file to the `.spaces` folder: `curl -k -u $USER:$PASSWORD https://localhost:9200/dav/spaces//.space/ -T -v` + 2. note the id provided in the `Oc-Fileid` header + 3. set the image as "special-folder": `curl -k -u $USER:$PASSWORD $SERVER_URI/$GRAPH_API_PATH/drives/ -X PATCH -d'{"special":[{"specialFolder":{"name":"image"},"id":""}]}'` - share a space: `curl -k -u $USER:$PASSWORD $SERVER_URI/$SHARE_API_PATH -d'space_ref=&shareType=7&shareWith=&role='` - Roles: - viewer @@ -118,29 +125,31 @@ PASSWORD=admin - root: `https:///dav/spaces/` - [example commands for operations](#webdav) -| Test Case | Expected Result | Example / Comment | -|-------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|--------------------| -| create a space | space should exist | | -| create a space with special characters as a name & description | space should exist | | -| create a space, delete the space | space should not exist | | -| create a space, share the space with a user | space should be accessible | | -| create a space, share the space with a group | space should be accessible, space content is shared among all users | | -| create a space, share the space with a group, disable the space | space should not be accessible | | -| create a space, share the space with a user, disable the space, restore the space | space should be accessible | | -| create a space, disable the space, delete the space, restore the space | it should not be possible to restore the space | | -| create a space, disable the space, try to share the space | sharing the space should not be possible | | -| create a space, try delete the space | it should not be possible to delete an enabled space | | -| create & share a space with a group with viewer role, do CRUD file/folder operations with WebDAV | space content is readable but neither space not content should not be writable | | -| create & share a space with a group with editor role, do CRUD file/folder operations with WebDAV | space and content should be writable | | -| create a space, try CRUD file/folder operations with WebDAV on the space with a user that its not shared with | space and content should not be accessible | | -| create a space with a quota, share the space, upload files till the quota is exceeded | upload should work till quota is full, uploads should not work when quota is full | | -| share file/folders from inside a space (see other sharing section) | sharing works and obeys the permissions | | -| create a space, rename the space | new name should be displayed in API calls and web | TODO curl examples | -| create a space, change description of the space | new description should be displayed in API calls and web | TODO curl examples | -| create a space, set quota, change quota of the space | new quota is obeyed | TODO curl examples | -| create a space, set quota, change quota of the space to a value that is lower than the sum of data already stored | new quota is obeyed, new files cannot be uploaded | TODO curl examples | -| try the various space operations with invalid data | good error output, server does not crash | | -| try the various space operations without the correct permissions | operations are not possible without sufficient permissions | | +| Test Case | Expected Result | Example / Comment | +|-------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|-------------------| +| create a space | space should exist | | +| create a space with special characters as a name & description | space should exist | | +| create a space, delete the space | space should not exist | | +| create a space, share the space with a user | space should be accessible | | +| create a space, share the space with a group | space should be accessible, space content is shared among all users | | +| create a space, share the space with a group, disable the space | space should not be accessible | | +| create a space, share the space with a user, disable the space, restore the space | space should be accessible | | +| create a space, disable the space, delete the space, restore the space | it should not be possible to restore the space | | +| create a space, disable the space, try to share the space | sharing the space should not be possible | | +| create a space, try delete the space | it should not be possible to delete an enabled space | | +| create & share a space with a group with viewer role, do CRUD file/folder operations with WebDAV | space content is readable but neither space not content should not be writable | | +| create & share a space with a group with editor role, do CRUD file/folder operations with WebDAV | space and content should be writable | | +| create a space, try CRUD file/folder operations with WebDAV on the space with a user that its not shared with | space and content should not be accessible | | +| create a space with a quota, share the space, upload files till the quota is exceeded | upload should work till quota is full, uploads should not work when quota is full | | +| share file/folders from inside a space (see other sharing section) | sharing works and obeys the permissions | | +| create a space, rename the space | new name should be displayed in API calls and web | | +| create a space, change description of the space | new description should be displayed in API calls and web | | +| create a space, set quota, change quota of the space | new quota is obeyed | | +| create a space, set quota, change quota of the space to a value that is lower than the sum of data already stored | new quota is obeyed, new files cannot be uploaded | | +| try the various space operations with invalid data | good error output, server does not crash | | +| try the various space operations without the correct permissions | operations are not possible without sufficient permissions | | +| try the various space operations on personal and virtual spaces | server should not crash, good error responses | | +| try the various space operations sending invalid data (invalid numbers, wrong types, invalid JSON, etc.) | server should not crash, good error responses | | ## Web @@ -190,7 +199,7 @@ Prerequisite: | Share a folder with a group. | It is shared correctly. | | | Share a folder with userB giving edit permissions. As userB do CRUD operations on items inside the received folder | userB doesn't find any problem while interacting with files. | | | Use your mobile device to access the UI | All elements reachable | | -| TODO spaces tests in web | | | +| do tests mentioned in the [spaces](#spaces) section using the web-UI | | | ## Desktop Client From 477474f17eedff328189d8bc37da51e814be5c1d Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Tue, 5 Apr 2022 13:53:36 +0545 Subject: [PATCH 12/17] improve docs about how to start ocis --- docs/ocis/development/beta-testplan.md | 36 ++++++++++++++++++++------ 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/docs/ocis/development/beta-testplan.md b/docs/ocis/development/beta-testplan.md index 2c14c67a7..f6aa3bac0 100644 --- a/docs/ocis/development/beta-testplan.md +++ b/docs/ocis/development/beta-testplan.md @@ -22,6 +22,14 @@ Some cases have suggested setup steps, but feel free to use other setups. This c It's a good idea to test ocis in the same environment where you are planning to use it later (with the LDAP server, storage system, etc. of your organisation). +# run oCIS +For a quick start, please have a look into the [getting started documentation of oCIS]({{< ref "../getting-started/run-ocis" >}}) +If you would like +to access oCIS remotely please refer to the [Basic Remote Setup]({{< ref "../deployment/basic-remote-setup" >}}) section. + +## additional tips +- to allow basic auth (e.g. to easily access oCIS using curl commands) you have to set `PROXY_ENABLE_BASIC_AUTH=true` environment variable + # Testplan ## user / groups from LDAP @@ -29,7 +37,7 @@ It's a good idea to test ocis in the same environment where you are planning to Prerequisite: - connect ocis to your preferred LDAP server - create users and groups in LDAP -- start ocis with basic auth `OCIS_INSECURE=true PROXY_ENABLE_BASIC_AUTH=true bin/ocis server` +- start ocis with basic auth documentations resources: - [configure ocis with LDAP](https://owncloud.dev/ocis/deployment/ocis_ldap/) @@ -82,6 +90,7 @@ documentations resources: ## Spaces Prerequisite: +- start ocis with basic auth - variable declaration, for curl examples: ```shell SERVER_URI=https://localhost:9200 @@ -157,7 +166,7 @@ PASSWORD=admin Prerequisite: - [connect ocis to your preferred LDAP server](https://owncloud.dev/ocis/deployment/ocis_ldap/) - create users and groups in LDAP -- Use your preferred browser +- Use your preferred browser to access the build-in webUI (by default: https://localhost:9200) | Test Case | Expected Result | Comment | |--------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------|---------| @@ -204,9 +213,14 @@ Prerequisite: ## Desktop Client Prerequisite: -- [connect ocis to your preferred LDAP server](https://owncloud.dev/ocis/deployment/ocis_ldap/) -- create users and groups in LDAP -- use your preferred OS for the desktop client +- [install the desktop client on your preferred OS](https://owncloud.com/desktop-app/) +- start ocis +- connect a new account in the desktop client to ocis e.g. `https://localhost:9200` if you are running the server and the client on the same machine +- accept the self-signed certificate +- you will be redirected to the browser, accept the certificate there also +- login as any user +- allow the "ownCloud desktop app" to access ocis +- select a folder to sync | Test Case | Expected Result | Comment | |---------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------|---------| @@ -217,8 +231,14 @@ Prerequisite: ## Mobile Clients (iOS || Android) Prerequisite: -- [connect ocis to your preferred LDAP server](https://owncloud.dev/ocis/deployment/ocis_ldap/) -- create users and groups in LDAP +- [install the ownCloud app on your mobile](https://owncloud.com/mobile-apps/) +- start oCIS as described in [Basic Remote Setup]({{< ref "../deployment/basic-remote-setup" >}}) +- connect a new account in the mobile client to ocis +- accept the self-signed certificate +- you will be redirected to the browser, accept the certificate there also +- login as any user +- allow the mobile app to access ocis + | Test Case | Expected Result | Comment | |-----------------------------------------------|------------------------------------------|---------| @@ -229,7 +249,7 @@ Prerequisite: ## other WebDAV clients Prerequisite: -- start ocis with basic auth `OCIS_INSECURE=true PROXY_ENABLE_BASIC_AUTH=true bin/ocis server` +- start ocis with basic auth | Test Case | Expected Result | Comment | |---------------------------------------------------------------|-------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------| From cf240a3b2f325a60c67c2ce642bdd43fabf20a4d Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Tue, 5 Apr 2022 15:21:24 +0545 Subject: [PATCH 13/17] mentioned compatible browser --- docs/ocis/development/beta-testplan.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ocis/development/beta-testplan.md b/docs/ocis/development/beta-testplan.md index f6aa3bac0..b8953cf3d 100644 --- a/docs/ocis/development/beta-testplan.md +++ b/docs/ocis/development/beta-testplan.md @@ -166,7 +166,7 @@ PASSWORD=admin Prerequisite: - [connect ocis to your preferred LDAP server](https://owncloud.dev/ocis/deployment/ocis_ldap/) - create users and groups in LDAP -- Use your preferred browser to access the build-in webUI (by default: https://localhost:9200) +- Use your preferred browser (Firefox 94-96, Chrome 92-97, Opera 81-82, Edge 96-97, Safari 14-15) to access the build-in webUI (by default: https://localhost:9200) | Test Case | Expected Result | Comment | |--------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------|---------| From 97bb3b1376a9a95b7ac08e33cffead73c12077cb Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Wed, 6 Apr 2022 09:52:52 +0545 Subject: [PATCH 14/17] fix to supported storage systems --- docs/ocis/development/beta-testplan.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ocis/development/beta-testplan.md b/docs/ocis/development/beta-testplan.md index b8953cf3d..2456a0393 100644 --- a/docs/ocis/development/beta-testplan.md +++ b/docs/ocis/development/beta-testplan.md @@ -18,7 +18,7 @@ Some cases have suggested setup steps, but feel free to use other setups. This c - different identity managers (e.g. [different external LDAP](https://owncloud.dev/ocis/deployment/ocis_ldap/), internal IDM) - different reverse proxies (e.g. [traefik](https://owncloud.dev/ocis/deployment/ocis_traefik/)) - different IdPs **TODO documentation link** -- different storage systems ([cephfs](https://owncloud.dev/ocis/storage-backends/cephfs/), decompose fs, [decompose fs on NFS](https://owncloud.dev/ocis/storage-backends/dcfsnfs/), [EOS](https://owncloud.dev/ocis/storage-backends/eos/), [S3](https://owncloud.dev/ocis/deployment/ocis_s3/) ) **are that the things we want to support?** +- different storage systems (decomposedFS on local POSIX (default), [decomposedFS on NFS](https://owncloud.dev/ocis/storage-backends/dcfsnfs/), [S3](https://owncloud.dev/ocis/deployment/ocis_s3/) ) It's a good idea to test ocis in the same environment where you are planning to use it later (with the LDAP server, storage system, etc. of your organisation). From 0defe7665ac64b07e9197c69cfd8a9420a0a91f1 Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Wed, 6 Apr 2022 09:54:17 +0545 Subject: [PATCH 15/17] tip about SSL certificates --- docs/ocis/development/beta-testplan.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/ocis/development/beta-testplan.md b/docs/ocis/development/beta-testplan.md index 2456a0393..afb6d9d0f 100644 --- a/docs/ocis/development/beta-testplan.md +++ b/docs/ocis/development/beta-testplan.md @@ -29,6 +29,8 @@ to access oCIS remotely please refer to the [Basic Remote Setup]({{< ref "../dep ## additional tips - to allow basic auth (e.g. to easily access oCIS using curl commands) you have to set `PROXY_ENABLE_BASIC_AUTH=true` environment variable +- if you cannot use real SSL Certificates set `OCIS_INSECURE=true` as environment variable + # Testplan From b03323e17d2361fb25262b10f9e6e40204def600 Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Wed, 6 Apr 2022 09:56:16 +0545 Subject: [PATCH 16/17] TUS upload should continue canceled uploads --- docs/ocis/development/beta-testplan.md | 82 +++++++++++++------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/docs/ocis/development/beta-testplan.md b/docs/ocis/development/beta-testplan.md index afb6d9d0f..f1e0ffe3f 100644 --- a/docs/ocis/development/beta-testplan.md +++ b/docs/ocis/development/beta-testplan.md @@ -170,47 +170,47 @@ Prerequisite: - create users and groups in LDAP - Use your preferred browser (Firefox 94-96, Chrome 92-97, Opera 81-82, Edge 96-97, Safari 14-15) to access the build-in webUI (by default: https://localhost:9200) -| Test Case | Expected Result | Comment | -|--------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------|---------| -| Login with the created user | Admin logs in. | | -| Create a text file. | Text editor can open, file is saved. | | -| Create a text file with special characters as name | file is created if the name is legal otherwise an error is displayed | | -| Modify a text file. | File can be modified, no problems found. | | -| Rename a file. | File is renamed. | | -| Upload a file. | File is uploaded, no problems found. | | -| Upload multiple files at once. | Files are uploaded, no problems found. | | -| delete all content of a folder at once. | Folder is cleanded, items are visible in the trashbin | | -| Overwrite a file by uploading a new version. | File is uploaded and overwritten, file versions are displayed | | -| Overwrite a file by uploading a new version, restore the original version. | File is restored correctly | | -| upload a huge file | File is uploaded, no problems found. | | -| upload a huge file, cancel the upload, restart the upload | File is uploaded, no problems founnd. | | -| Remove a file. | File is removed correctly, it appears in the trashbin. | | -| Restore the deleted file from trashbin | File is restores correctly | | -| Remove multiple files that have the same name but are located in different folders | Files are removed correctly, they appear in the trashbin. | | -| Restore some of the deleted files from trashbin | Files are restored correctly in the correct folders. | | -| Restore some of the deleted files from trashbin, but delete the original containing folder before | Files are restored correctly | | -| Clean files from the trashbin | files are permanetly deleted | | -| Create a lot of files, delete a lot of files, empty the trashbin | trashbin is cleaned | | -| Move a file inside a folder. | There are not problems on the process. | | -| Move a file inside a folder that already contains a file with the same name | File is not moved, content in the destination is not overwritten | | -| Create a folder. | Folder is created, no MKCOL problems appear. | | -| Create a folder with special characters as name | Folder is created if the name is legal otherwise an error is displayed | | -| Create a folder with a name of an already existing file/folder | Folder is not created, an error is displayed | | -| Create a folder with a lot of subfolders, use special characters in the name | Folder is created, no MKCOL problems appear. | | -| Delete a folder. | Folder is removed. | | -| Move a folder inside another. | No problems while moving the folder. | | -| open images in mediaviewer | files are displayed correctly. | | -| open videos in mediaviewer | files are displayed correctly. | | -| switch through videos and images in mediaviewer | files are displayed correctly. | | -| Share a file by public link. | Link is created and can be accessed. | | -| Share a folder by public link. | Link is created and can be accessed. | | -| Share a file with another user. | It is shared correctly. | | -| Share a folder with another user. | It is shared correctly. | | -| Share a file with a group. | It is shared correctly. | | -| Share a folder with a group. | It is shared correctly. | | -| Share a folder with userB giving edit permissions. As userB do CRUD operations on items inside the received folder | userB doesn't find any problem while interacting with files. | | -| Use your mobile device to access the UI | All elements reachable | | -| do tests mentioned in the [spaces](#spaces) section using the web-UI | | | +| Test Case | Expected Result | Comment | +|--------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------|---------| +| Login with the created user | Admin logs in. | | +| Create a text file. | Text editor can open, file is saved. | | +| Create a text file with special characters as name | file is created if the name is legal otherwise an error is displayed | | +| Modify a text file. | File can be modified, no problems found. | | +| Rename a file. | File is renamed. | | +| Upload a file. | File is uploaded, no problems found. | | +| Upload multiple files at once. | Files are uploaded, no problems found. | | +| delete all content of a folder at once. | Folder is cleanded, items are visible in the trashbin | | +| Overwrite a file by uploading a new version. | File is uploaded and overwritten, file versions are displayed | | +| Overwrite a file by uploading a new version, restore the original version. | File is restored correctly | | +| upload a huge file | File is uploaded, no problems found. | | +| upload a huge file, cancel the upload, restart the upload | Upload continues at the position where it was cancelled, file is uploaded completely. | | +| Remove a file. | File is removed correctly, it appears in the trashbin. | | +| Restore the deleted file from trashbin | File is restores correctly | | +| Remove multiple files that have the same name but are located in different folders | Files are removed correctly, they appear in the trashbin. | | +| Restore some of the deleted files from trashbin | Files are restored correctly in the correct folders. | | +| Restore some of the deleted files from trashbin, but delete the original containing folder before | Files are restored correctly | | +| Clean files from the trashbin | files are permanetly deleted | | +| Create a lot of files, delete a lot of files, empty the trashbin | trashbin is cleaned | | +| Move a file inside a folder. | There are not problems on the process. | | +| Move a file inside a folder that already contains a file with the same name | File is not moved, content in the destination is not overwritten | | +| Create a folder. | Folder is created, no MKCOL problems appear. | | +| Create a folder with special characters as name | Folder is created if the name is legal otherwise an error is displayed | | +| Create a folder with a name of an already existing file/folder | Folder is not created, an error is displayed | | +| Create a folder with a lot of subfolders, use special characters in the name | Folder is created, no MKCOL problems appear. | | +| Delete a folder. | Folder is removed. | | +| Move a folder inside another. | No problems while moving the folder. | | +| open images in mediaviewer | files are displayed correctly. | | +| open videos in mediaviewer | files are displayed correctly. | | +| switch through videos and images in mediaviewer | files are displayed correctly. | | +| Share a file by public link. | Link is created and can be accessed. | | +| Share a folder by public link. | Link is created and can be accessed. | | +| Share a file with another user. | It is shared correctly. | | +| Share a folder with another user. | It is shared correctly. | | +| Share a file with a group. | It is shared correctly. | | +| Share a folder with a group. | It is shared correctly. | | +| Share a folder with userB giving edit permissions. As userB do CRUD operations on items inside the received folder | userB doesn't find any problem while interacting with files. | | +| Use your mobile device to access the UI | All elements reachable | | +| do tests mentioned in the [spaces](#spaces) section using the web-UI | | | ## Desktop Client From d84a6ead5be40a305bb721e59c44467875e67bf5 Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Wed, 6 Apr 2022 10:17:02 +0545 Subject: [PATCH 17/17] small fixes --- docs/ocis/development/beta-testplan.md | 82 +++++++++++++------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/docs/ocis/development/beta-testplan.md b/docs/ocis/development/beta-testplan.md index f1e0ffe3f..8c11b2309 100644 --- a/docs/ocis/development/beta-testplan.md +++ b/docs/ocis/development/beta-testplan.md @@ -23,7 +23,7 @@ Some cases have suggested setup steps, but feel free to use other setups. This c It's a good idea to test ocis in the same environment where you are planning to use it later (with the LDAP server, storage system, etc. of your organisation). # run oCIS -For a quick start, please have a look into the [getting started documentation of oCIS]({{< ref "../getting-started/run-ocis" >}}) +For a quick start, please have a look into the [getting started documentation of oCIS]({{< ref "../getting-started/#run-ocis" >}}) If you would like to access oCIS remotely please refer to the [Basic Remote Setup]({{< ref "../deployment/basic-remote-setup" >}}) section. @@ -46,16 +46,16 @@ documentations resources: - [sharing API is compatible to ownCloud 10](https://doc.owncloud.com/server/10.9/developer_manual/core/apis/ocs-share-api.html) - [webDav operations](#webdav) -| Test Case | Expected Result | Example / Comment | -|-------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------|-------------------| -| share file / folder to a group | member of the group can access shared item | | -| share file / folder to a group, remove member from group in LDAP | removed member should not have access to the shared item | | -| share file / folder to a group with different permissions, as receiver try to violate the permissions | receiver should not be able to violate the permissions | | -| try to login with wrong credentials | login should not be possible | | -| set a quota in LDAP, upload files till the quota is exceeded | upload should work till quota is full, uploads should not work when quota is full | | -| try to access files / folders of other users | access should not be possible | | -| try to share with non-existing users and groups | sharing should not be possible | | -| try to share with user/groups-names that contain special characters | sharing should be possible, access shares with that user does not create any problems | | +| Test Case | Expected Result | Comment | +|-------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------|---------| +| share file / folder to a group | member of the group can access shared item | | +| share file / folder to a group, remove member from group in LDAP | removed member should not have access to the shared item | | +| share file / folder to a group with different permissions, as receiver try to violate the permissions | receiver should not be able to violate the permissions | | +| try to login with wrong credentials | login should not be possible | | +| set a quota in LDAP, upload files till the quota is exceeded | upload should work till quota is full, uploads should not work when quota is full | | +| try to access files / folders of other users | access should not be possible | | +| try to share with non-existing users and groups | sharing should not be possible | | +| try to share with user/groups-names that contain special characters | sharing should be possible, access shares with that user does not create any problems | | ## other sharing @@ -65,7 +65,7 @@ documentations resources: - [sharing API is compatible to ownCloud 10](https://doc.owncloud.com/server/10.9/developer_manual/core/apis/ocs-share-api.html) - [webDav operations](#webdav) -| Test Case | Expected Result | Example / Comment | +| Test Case | Expected Result | Comment | |---------------------------------------------------------------------------------------|-----------------------------------------------------------------------|-----------------------------------------------------------| | share a file/folder with the same name from different users | receiver can accept and access both file/folders and distinguish them | [known bug](https://github.com/owncloud/ocis/issues/2131) | | share a file/folder with the same name but different permissions from different users | receiver can access both file/folders according to the permissions | [known bug](https://github.com/owncloud/ocis/issues/2131) | @@ -84,10 +84,10 @@ documentations resources: documentations resources: - [sharing API is compatible to ownCloud 10](https://doc.owncloud.com/server/10.9/developer_manual/core/apis/ocs-share-api.html) -| Test Case | Expected Result | Example / Comment | -|------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------|-------------------| -| share file / folder to a group in one implementation (use different permissions), access the items with the other implementation, try to violate the permissions | receiver should not be able to violate the permissions | | -| share file / folder to a group, remove member from group in LDAP, try to access items with the removed member from both implementations | removed member should not have access to the shared item | | +| Test Case | Expected Result | Comment | +|------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------|---------| +| share file / folder to a group in one implementation (use different permissions), access the items with the other implementation, try to violate the permissions | receiver should not be able to violate the permissions | | +| share file / folder to a group, remove member from group in LDAP, try to access items with the removed member from both implementations | removed member should not have access to the shared item | | ## Spaces @@ -136,31 +136,31 @@ PASSWORD=admin - root: `https:///dav/spaces/` - [example commands for operations](#webdav) -| Test Case | Expected Result | Example / Comment | -|-------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|-------------------| -| create a space | space should exist | | -| create a space with special characters as a name & description | space should exist | | -| create a space, delete the space | space should not exist | | -| create a space, share the space with a user | space should be accessible | | -| create a space, share the space with a group | space should be accessible, space content is shared among all users | | -| create a space, share the space with a group, disable the space | space should not be accessible | | -| create a space, share the space with a user, disable the space, restore the space | space should be accessible | | -| create a space, disable the space, delete the space, restore the space | it should not be possible to restore the space | | -| create a space, disable the space, try to share the space | sharing the space should not be possible | | -| create a space, try delete the space | it should not be possible to delete an enabled space | | -| create & share a space with a group with viewer role, do CRUD file/folder operations with WebDAV | space content is readable but neither space not content should not be writable | | -| create & share a space with a group with editor role, do CRUD file/folder operations with WebDAV | space and content should be writable | | -| create a space, try CRUD file/folder operations with WebDAV on the space with a user that its not shared with | space and content should not be accessible | | -| create a space with a quota, share the space, upload files till the quota is exceeded | upload should work till quota is full, uploads should not work when quota is full | | -| share file/folders from inside a space (see other sharing section) | sharing works and obeys the permissions | | -| create a space, rename the space | new name should be displayed in API calls and web | | -| create a space, change description of the space | new description should be displayed in API calls and web | | -| create a space, set quota, change quota of the space | new quota is obeyed | | -| create a space, set quota, change quota of the space to a value that is lower than the sum of data already stored | new quota is obeyed, new files cannot be uploaded | | -| try the various space operations with invalid data | good error output, server does not crash | | -| try the various space operations without the correct permissions | operations are not possible without sufficient permissions | | -| try the various space operations on personal and virtual spaces | server should not crash, good error responses | | -| try the various space operations sending invalid data (invalid numbers, wrong types, invalid JSON, etc.) | server should not crash, good error responses | | +| Test Case | Expected Result | Comment | +|-------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|---------| +| create a space | space should exist | | +| create a space with special characters as a name & description | space should exist | | +| create a space, delete the space | space should not exist | | +| create a space, share the space with a user | space should be accessible | | +| create a space, share the space with a group | space should be accessible, space content is shared among all users | | +| create a space, share the space with a group, disable the space | space should not be accessible | | +| create a space, share the space with a user, disable the space, restore the space | space should be accessible | | +| create a space, disable the space, delete the space, restore the space | it should not be possible to restore the space | | +| create a space, disable the space, try to share the space | sharing the space should not be possible | | +| create a space, try delete the space | it should not be possible to delete an enabled space | | +| create & share a space with a group with viewer role, do CRUD file/folder operations with WebDAV | space content is readable but neither space not content should not be writable | | +| create & share a space with a group with editor role, do CRUD file/folder operations with WebDAV | space and content should be writable | | +| create a space, try CRUD file/folder operations with WebDAV on the space with a user that its not shared with | space and content should not be accessible | | +| create a space with a quota, share the space, upload files till the quota is exceeded | upload should work till quota is full, uploads should not work when quota is full | | +| share file/folders from inside a space (see other sharing section) | sharing works and obeys the permissions | | +| create a space, rename the space | new name should be displayed in API calls and web | | +| create a space, change description of the space | new description should be displayed in API calls and web | | +| create a space, set quota, change quota of the space | new quota is obeyed | | +| create a space, set quota, change quota of the space to a value that is lower than the sum of data already stored | new quota is obeyed, new files cannot be uploaded | | +| try the various space operations with invalid data | good error output, server does not crash | | +| try the various space operations without the correct permissions | operations are not possible without sufficient permissions | | +| try the various space operations on personal and virtual spaces | server should not crash, good error responses | | +| try the various space operations sending invalid data (invalid numbers, wrong types, invalid JSON, etc.) | server should not crash, good error responses | | ## Web