From 96e753d39069f356c4ebf6814e3c93120ed88f00 Mon Sep 17 00:00:00 2001 From: Danil Date: Sat, 5 Jan 2019 21:47:06 +0200 Subject: [PATCH 1/4] add capabilities api endpoint, test; --- NextCloud.py | 10 ++++++++++ nextcloud/Dockerfile | 2 +- tests/base.py | 1 + tests/docker-compose.yml | 1 + tests/test_capabilities.py | 9 +++++++++ 5 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 tests/test_capabilities.py diff --git a/NextCloud.py b/NextCloud.py index 0324d9c..a274f0a 100644 --- a/NextCloud.py +++ b/NextCloud.py @@ -92,6 +92,7 @@ def __init__(self, endpoint, user, password, js=False): "Activity": Activity(requester), "Notifications": Notifications(requester), "UserLDAP": UserLDAP(requester), + "Capabilities": Capabilities(requester), } for name, location in PUBLIC_API_NAME_CLASS_MAP.items(): setattr(self, name, getattr(self.functionality[location], name)) @@ -112,6 +113,15 @@ def requester(self): return self._requester +class Capabilities(WithRequester): + API_URL = "/ocs/v1.php/cloud/capabilities" + + @nextcloud_method + def get_capabilities(self): + """ Obtain capabilities provided by the Nextcloud server and its apps """ + return self.requester.get() + + class GroupFolders(WithRequester): API_URL = "/apps/groupfolders/folders" diff --git a/nextcloud/Dockerfile b/nextcloud/Dockerfile index ce82b35..1b62041 100644 --- a/nextcloud/Dockerfile +++ b/nextcloud/Dockerfile @@ -1,4 +1,4 @@ -FROM nextcloud:apache +FROM nextcloud:14.0.4-apache RUN apt-get update && apt-get install wget && apt-get clean RUN wget https://github.com/nextcloud/groupfolders/releases/download/v2.0.2/groupfolders-2.0.2.tar.gz -P /tmp \ diff --git a/tests/base.py b/tests/base.py index b54a47e..08e6ce9 100644 --- a/tests/base.py +++ b/tests/base.py @@ -5,6 +5,7 @@ from NextCloud import NextCloud +NEXTCLOUD_VERSION = os.environ.get('NEXTCLOUD_VERSION') NEXTCLOUD_URL = "http://{}:80".format(os.environ['NEXTCLOUD_HOST']) NEXTCLOUD_USERNAME = os.environ.get('NEXTCLOUD_USERNAME') NEXTCLOUD_PASSWORD = os.environ.get('NEXTCLOUD_PASSWORD') diff --git a/tests/docker-compose.yml b/tests/docker-compose.yml index 3fbb305..918ff07 100644 --- a/tests/docker-compose.yml +++ b/tests/docker-compose.yml @@ -38,6 +38,7 @@ services: context: ../ dockerfile: Dockerfile environment: + NEXTCLOUD_VERSION: "14.0.4" NEXTCLOUD_HOST: "app" NEXTCLOUD_USERNAME: "admin" NEXTCLOUD_PASSWORD: "admin" diff --git a/tests/test_capabilities.py b/tests/test_capabilities.py new file mode 100644 index 0000000..b2dfef5 --- /dev/null +++ b/tests/test_capabilities.py @@ -0,0 +1,9 @@ +from .base import BaseTestCase, NEXTCLOUD_VERSION + + +class TestCapabilities(BaseTestCase): + + def test_get_capabilities(self): + res = self.nxc.get_capabilities() + assert res['ocs']['meta']['statuscode'] == self.SUCCESS_CODE + assert res['ocs']['data']['version']['string'] == NEXTCLOUD_VERSION From 7a54f6c010ce86b6ac4c2a8a924ea2fd60acae5b Mon Sep 17 00:00:00 2001 From: Danil Date: Thu, 10 Jan 2019 02:15:48 +0200 Subject: [PATCH 2/4] add nextcloud version as a parameter to docker; move docker-compose environment variables to a file --- .gitignore | 3 --- nextcloud/Dockerfile | 4 +++- tests/.env | 13 +++++++++++++ tests/base.py | 6 +++--- tests/docker-compose.yml | 29 ++++++++++++++++------------- tests/test_capabilities.py | 2 +- 6 files changed, 36 insertions(+), 21 deletions(-) create mode 100644 tests/.env diff --git a/.gitignore b/.gitignore index 7e96f2c..9553194 100644 --- a/.gitignore +++ b/.gitignore @@ -82,9 +82,6 @@ celerybeat-schedule # SageMath parsed files *.sage.py -# dotenv -.env - # virtualenv .venv venv/ diff --git a/nextcloud/Dockerfile b/nextcloud/Dockerfile index 1b62041..504fa43 100644 --- a/nextcloud/Dockerfile +++ b/nextcloud/Dockerfile @@ -1,4 +1,6 @@ -FROM nextcloud:14.0.4-apache +ARG NEXTCLOUD_VERSION + +FROM nextcloud:$NEXTCLOUD_VERSION-apache RUN apt-get update && apt-get install wget && apt-get clean RUN wget https://github.com/nextcloud/groupfolders/releases/download/v2.0.2/groupfolders-2.0.2.tar.gz -P /tmp \ diff --git a/tests/.env b/tests/.env new file mode 100644 index 0000000..3c3edfd --- /dev/null +++ b/tests/.env @@ -0,0 +1,13 @@ +POSTGRES_USER=postgres +POSTGRES_PASSWORD=secret +POSTGRES_DB=nextcloud +POSTGRES_HOST=db + +NEXTCLOUD_VERSION=14 +NEXTCLOUD_HOSTNAME=app +NEXTCLOUD_ADMIN_USER=admin +NEXTCLOUD_ADMIN_PASSWORD=admin + +NEXTCLOUD_HOST=app +NEXTCLOUD_USERNAME=admin +NEXTCLOUD_PASSWORD=admin diff --git a/tests/base.py b/tests/base.py index 08e6ce9..380c85f 100644 --- a/tests/base.py +++ b/tests/base.py @@ -6,9 +6,9 @@ from NextCloud import NextCloud NEXTCLOUD_VERSION = os.environ.get('NEXTCLOUD_VERSION') -NEXTCLOUD_URL = "http://{}:80".format(os.environ['NEXTCLOUD_HOST']) -NEXTCLOUD_USERNAME = os.environ.get('NEXTCLOUD_USERNAME') -NEXTCLOUD_PASSWORD = os.environ.get('NEXTCLOUD_PASSWORD') +NEXTCLOUD_URL = "http://{}:80".format(os.environ['NEXTCLOUD_HOSTNAME']) +NEXTCLOUD_USERNAME = os.environ.get('NEXTCLOUD_ADMIN_USER') +NEXTCLOUD_PASSWORD = os.environ.get('NEXTCLOUD_ADMIN_PASSWORD') class BaseTestCase(TestCase): diff --git a/tests/docker-compose.yml b/tests/docker-compose.yml index 918ff07..73e1fd3 100644 --- a/tests/docker-compose.yml +++ b/tests/docker-compose.yml @@ -7,13 +7,15 @@ services: networks: - backend environment: - POSTGRES_USER: postgres - POSTGRES_PASSWORD: secret + - POSTGRES_USER + - POSTGRES_PASSWORD app: build: context: ../nextcloud dockerfile: Dockerfile + args: + NEXTCLOUD_VERSION: ${NEXTCLOUD_VERSION} restart: always networks: backend: @@ -22,14 +24,15 @@ services: ports: - 8080:80 environment: - POSTGRES_DB: 'nextcloud' - POSTGRES_USER: 'postgres' - POSTGRES_PASSWORD: 'secret' - POSTGRES_HOST: 'db' + - POSTGRES_DB + - POSTGRES_USER + - POSTGRES_PASSWORD + - POSTGRES_HOST - NEXTCLOUD_TRUSTED_DOMAINS: "app" - NEXTCLOUD_ADMIN_USER: "admin" - NEXTCLOUD_ADMIN_PASSWORD: "admin" + - NEXTCLOUD_VERSION + - NEXTCLOUD_TRUSTED_DOMAINS=${NEXTCLOUD_HOSTNAME} + - NEXTCLOUD_ADMIN_USER + - NEXTCLOUD_ADMIN_PASSWORD depends_on: - db @@ -38,10 +41,10 @@ services: context: ../ dockerfile: Dockerfile environment: - NEXTCLOUD_VERSION: "14.0.4" - NEXTCLOUD_HOST: "app" - NEXTCLOUD_USERNAME: "admin" - NEXTCLOUD_PASSWORD: "admin" + - NEXTCLOUD_VERSION + - NEXTCLOUD_HOSTNAME + - NEXTCLOUD_ADMIN_USER + - NEXTCLOUD_ADMIN_PASSWORD networks: backend: aliases: diff --git a/tests/test_capabilities.py b/tests/test_capabilities.py index b2dfef5..13e227a 100644 --- a/tests/test_capabilities.py +++ b/tests/test_capabilities.py @@ -6,4 +6,4 @@ class TestCapabilities(BaseTestCase): def test_get_capabilities(self): res = self.nxc.get_capabilities() assert res['ocs']['meta']['statuscode'] == self.SUCCESS_CODE - assert res['ocs']['data']['version']['string'] == NEXTCLOUD_VERSION + assert str(res['ocs']['data']['version']['major']) == NEXTCLOUD_VERSION From f6d4804e3a7bfeaa7c0494250a39f8e881f7ec25 Mon Sep 17 00:00:00 2001 From: Danil Date: Tue, 15 Jan 2019 00:56:46 +0200 Subject: [PATCH 3/4] docker-compose: switch nextcloud db from postgres to sqlite; delete unused variables from env; fix int types in tests to strings --- tests/.env | 2 -- tests/docker-compose.yml | 23 +---------------------- tests/test_group_folders.py | 8 ++++---- 3 files changed, 5 insertions(+), 28 deletions(-) diff --git a/tests/.env b/tests/.env index 3c3edfd..695ad37 100644 --- a/tests/.env +++ b/tests/.env @@ -9,5 +9,3 @@ NEXTCLOUD_ADMIN_USER=admin NEXTCLOUD_ADMIN_PASSWORD=admin NEXTCLOUD_HOST=app -NEXTCLOUD_USERNAME=admin -NEXTCLOUD_PASSWORD=admin diff --git a/tests/docker-compose.yml b/tests/docker-compose.yml index 73e1fd3..c37b913 100644 --- a/tests/docker-compose.yml +++ b/tests/docker-compose.yml @@ -1,40 +1,19 @@ version: '3' services: - db: - image: postgres:9.6-alpine - restart: always - networks: - - backend - environment: - - POSTGRES_USER - - POSTGRES_PASSWORD - app: build: context: ../nextcloud dockerfile: Dockerfile args: NEXTCLOUD_VERSION: ${NEXTCLOUD_VERSION} - restart: always networks: backend: - aliases: - - app - ports: - - 8080:80 environment: - - POSTGRES_DB - - POSTGRES_USER - - POSTGRES_PASSWORD - - POSTGRES_HOST - - - NEXTCLOUD_VERSION + - SQLITE_DATABASE=nextcloud - NEXTCLOUD_TRUSTED_DOMAINS=${NEXTCLOUD_HOSTNAME} - NEXTCLOUD_ADMIN_USER - NEXTCLOUD_ADMIN_PASSWORD - depends_on: - - db python-api: build: diff --git a/tests/test_group_folders.py b/tests/test_group_folders.py index 55eaa9d..9f08a8f 100644 --- a/tests/test_group_folders.py +++ b/tests/test_group_folders.py @@ -26,7 +26,7 @@ def test_crud_group_folder(self): # retrieve single folder res = self.nxc.get_group_folder(group_folder_id) assert res['ocs']['meta']['statuscode'] == self.SUCCESS_CODE - assert res['ocs']['data']['id'] == group_folder_id + assert str(res['ocs']['data']['id']) == str(group_folder_id) assert res['ocs']['data']['mount_point'] == folder_mount_point # rename group folder @@ -67,7 +67,7 @@ def test_grant_revoke_access_to_group_folder(self): # check that folder has this group res = self.nxc.get_group_folder(group_folder_id) - assert res['ocs']['data']['groups'] == {group_id: Permission.ALL} + assert res['ocs']['data']['groups'] == {group_id: str(Permission.ALL.value)} # revoke access res = self.nxc.revoke_access_to_group_folder(group_folder_id, group_id) @@ -97,7 +97,7 @@ def test_setting_folder_quotas(self): assert res['ocs']['meta']['statuscode'] == self.SUCCESS_CODE and res['ocs']['data'] is True # check if quota changed res = self.nxc.get_group_folder(group_folder_id) - assert res['ocs']['data']['quota'] == QUOTA_ONE_GB + assert str(res['ocs']['data']['quota']) == str(QUOTA_ONE_GB) # clear self.clear(group_folder_ids=[group_folder_id]) @@ -124,7 +124,7 @@ def test_setting_folder_permissions(self): assert res['ocs']['meta']['statuscode'] == self.SUCCESS_CODE and res['ocs']['data'] is True # check if permissions changed res = self.nxc.get_group_folder(group_folder_id) - assert res['ocs']['data']['groups'][group_id] == new_permission + assert str(res['ocs']['data']['groups'][group_id]) == str(new_permission) # clear self.clear(nxc=self.nxc, group_ids=[group_id], group_folder_ids=[group_folder_id]) From 83819944cb50b42bf6f4bdf38bf0e710cfe27691 Mon Sep 17 00:00:00 2001 From: Danil Date: Tue, 15 Jan 2019 00:56:46 +0200 Subject: [PATCH 4/4] docker-compose: switch nextcloud db from postgres to sqlite; delete unused variables from env; fix int types in tests to strings --- tests/docker-compose.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/docker-compose.yml b/tests/docker-compose.yml index c37b913..dffae4f 100644 --- a/tests/docker-compose.yml +++ b/tests/docker-compose.yml @@ -26,8 +26,6 @@ services: - NEXTCLOUD_ADMIN_PASSWORD networks: backend: - aliases: - - python-api volumes: - ../:/usr/src/app