From 5638e5a19347f5c1d9764d6e559ed6cd05b627c3 Mon Sep 17 00:00:00 2001 From: hkad98 Date: Thu, 23 Jun 2022 12:54:41 +0200 Subject: [PATCH] NAS-4024 fix minor inconsistency * renamed method in permission service from set_declarative_permissions to put_declarative_permissions to follow the same name convention as other services * changed input parameter for create_or_update_user and create_or_update_user_group to follow the same convention as other services --- gooddata-sdk/gooddata_sdk/__init__.py | 2 +- .../declarative_model/data_source.py | 2 +- .../{permissions => permission}/__init__.py | 0 .../declarative_model/__init__.py | 0 .../declarative_model/permission.py | 0 .../{permissions => permission}/service.py | 4 +- .../catalog/user/entity_model/user.py | 14 +- .../catalog/user/entity_model/user_group.py | 18 +- .../gooddata_sdk/catalog/user/service.py | 27 +- .../declarative_model/workspace/workspace.py | 2 +- gooddata-sdk/gooddata_sdk/sdk.py | 2 +- .../fixtures/users/update_user_group.json | 577 +++++++++--------- .../tests/catalog/test_catalog_permission.py | 6 +- .../catalog/test_catalog_user_service.py | 38 +- 14 files changed, 353 insertions(+), 339 deletions(-) rename gooddata-sdk/gooddata_sdk/catalog/{permissions => permission}/__init__.py (100%) rename gooddata-sdk/gooddata_sdk/catalog/{permissions => permission}/declarative_model/__init__.py (100%) rename gooddata-sdk/gooddata_sdk/catalog/{permissions => permission}/declarative_model/permission.py (100%) rename gooddata-sdk/gooddata_sdk/catalog/{permissions => permission}/service.py (85%) diff --git a/gooddata-sdk/gooddata_sdk/__init__.py b/gooddata-sdk/gooddata_sdk/__init__.py index 42074fb62..ac1c1690d 100644 --- a/gooddata-sdk/gooddata_sdk/__init__.py +++ b/gooddata-sdk/gooddata_sdk/__init__.py @@ -25,7 +25,7 @@ from gooddata_sdk.catalog.data_source.validation.data_source import DataSourceValidator from gooddata_sdk.catalog.entity import BasicCredentials, TokenCredentialsFromFile from gooddata_sdk.catalog.organization.service import CatalogOrganizationService -from gooddata_sdk.catalog.permissions.declarative_model.permission import CatalogDeclarativeWorkspacePermissions +from gooddata_sdk.catalog.permission.declarative_model.permission import CatalogDeclarativeWorkspacePermissions from gooddata_sdk.catalog.workspace.declarative_model.workspace.workspace import ( CatalogDeclarativeWorkspaceDataFilters, CatalogDeclarativeWorkspaceModel, diff --git a/gooddata-sdk/gooddata_sdk/catalog/data_source/declarative_model/data_source.py b/gooddata-sdk/gooddata_sdk/catalog/data_source/declarative_model/data_source.py index 82079bb6d..c99ae5b99 100644 --- a/gooddata-sdk/gooddata_sdk/catalog/data_source/declarative_model/data_source.py +++ b/gooddata-sdk/gooddata_sdk/catalog/data_source/declarative_model/data_source.py @@ -12,7 +12,7 @@ from gooddata_sdk.catalog.base import Base from gooddata_sdk.catalog.data_source.declarative_model.physical_model.pdm import CatalogDeclarativeTables from gooddata_sdk.catalog.entity import TokenCredentialsFromFile -from gooddata_sdk.catalog.permissions.declarative_model.permission import CatalogDeclarativeDataSourcePermission +from gooddata_sdk.catalog.permission.declarative_model.permission import CatalogDeclarativeDataSourcePermission from gooddata_sdk.utils import create_directory, read_layout_from_file, write_layout_to_file BIGQUERY_TYPE = "BIGQUERY" diff --git a/gooddata-sdk/gooddata_sdk/catalog/permissions/__init__.py b/gooddata-sdk/gooddata_sdk/catalog/permission/__init__.py similarity index 100% rename from gooddata-sdk/gooddata_sdk/catalog/permissions/__init__.py rename to gooddata-sdk/gooddata_sdk/catalog/permission/__init__.py diff --git a/gooddata-sdk/gooddata_sdk/catalog/permissions/declarative_model/__init__.py b/gooddata-sdk/gooddata_sdk/catalog/permission/declarative_model/__init__.py similarity index 100% rename from gooddata-sdk/gooddata_sdk/catalog/permissions/declarative_model/__init__.py rename to gooddata-sdk/gooddata_sdk/catalog/permission/declarative_model/__init__.py diff --git a/gooddata-sdk/gooddata_sdk/catalog/permissions/declarative_model/permission.py b/gooddata-sdk/gooddata_sdk/catalog/permission/declarative_model/permission.py similarity index 100% rename from gooddata-sdk/gooddata_sdk/catalog/permissions/declarative_model/permission.py rename to gooddata-sdk/gooddata_sdk/catalog/permission/declarative_model/permission.py diff --git a/gooddata-sdk/gooddata_sdk/catalog/permissions/service.py b/gooddata-sdk/gooddata_sdk/catalog/permission/service.py similarity index 85% rename from gooddata-sdk/gooddata_sdk/catalog/permissions/service.py rename to gooddata-sdk/gooddata_sdk/catalog/permission/service.py index 59d26d71f..770695171 100644 --- a/gooddata-sdk/gooddata_sdk/catalog/permissions/service.py +++ b/gooddata-sdk/gooddata_sdk/catalog/permission/service.py @@ -1,7 +1,7 @@ # (C) 2022 GoodData Corporation from gooddata_sdk import GoodDataApiClient from gooddata_sdk.catalog.catalog_service_base import CatalogServiceBase -from gooddata_sdk.catalog.permissions.declarative_model.permission import CatalogDeclarativeWorkspacePermissions +from gooddata_sdk.catalog.permission.declarative_model.permission import CatalogDeclarativeWorkspacePermissions class CatalogPermissionService(CatalogServiceBase): @@ -11,7 +11,7 @@ def __init__(self, api_client: GoodDataApiClient) -> None: def get_declarative_permissions(self, workspace_id: str) -> CatalogDeclarativeWorkspacePermissions: return CatalogDeclarativeWorkspacePermissions.from_api(self._layout_api.get_workspace_permissions(workspace_id)) - def set_declarative_permissions( + def put_declarative_permissions( self, workspace_id: str, declarative_workspace_permissions: CatalogDeclarativeWorkspacePermissions ) -> None: self._layout_api.set_workspace_permissions( diff --git a/gooddata-sdk/gooddata_sdk/catalog/user/entity_model/user.py b/gooddata-sdk/gooddata_sdk/catalog/user/entity_model/user.py index a295ca8ea..3f0fc7ab0 100644 --- a/gooddata-sdk/gooddata_sdk/catalog/user/entity_model/user.py +++ b/gooddata-sdk/gooddata_sdk/catalog/user/entity_model/user.py @@ -20,12 +20,10 @@ def client_class() -> Type[JsonApiUserInDocument]: return JsonApiUserInDocument @classmethod - def create_user( + def init( cls, user_id: str, authentication_id: Optional[str] = None, user_group_ids: Optional[List[str]] = None ) -> CatalogUserDocument: - attributes = CatalogUserAttributes(authentication_id=authentication_id) - relationships = CatalogUserRelationships.create_user_relationships(user_group_ids=user_group_ids) - user = CatalogUser(id=user_id, attributes=attributes, relationships=relationships) + user = CatalogUser.init(user_id=user_id, authentication_id=authentication_id, user_group_ids=user_group_ids) return cls(data=user) def update_user(self, authentication_id: Optional[str] = None, user_group_ids: Optional[List[str]] = None) -> None: @@ -45,6 +43,14 @@ class CatalogUser(Base): def client_class() -> Type[JsonApiUserIn]: return JsonApiUserIn + @classmethod + def init( + cls, user_id: str, authentication_id: Optional[str] = None, user_group_ids: Optional[List[str]] = None + ) -> CatalogUser: + attributes = CatalogUserAttributes(authentication_id=authentication_id) + relationships = CatalogUserRelationships.create_user_relationships(user_group_ids=user_group_ids) + return cls(id=user_id, attributes=attributes, relationships=relationships) + @property def get_user_groups(self) -> List[str]: return self.relationships.get_user_groups if self.relationships is not None else [] diff --git a/gooddata-sdk/gooddata_sdk/catalog/user/entity_model/user_group.py b/gooddata-sdk/gooddata_sdk/catalog/user/entity_model/user_group.py index 9a3965254..1860c4bde 100644 --- a/gooddata-sdk/gooddata_sdk/catalog/user/entity_model/user_group.py +++ b/gooddata-sdk/gooddata_sdk/catalog/user/entity_model/user_group.py @@ -19,11 +19,8 @@ def client_class() -> Type[JsonApiUserGroupInDocument]: return JsonApiUserGroupInDocument @classmethod - def create_user_group( - cls, user_group_id: str, user_group_parents_id: Optional[List[str]] = None - ) -> CatalogUserGroupDocument: - relationships = CatalogUserGroupRelationships.create_user_group_relationships(user_group_parents_id) - return cls(data=CatalogUserGroup(id=user_group_id, relationships=relationships)) + def init(cls, user_group_id: str, user_group_parent_ids: Optional[List[str]] = None) -> CatalogUserGroupDocument: + return cls(data=CatalogUserGroup.init(user_group_id=user_group_id, user_group_parent_ids=user_group_parent_ids)) def update_user_group(self, user_group_parents_id: Optional[List[str]] = None) -> None: relationships = CatalogUserGroupRelationships.create_user_group_relationships(user_group_parents_id) @@ -39,6 +36,11 @@ class CatalogUserGroup(Base): def client_class() -> Type[JsonApiUserGroupIn]: return JsonApiUserGroupIn + @classmethod + def init(cls, user_group_id: str, user_group_parent_ids: Optional[List[str]] = None) -> CatalogUserGroup: + relationships = CatalogUserGroupRelationships.create_user_group_relationships(user_group_parent_ids) + return cls(id=user_group_id, relationships=relationships) + @property def get_parents(self) -> List[str]: return self.relationships.get_parents if self.relationships is not None else [] @@ -50,12 +52,12 @@ class CatalogUserGroupRelationships(Base): @classmethod def create_user_group_relationships( - cls, user_group_parents_id: Optional[List[str]] + cls, user_group_parent_ids: Optional[List[str]] ) -> CatalogUserGroupRelationships: parents = None - if user_group_parents_id is not None: + if user_group_parent_ids is not None: parents = CatalogUserGroupParents( - data=[CatalogUserGroup(id=user_group_parent_id) for user_group_parent_id in user_group_parents_id] + data=[CatalogUserGroup(id=user_group_parent_id) for user_group_parent_id in user_group_parent_ids] ) return cls(parents=parents) diff --git a/gooddata-sdk/gooddata_sdk/catalog/user/service.py b/gooddata-sdk/gooddata_sdk/catalog/user/service.py index 533f88d36..96d888633 100644 --- a/gooddata-sdk/gooddata_sdk/catalog/user/service.py +++ b/gooddata-sdk/gooddata_sdk/catalog/user/service.py @@ -3,7 +3,7 @@ import functools from pathlib import Path -from typing import List, Optional +from typing import List from gooddata_metadata_client.exceptions import NotFoundException from gooddata_sdk.catalog.catalog_service_base import CatalogServiceBase @@ -39,16 +39,13 @@ def get_user(self, user_id: str) -> CatalogUser: ) return CatalogUser.from_dict(user_dict, camel_case=False) - def create_or_update_user( - self, user_id: str, authentication_id: Optional[str] = None, user_groups: Optional[list[str]] = None - ) -> None: + def create_or_update_user(self, user: CatalogUser) -> None: try: - user = self.get_user(user_id=user_id) + self.get_user(user_id=user.id) user_document = CatalogUserDocument(data=user) - user_document.update_user(authentication_id=authentication_id, user_group_ids=user_groups) - self._entities_api.update_entity_users(id=user_id, json_api_user_in_document=user_document.to_api()) + self._entities_api.update_entity_users(id=user.id, json_api_user_in_document=user_document.to_api()) except NotFoundException: - user_document = CatalogUserDocument.create_user(user_id, authentication_id, user_groups) + user_document = CatalogUserDocument(data=user) self._entities_api.create_entity_users(json_api_user_in_document=user_document.to_api()) def delete_user(self, user_id: str) -> None: @@ -60,19 +57,17 @@ def get_user_group(self, user_group_id: str) -> CatalogUserGroup: ) return CatalogUserGroup.from_dict(user_group, camel_case=False) - def create_or_update_user_group( - self, user_group_id: str, user_group_parents_id: Optional[List[str]] = None - ) -> None: + def create_or_update_user_group(self, user_group: CatalogUserGroup) -> None: try: - user_group = self.get_user_group(user_group_id=user_group_id) + self.get_user_group(user_group_id=user_group.id) user_group_document = CatalogUserGroupDocument(data=user_group) - user_group_document.update_user_group(user_group_parents_id=user_group_parents_id) + user_group_document.update_user_group(user_group_parents_id=user_group.get_parents) self._entities_api.update_entity_user_groups( - id=user_group_id, json_api_user_group_in_document=user_group_document.to_api() + id=user_group.id, json_api_user_group_in_document=user_group_document.to_api() ) except NotFoundException: - user_group_document = CatalogUserGroupDocument.create_user_group( - user_group_id=user_group_id, user_group_parents_id=user_group_parents_id + user_group_document = CatalogUserGroupDocument.init( + user_group_id=user_group.id, user_group_parent_ids=user_group.get_parents ) self._entities_api.create_entity_user_groups(user_group_document.to_api()) diff --git a/gooddata-sdk/gooddata_sdk/catalog/workspace/declarative_model/workspace/workspace.py b/gooddata-sdk/gooddata_sdk/catalog/workspace/declarative_model/workspace/workspace.py index 562c47667..5e1d1a95c 100644 --- a/gooddata-sdk/gooddata_sdk/catalog/workspace/declarative_model/workspace/workspace.py +++ b/gooddata-sdk/gooddata_sdk/catalog/workspace/declarative_model/workspace/workspace.py @@ -16,7 +16,7 @@ from gooddata_metadata_client.model.declarative_workspaces import DeclarativeWorkspaces from gooddata_sdk.catalog.base import Base from gooddata_sdk.catalog.identifier import CatalogWorkspaceIdentifier -from gooddata_sdk.catalog.permissions.declarative_model.permission import ( +from gooddata_sdk.catalog.permission.declarative_model.permission import ( CatalogDeclarativeSingleWorkspacePermission, CatalogDeclarativeWorkspaceHierarchyPermission, ) diff --git a/gooddata-sdk/gooddata_sdk/sdk.py b/gooddata-sdk/gooddata_sdk/sdk.py index 42618382f..ea930764a 100644 --- a/gooddata-sdk/gooddata_sdk/sdk.py +++ b/gooddata-sdk/gooddata_sdk/sdk.py @@ -5,7 +5,7 @@ from gooddata_sdk.catalog.data_source.service import CatalogDataSourceService from gooddata_sdk.catalog.organization.service import CatalogOrganizationService -from gooddata_sdk.catalog.permissions.service import CatalogPermissionService +from gooddata_sdk.catalog.permission.service import CatalogPermissionService from gooddata_sdk.catalog.user.service import CatalogUserService from gooddata_sdk.catalog.workspace.service import CatalogWorkspaceContentService, CatalogWorkspaceService from gooddata_sdk.client import GoodDataApiClient diff --git a/gooddata-sdk/tests/catalog/fixtures/users/update_user_group.json b/gooddata-sdk/tests/catalog/fixtures/users/update_user_group.json index 2f1757f51..80c114e6c 100644 --- a/gooddata-sdk/tests/catalog/fixtures/users/update_user_group.json +++ b/gooddata-sdk/tests/catalog/fixtures/users/update_user_group.json @@ -24,64 +24,64 @@ "message": "" }, "headers": { + "Content-Type": [ + "application/vnd.gooddata.api+json" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "X-Frame-Options": [ + "DENY" + ], + "Set-Cookie": [ + "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + ], "Access-Control-Expose-Headers": [ "Content-Disposition, Content-Length, Content-Range, Set-Cookie" ], + "GoodData-Deployment": [ + "aio" + ], + "Expires": [ + "0" + ], "Vary": [ "Origin", "Access-Control-Request-Method", "Access-Control-Request-Headers" ], - "X-GDC-TRACE-ID": [ - "f50b708659765ade" - ], - "Connection": [ - "keep-alive" + "X-XSS-Protection": [ + "1; mode=block" ], - "GoodData-Deployment": [ - "aio" + "Server": [ + "nginx" ], - "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "Transfer-Encoding": [ + "chunked" ], - "Pragma": [ - "no-cache" + "Date": [ + "Thu, 23 Jun 2022 13:04:18 GMT" ], - "Content-Type": [ - "application/vnd.gooddata.api+json" + "X-GDC-TRACE-ID": [ + "889b21ef1e85c218" ], "Access-Control-Allow-Credentials": [ "true" ], - "Content-Security-Policy": [ - "default-src 'self' *.wistia.com *.wistia.net; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.wistia.com *.wistia.net src.litix.io matomo.anywhere.gooddata.com code.jquery.com unpkg.com cdn.jsdelivr.net cdnjs.cloudflare.com; img-src 'self' data: blob: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net privacy-policy.truste.com www.gooddata.com; style-src 'self' 'unsafe-inline' fonts.googleapis.com cdn.jsdelivr.net fast.fonts.net; font-src 'self' data: fonts.gstatic.com *.alicdn.com *.wistia.com cdn.jsdelivr.net info.gooddata.com; frame-src 'self'; object-src 'none'; worker-src 'self' blob:; child-src blob:; connect-src 'self' *.tiles.mapbox.com *.mapbox.com *.litix.io *.wistia.com embedwistia-a.akamaihd.net matomo.anywhere.gooddata.com; media-src 'self' blob: data: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net" - ], - "Date": [ - "Thu, 16 Jun 2022 16:06:52 GMT" - ], "Permission-Policy": [ "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" ], - "Expires": [ - "0" - ], - "Transfer-Encoding": [ - "chunked" + "Connection": [ + "keep-alive" ], "X-Content-Type-Options": [ "nosniff" ], - "Server": [ - "nginx" - ], - "X-XSS-Protection": [ - "1; mode=block" - ], - "Set-Cookie": [ - "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + "Pragma": [ + "no-cache" ], - "X-Frame-Options": [ - "DENY" + "Content-Security-Policy": [ + "default-src 'self' *.wistia.com *.wistia.net; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.wistia.com *.wistia.net src.litix.io matomo.anywhere.gooddata.com code.jquery.com unpkg.com cdn.jsdelivr.net cdnjs.cloudflare.com; img-src 'self' data: blob: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net privacy-policy.truste.com www.gooddata.com; style-src 'self' 'unsafe-inline' fonts.googleapis.com cdn.jsdelivr.net fast.fonts.net; font-src 'self' data: fonts.gstatic.com *.alicdn.com *.wistia.com cdn.jsdelivr.net info.gooddata.com; frame-src 'self'; object-src 'none'; worker-src 'self' blob:; child-src blob:; connect-src 'self' *.tiles.mapbox.com *.mapbox.com *.litix.io *.wistia.com embedwistia-a.akamaihd.net matomo.anywhere.gooddata.com; media-src 'self' blob: data: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net" ] }, "body": { @@ -92,7 +92,7 @@ { "request": { "method": "GET", - "uri": "http://localhost:3000/api/v1/entities/userGroups/demoGroup?include=ALL", + "uri": "http://localhost:3000/api/v1/entities/userGroups?include=userGroups&page=0&size=500", "body": null, "headers": { "Accept": [ @@ -112,83 +112,80 @@ "message": "" }, "headers": { + "Content-Type": [ + "application/vnd.gooddata.api+json" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "X-Frame-Options": [ + "DENY" + ], + "Set-Cookie": [ + "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + ], "Access-Control-Expose-Headers": [ "Content-Disposition, Content-Length, Content-Range, Set-Cookie" ], + "GoodData-Deployment": [ + "aio" + ], + "Expires": [ + "0" + ], "Vary": [ "Origin", "Access-Control-Request-Method", "Access-Control-Request-Headers" ], - "X-GDC-TRACE-ID": [ - "03e0eba38abbbe7f" - ], - "Connection": [ - "keep-alive" + "X-XSS-Protection": [ + "1; mode=block" ], - "GoodData-Deployment": [ - "aio" + "Server": [ + "nginx" ], - "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "Transfer-Encoding": [ + "chunked" ], - "Pragma": [ - "no-cache" + "Date": [ + "Thu, 23 Jun 2022 13:04:18 GMT" ], - "Content-Type": [ - "application/vnd.gooddata.api+json" + "X-GDC-TRACE-ID": [ + "6f30645d018d46cd" ], "Access-Control-Allow-Credentials": [ "true" ], - "Content-Security-Policy": [ - "default-src 'self' *.wistia.com *.wistia.net; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.wistia.com *.wistia.net src.litix.io matomo.anywhere.gooddata.com code.jquery.com unpkg.com cdn.jsdelivr.net cdnjs.cloudflare.com; img-src 'self' data: blob: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net privacy-policy.truste.com www.gooddata.com; style-src 'self' 'unsafe-inline' fonts.googleapis.com cdn.jsdelivr.net fast.fonts.net; font-src 'self' data: fonts.gstatic.com *.alicdn.com *.wistia.com cdn.jsdelivr.net info.gooddata.com; frame-src 'self'; object-src 'none'; worker-src 'self' blob:; child-src blob:; connect-src 'self' *.tiles.mapbox.com *.mapbox.com *.litix.io *.wistia.com embedwistia-a.akamaihd.net matomo.anywhere.gooddata.com; media-src 'self' blob: data: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net" - ], - "Date": [ - "Thu, 16 Jun 2022 16:06:52 GMT" - ], "Permission-Policy": [ "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" ], - "Expires": [ - "0" - ], - "Transfer-Encoding": [ - "chunked" + "Connection": [ + "keep-alive" ], "X-Content-Type-Options": [ "nosniff" ], - "Server": [ - "nginx" - ], - "X-XSS-Protection": [ - "1; mode=block" - ], - "Set-Cookie": [ - "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + "Pragma": [ + "no-cache" ], - "X-Frame-Options": [ - "DENY" + "Content-Security-Policy": [ + "default-src 'self' *.wistia.com *.wistia.net; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.wistia.com *.wistia.net src.litix.io matomo.anywhere.gooddata.com code.jquery.com unpkg.com cdn.jsdelivr.net cdnjs.cloudflare.com; img-src 'self' data: blob: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net privacy-policy.truste.com www.gooddata.com; style-src 'self' 'unsafe-inline' fonts.googleapis.com cdn.jsdelivr.net fast.fonts.net; font-src 'self' data: fonts.gstatic.com *.alicdn.com *.wistia.com cdn.jsdelivr.net info.gooddata.com; frame-src 'self'; object-src 'none'; worker-src 'self' blob:; child-src blob:; connect-src 'self' *.tiles.mapbox.com *.mapbox.com *.litix.io *.wistia.com embedwistia-a.akamaihd.net matomo.anywhere.gooddata.com; media-src 'self' blob: data: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net" ] }, "body": { - "string": "{\"data\":{\"attributes\":{},\"id\":\"demoGroup\",\"type\":\"userGroup\"},\"links\":{\"self\":\"http://localhost:3000/api/v1/entities/userGroups/demoGroup?include=ALL\"}}" + "string": "{\"data\":[{\"attributes\":{},\"id\":\"adminGroup\",\"links\":{\"self\":\"http://localhost:3000/api/v1/entities/userGroups/adminGroup\"},\"type\":\"userGroup\"},{\"attributes\":{},\"id\":\"demoGroup\",\"links\":{\"self\":\"http://localhost:3000/api/v1/entities/userGroups/demoGroup\"},\"type\":\"userGroup\"},{\"attributes\":{},\"id\":\"adminQA1Group\",\"links\":{\"self\":\"http://localhost:3000/api/v1/entities/userGroups/adminQA1Group\"},\"relationships\":{\"parents\":{\"data\":[{\"id\":\"adminGroup\",\"type\":\"userGroup\"}]}},\"type\":\"userGroup\"},{\"attributes\":{},\"id\":\"visitorsGroup\",\"links\":{\"self\":\"http://localhost:3000/api/v1/entities/userGroups/visitorsGroup\"},\"relationships\":{\"parents\":{\"data\":[{\"id\":\"demoGroup\",\"type\":\"userGroup\"}]}},\"type\":\"userGroup\"}],\"included\":[{\"attributes\":{},\"id\":\"adminGroup\",\"links\":{\"self\":\"http://localhost:3000/api/v1/entities/userGroups/adminGroup\"},\"type\":\"userGroup\"},{\"attributes\":{},\"id\":\"demoGroup\",\"links\":{\"self\":\"http://localhost:3000/api/v1/entities/userGroups/demoGroup\"},\"type\":\"userGroup\"}],\"links\":{\"self\":\"http://localhost:3000/api/v1/entities/userGroups?include=userGroups&page=0&size=500\",\"next\":\"http://localhost:3000/api/v1/entities/userGroups?include=userGroups&page=1&size=500\"}}" } } }, { "request": { - "method": "PUT", - "uri": "http://localhost:3000/api/v1/entities/userGroups/demoGroup", - "body": "{\"data\": {\"id\": \"demoGroup\", \"type\": \"userGroup\", \"relationships\": {\"parents\": {\"data\": []}}}}", + "method": "GET", + "uri": "http://localhost:3000/api/v1/entities/userGroups/demoGroup?include=ALL", + "body": null, "headers": { "Accept": [ "application/vnd.gooddata.api+json" ], - "Content-Type": [ - "application/vnd.gooddata.api+json" - ], "X-Requested-With": [ "XMLHttpRequest" ], @@ -203,80 +200,83 @@ "message": "" }, "headers": { + "Content-Type": [ + "application/vnd.gooddata.api+json" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "X-Frame-Options": [ + "DENY" + ], + "Set-Cookie": [ + "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + ], "Access-Control-Expose-Headers": [ "Content-Disposition, Content-Length, Content-Range, Set-Cookie" ], + "GoodData-Deployment": [ + "aio" + ], + "Expires": [ + "0" + ], "Vary": [ "Origin", "Access-Control-Request-Method", "Access-Control-Request-Headers" ], - "X-GDC-TRACE-ID": [ - "9488a3a5a8366461" - ], - "Connection": [ - "keep-alive" + "X-XSS-Protection": [ + "1; mode=block" ], - "GoodData-Deployment": [ - "aio" + "Server": [ + "nginx" ], - "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "Transfer-Encoding": [ + "chunked" ], - "Pragma": [ - "no-cache" + "Date": [ + "Thu, 23 Jun 2022 13:04:18 GMT" ], - "Content-Type": [ - "application/vnd.gooddata.api+json" + "X-GDC-TRACE-ID": [ + "035271beff40fb9d" ], "Access-Control-Allow-Credentials": [ "true" ], - "Content-Security-Policy": [ - "default-src 'self' *.wistia.com *.wistia.net; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.wistia.com *.wistia.net src.litix.io matomo.anywhere.gooddata.com code.jquery.com unpkg.com cdn.jsdelivr.net cdnjs.cloudflare.com; img-src 'self' data: blob: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net privacy-policy.truste.com www.gooddata.com; style-src 'self' 'unsafe-inline' fonts.googleapis.com cdn.jsdelivr.net fast.fonts.net; font-src 'self' data: fonts.gstatic.com *.alicdn.com *.wistia.com cdn.jsdelivr.net info.gooddata.com; frame-src 'self'; object-src 'none'; worker-src 'self' blob:; child-src blob:; connect-src 'self' *.tiles.mapbox.com *.mapbox.com *.litix.io *.wistia.com embedwistia-a.akamaihd.net matomo.anywhere.gooddata.com; media-src 'self' blob: data: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net" - ], - "Date": [ - "Thu, 16 Jun 2022 16:06:52 GMT" - ], "Permission-Policy": [ "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" ], - "Expires": [ - "0" - ], - "Transfer-Encoding": [ - "chunked" + "Connection": [ + "keep-alive" ], "X-Content-Type-Options": [ "nosniff" ], - "Server": [ - "nginx" - ], - "X-XSS-Protection": [ - "1; mode=block" - ], - "Set-Cookie": [ - "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + "Pragma": [ + "no-cache" ], - "X-Frame-Options": [ - "DENY" + "Content-Security-Policy": [ + "default-src 'self' *.wistia.com *.wistia.net; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.wistia.com *.wistia.net src.litix.io matomo.anywhere.gooddata.com code.jquery.com unpkg.com cdn.jsdelivr.net cdnjs.cloudflare.com; img-src 'self' data: blob: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net privacy-policy.truste.com www.gooddata.com; style-src 'self' 'unsafe-inline' fonts.googleapis.com cdn.jsdelivr.net fast.fonts.net; font-src 'self' data: fonts.gstatic.com *.alicdn.com *.wistia.com cdn.jsdelivr.net info.gooddata.com; frame-src 'self'; object-src 'none'; worker-src 'self' blob:; child-src blob:; connect-src 'self' *.tiles.mapbox.com *.mapbox.com *.litix.io *.wistia.com embedwistia-a.akamaihd.net matomo.anywhere.gooddata.com; media-src 'self' blob: data: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net" ] }, "body": { - "string": "{\"data\":{\"attributes\":{},\"id\":\"demoGroup\",\"type\":\"userGroup\"},\"links\":{\"self\":\"http://localhost:3000/api/v1/entities/userGroups/demoGroup\"}}" + "string": "{\"data\":{\"attributes\":{},\"id\":\"demoGroup\",\"type\":\"userGroup\"},\"links\":{\"self\":\"http://localhost:3000/api/v1/entities/userGroups/demoGroup?include=ALL\"}}" } } }, { "request": { - "method": "GET", - "uri": "http://localhost:3000/api/v1/entities/userGroups/demoGroup?include=ALL", - "body": null, + "method": "PUT", + "uri": "http://localhost:3000/api/v1/entities/userGroups/demoGroup", + "body": "{\"data\": {\"id\": \"demoGroup\", \"type\": \"userGroup\", \"relationships\": {\"parents\": {\"data\": []}}}}", "headers": { "Accept": [ "application/vnd.gooddata.api+json" ], + "Content-Type": [ + "application/vnd.gooddata.api+json" + ], "X-Requested-With": [ "XMLHttpRequest" ], @@ -291,77 +291,80 @@ "message": "" }, "headers": { + "Content-Type": [ + "application/vnd.gooddata.api+json" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "X-Frame-Options": [ + "DENY" + ], + "Set-Cookie": [ + "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + ], "Access-Control-Expose-Headers": [ "Content-Disposition, Content-Length, Content-Range, Set-Cookie" ], + "GoodData-Deployment": [ + "aio" + ], + "Expires": [ + "0" + ], "Vary": [ "Origin", "Access-Control-Request-Method", "Access-Control-Request-Headers" ], - "X-GDC-TRACE-ID": [ - "e26d6bb8ffd25725" - ], - "Connection": [ - "keep-alive" + "X-XSS-Protection": [ + "1; mode=block" ], - "GoodData-Deployment": [ - "aio" + "Server": [ + "nginx" ], - "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "Transfer-Encoding": [ + "chunked" ], - "Pragma": [ - "no-cache" + "Date": [ + "Thu, 23 Jun 2022 13:04:18 GMT" ], - "Content-Type": [ - "application/vnd.gooddata.api+json" + "X-GDC-TRACE-ID": [ + "b26e04f1988b8159" ], "Access-Control-Allow-Credentials": [ "true" ], - "Content-Security-Policy": [ - "default-src 'self' *.wistia.com *.wistia.net; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.wistia.com *.wistia.net src.litix.io matomo.anywhere.gooddata.com code.jquery.com unpkg.com cdn.jsdelivr.net cdnjs.cloudflare.com; img-src 'self' data: blob: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net privacy-policy.truste.com www.gooddata.com; style-src 'self' 'unsafe-inline' fonts.googleapis.com cdn.jsdelivr.net fast.fonts.net; font-src 'self' data: fonts.gstatic.com *.alicdn.com *.wistia.com cdn.jsdelivr.net info.gooddata.com; frame-src 'self'; object-src 'none'; worker-src 'self' blob:; child-src blob:; connect-src 'self' *.tiles.mapbox.com *.mapbox.com *.litix.io *.wistia.com embedwistia-a.akamaihd.net matomo.anywhere.gooddata.com; media-src 'self' blob: data: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net" - ], - "Date": [ - "Thu, 16 Jun 2022 16:06:52 GMT" - ], "Permission-Policy": [ "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" ], - "Expires": [ - "0" - ], - "Transfer-Encoding": [ - "chunked" + "Connection": [ + "keep-alive" ], "X-Content-Type-Options": [ "nosniff" ], - "Server": [ - "nginx" - ], - "X-XSS-Protection": [ - "1; mode=block" - ], - "Set-Cookie": [ - "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + "Pragma": [ + "no-cache" ], - "X-Frame-Options": [ - "DENY" + "Content-Security-Policy": [ + "default-src 'self' *.wistia.com *.wistia.net; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.wistia.com *.wistia.net src.litix.io matomo.anywhere.gooddata.com code.jquery.com unpkg.com cdn.jsdelivr.net cdnjs.cloudflare.com; img-src 'self' data: blob: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net privacy-policy.truste.com www.gooddata.com; style-src 'self' 'unsafe-inline' fonts.googleapis.com cdn.jsdelivr.net fast.fonts.net; font-src 'self' data: fonts.gstatic.com *.alicdn.com *.wistia.com cdn.jsdelivr.net info.gooddata.com; frame-src 'self'; object-src 'none'; worker-src 'self' blob:; child-src blob:; connect-src 'self' *.tiles.mapbox.com *.mapbox.com *.litix.io *.wistia.com embedwistia-a.akamaihd.net matomo.anywhere.gooddata.com; media-src 'self' blob: data: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net" ] }, "body": { - "string": "{\"data\":{\"attributes\":{},\"id\":\"demoGroup\",\"type\":\"userGroup\"},\"links\":{\"self\":\"http://localhost:3000/api/v1/entities/userGroups/demoGroup?include=ALL\"}}" + "string": "{\"data\":{\"attributes\":{},\"id\":\"demoGroup\",\"type\":\"userGroup\"},\"links\":{\"self\":\"http://localhost:3000/api/v1/entities/userGroups/demoGroup\"}}" } } }, { "request": { - "method": "DELETE", - "uri": "http://localhost:3000/api/v1/entities/users/demoGroup", + "method": "GET", + "uri": "http://localhost:3000/api/v1/entities/userGroups/demoGroup?include=ALL", "body": null, "headers": { + "Accept": [ + "application/vnd.gooddata.api+json" + ], "X-Requested-With": [ "XMLHttpRequest" ], @@ -372,66 +375,72 @@ }, "response": { "status": { - "code": 204, + "code": 200, "message": "" }, "headers": { - "Access-Control-Allow-Credentials": [ - "true" - ], - "Access-Control-Expose-Headers": [ - "Content-Disposition, Content-Length, Content-Range, Set-Cookie" + "Content-Type": [ + "application/vnd.gooddata.api+json" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" ], + "X-Frame-Options": [ + "DENY" + ], + "Set-Cookie": [ + "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + ], + "Access-Control-Expose-Headers": [ + "Content-Disposition, Content-Length, Content-Range, Set-Cookie" + ], "GoodData-Deployment": [ "aio" ], - "Server": [ - "nginx" + "Expires": [ + "0" + ], + "Vary": [ + "Origin", + "Access-Control-Request-Method", + "Access-Control-Request-Headers" ], "X-XSS-Protection": [ "1; mode=block" ], - "Content-Security-Policy": [ - "default-src 'self' *.wistia.com *.wistia.net; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.wistia.com *.wistia.net src.litix.io matomo.anywhere.gooddata.com code.jquery.com unpkg.com cdn.jsdelivr.net cdnjs.cloudflare.com; img-src 'self' data: blob: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net privacy-policy.truste.com www.gooddata.com; style-src 'self' 'unsafe-inline' fonts.googleapis.com cdn.jsdelivr.net fast.fonts.net; font-src 'self' data: fonts.gstatic.com *.alicdn.com *.wistia.com cdn.jsdelivr.net info.gooddata.com; frame-src 'self'; object-src 'none'; worker-src 'self' blob:; child-src blob:; connect-src 'self' *.tiles.mapbox.com *.mapbox.com *.litix.io *.wistia.com embedwistia-a.akamaihd.net matomo.anywhere.gooddata.com; media-src 'self' blob: data: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net" + "Server": [ + "nginx" + ], + "Transfer-Encoding": [ + "chunked" ], "Date": [ - "Thu, 16 Jun 2022 16:06:52 GMT" + "Thu, 23 Jun 2022 13:04:18 GMT" ], - "Pragma": [ - "no-cache" + "X-GDC-TRACE-ID": [ + "a6aca81a851d4cfa" + ], + "Access-Control-Allow-Credentials": [ + "true" ], "Permission-Policy": [ "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" ], - "X-GDC-TRACE-ID": [ - "10e82c23cd730866" - ], - "Expires": [ - "0" + "Connection": [ + "keep-alive" ], "X-Content-Type-Options": [ "nosniff" ], - "Set-Cookie": [ - "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" - ], - "X-Frame-Options": [ - "DENY" - ], - "Vary": [ - "Origin", - "Access-Control-Request-Method", - "Access-Control-Request-Headers" + "Pragma": [ + "no-cache" ], - "Connection": [ - "keep-alive" + "Content-Security-Policy": [ + "default-src 'self' *.wistia.com *.wistia.net; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.wistia.com *.wistia.net src.litix.io matomo.anywhere.gooddata.com code.jquery.com unpkg.com cdn.jsdelivr.net cdnjs.cloudflare.com; img-src 'self' data: blob: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net privacy-policy.truste.com www.gooddata.com; style-src 'self' 'unsafe-inline' fonts.googleapis.com cdn.jsdelivr.net fast.fonts.net; font-src 'self' data: fonts.gstatic.com *.alicdn.com *.wistia.com cdn.jsdelivr.net info.gooddata.com; frame-src 'self'; object-src 'none'; worker-src 'self' blob:; child-src blob:; connect-src 'self' *.tiles.mapbox.com *.mapbox.com *.litix.io *.wistia.com embedwistia-a.akamaihd.net matomo.anywhere.gooddata.com; media-src 'self' blob: data: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net" ] }, "body": { - "string": "" + "string": "{\"data\":{\"attributes\":{},\"id\":\"demoGroup\",\"type\":\"userGroup\"},\"links\":{\"self\":\"http://localhost:3000/api/v1/entities/userGroups/demoGroup?include=ALL\"}}" } } }, @@ -458,64 +467,64 @@ "message": "" }, "headers": { + "Content-Type": [ + "application/vnd.gooddata.api+json" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "X-Frame-Options": [ + "DENY" + ], + "Set-Cookie": [ + "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + ], "Access-Control-Expose-Headers": [ "Content-Disposition, Content-Length, Content-Range, Set-Cookie" ], + "GoodData-Deployment": [ + "aio" + ], + "Expires": [ + "0" + ], "Vary": [ "Origin", "Access-Control-Request-Method", "Access-Control-Request-Headers" ], - "X-GDC-TRACE-ID": [ - "77e4600e2cfff962" - ], - "Connection": [ - "keep-alive" + "X-XSS-Protection": [ + "1; mode=block" ], - "GoodData-Deployment": [ - "aio" + "Server": [ + "nginx" ], - "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "Transfer-Encoding": [ + "chunked" ], - "Pragma": [ - "no-cache" + "Date": [ + "Thu, 23 Jun 2022 13:04:18 GMT" ], - "Content-Type": [ - "application/vnd.gooddata.api+json" + "X-GDC-TRACE-ID": [ + "5dfd5c0ee6bc9df6" ], "Access-Control-Allow-Credentials": [ "true" ], - "Content-Security-Policy": [ - "default-src 'self' *.wistia.com *.wistia.net; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.wistia.com *.wistia.net src.litix.io matomo.anywhere.gooddata.com code.jquery.com unpkg.com cdn.jsdelivr.net cdnjs.cloudflare.com; img-src 'self' data: blob: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net privacy-policy.truste.com www.gooddata.com; style-src 'self' 'unsafe-inline' fonts.googleapis.com cdn.jsdelivr.net fast.fonts.net; font-src 'self' data: fonts.gstatic.com *.alicdn.com *.wistia.com cdn.jsdelivr.net info.gooddata.com; frame-src 'self'; object-src 'none'; worker-src 'self' blob:; child-src blob:; connect-src 'self' *.tiles.mapbox.com *.mapbox.com *.litix.io *.wistia.com embedwistia-a.akamaihd.net matomo.anywhere.gooddata.com; media-src 'self' blob: data: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net" - ], - "Date": [ - "Thu, 16 Jun 2022 16:06:52 GMT" - ], "Permission-Policy": [ "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" ], - "Expires": [ - "0" - ], - "Transfer-Encoding": [ - "chunked" + "Connection": [ + "keep-alive" ], "X-Content-Type-Options": [ "nosniff" ], - "Server": [ - "nginx" - ], - "X-XSS-Protection": [ - "1; mode=block" - ], - "Set-Cookie": [ - "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + "Pragma": [ + "no-cache" ], - "X-Frame-Options": [ - "DENY" + "Content-Security-Policy": [ + "default-src 'self' *.wistia.com *.wistia.net; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.wistia.com *.wistia.net src.litix.io matomo.anywhere.gooddata.com code.jquery.com unpkg.com cdn.jsdelivr.net cdnjs.cloudflare.com; img-src 'self' data: blob: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net privacy-policy.truste.com www.gooddata.com; style-src 'self' 'unsafe-inline' fonts.googleapis.com cdn.jsdelivr.net fast.fonts.net; font-src 'self' data: fonts.gstatic.com *.alicdn.com *.wistia.com cdn.jsdelivr.net info.gooddata.com; frame-src 'self'; object-src 'none'; worker-src 'self' blob:; child-src blob:; connect-src 'self' *.tiles.mapbox.com *.mapbox.com *.litix.io *.wistia.com embedwistia-a.akamaihd.net matomo.anywhere.gooddata.com; media-src 'self' blob: data: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net" ] }, "body": { @@ -549,64 +558,64 @@ "message": "" }, "headers": { + "Content-Type": [ + "application/vnd.gooddata.api+json" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "X-Frame-Options": [ + "DENY" + ], + "Set-Cookie": [ + "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + ], "Access-Control-Expose-Headers": [ "Content-Disposition, Content-Length, Content-Range, Set-Cookie" ], + "GoodData-Deployment": [ + "aio" + ], + "Expires": [ + "0" + ], "Vary": [ "Origin", "Access-Control-Request-Method", "Access-Control-Request-Headers" ], - "X-GDC-TRACE-ID": [ - "dcf95919fda58f04" - ], - "Connection": [ - "keep-alive" + "X-XSS-Protection": [ + "1; mode=block" ], - "GoodData-Deployment": [ - "aio" + "Server": [ + "nginx" ], - "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "Transfer-Encoding": [ + "chunked" ], - "Pragma": [ - "no-cache" + "Date": [ + "Thu, 23 Jun 2022 13:04:18 GMT" ], - "Content-Type": [ - "application/vnd.gooddata.api+json" + "X-GDC-TRACE-ID": [ + "8280c8b6967f7b3e" ], "Access-Control-Allow-Credentials": [ "true" ], - "Content-Security-Policy": [ - "default-src 'self' *.wistia.com *.wistia.net; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.wistia.com *.wistia.net src.litix.io matomo.anywhere.gooddata.com code.jquery.com unpkg.com cdn.jsdelivr.net cdnjs.cloudflare.com; img-src 'self' data: blob: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net privacy-policy.truste.com www.gooddata.com; style-src 'self' 'unsafe-inline' fonts.googleapis.com cdn.jsdelivr.net fast.fonts.net; font-src 'self' data: fonts.gstatic.com *.alicdn.com *.wistia.com cdn.jsdelivr.net info.gooddata.com; frame-src 'self'; object-src 'none'; worker-src 'self' blob:; child-src blob:; connect-src 'self' *.tiles.mapbox.com *.mapbox.com *.litix.io *.wistia.com embedwistia-a.akamaihd.net matomo.anywhere.gooddata.com; media-src 'self' blob: data: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net" - ], - "Date": [ - "Thu, 16 Jun 2022 16:06:52 GMT" - ], "Permission-Policy": [ "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" ], - "Expires": [ - "0" - ], - "Transfer-Encoding": [ - "chunked" + "Connection": [ + "keep-alive" ], "X-Content-Type-Options": [ "nosniff" ], - "Server": [ - "nginx" - ], - "X-XSS-Protection": [ - "1; mode=block" - ], - "Set-Cookie": [ - "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + "Pragma": [ + "no-cache" ], - "X-Frame-Options": [ - "DENY" + "Content-Security-Policy": [ + "default-src 'self' *.wistia.com *.wistia.net; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.wistia.com *.wistia.net src.litix.io matomo.anywhere.gooddata.com code.jquery.com unpkg.com cdn.jsdelivr.net cdnjs.cloudflare.com; img-src 'self' data: blob: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net privacy-policy.truste.com www.gooddata.com; style-src 'self' 'unsafe-inline' fonts.googleapis.com cdn.jsdelivr.net fast.fonts.net; font-src 'self' data: fonts.gstatic.com *.alicdn.com *.wistia.com cdn.jsdelivr.net info.gooddata.com; frame-src 'self'; object-src 'none'; worker-src 'self' blob:; child-src blob:; connect-src 'self' *.tiles.mapbox.com *.mapbox.com *.litix.io *.wistia.com embedwistia-a.akamaihd.net matomo.anywhere.gooddata.com; media-src 'self' blob: data: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net" ] }, "body": { @@ -637,64 +646,64 @@ "message": "" }, "headers": { + "Content-Type": [ + "application/vnd.gooddata.api+json" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "X-Frame-Options": [ + "DENY" + ], + "Set-Cookie": [ + "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + ], "Access-Control-Expose-Headers": [ "Content-Disposition, Content-Length, Content-Range, Set-Cookie" ], + "GoodData-Deployment": [ + "aio" + ], + "Expires": [ + "0" + ], "Vary": [ "Origin", "Access-Control-Request-Method", "Access-Control-Request-Headers" ], - "X-GDC-TRACE-ID": [ - "e0175ec358b0a4be" - ], - "Connection": [ - "keep-alive" + "X-XSS-Protection": [ + "1; mode=block" ], - "GoodData-Deployment": [ - "aio" + "Server": [ + "nginx" ], - "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "Transfer-Encoding": [ + "chunked" ], - "Pragma": [ - "no-cache" + "Date": [ + "Thu, 23 Jun 2022 13:04:18 GMT" ], - "Content-Type": [ - "application/vnd.gooddata.api+json" + "X-GDC-TRACE-ID": [ + "99c579d9968123b5" ], "Access-Control-Allow-Credentials": [ "true" ], - "Content-Security-Policy": [ - "default-src 'self' *.wistia.com *.wistia.net; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.wistia.com *.wistia.net src.litix.io matomo.anywhere.gooddata.com code.jquery.com unpkg.com cdn.jsdelivr.net cdnjs.cloudflare.com; img-src 'self' data: blob: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net privacy-policy.truste.com www.gooddata.com; style-src 'self' 'unsafe-inline' fonts.googleapis.com cdn.jsdelivr.net fast.fonts.net; font-src 'self' data: fonts.gstatic.com *.alicdn.com *.wistia.com cdn.jsdelivr.net info.gooddata.com; frame-src 'self'; object-src 'none'; worker-src 'self' blob:; child-src blob:; connect-src 'self' *.tiles.mapbox.com *.mapbox.com *.litix.io *.wistia.com embedwistia-a.akamaihd.net matomo.anywhere.gooddata.com; media-src 'self' blob: data: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net" - ], - "Date": [ - "Thu, 16 Jun 2022 16:06:52 GMT" - ], "Permission-Policy": [ "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" ], - "Expires": [ - "0" - ], - "Transfer-Encoding": [ - "chunked" + "Connection": [ + "keep-alive" ], "X-Content-Type-Options": [ "nosniff" ], - "Server": [ - "nginx" - ], - "X-XSS-Protection": [ - "1; mode=block" - ], - "Set-Cookie": [ - "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + "Pragma": [ + "no-cache" ], - "X-Frame-Options": [ - "DENY" + "Content-Security-Policy": [ + "default-src 'self' *.wistia.com *.wistia.net; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.wistia.com *.wistia.net src.litix.io matomo.anywhere.gooddata.com code.jquery.com unpkg.com cdn.jsdelivr.net cdnjs.cloudflare.com; img-src 'self' data: blob: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net privacy-policy.truste.com www.gooddata.com; style-src 'self' 'unsafe-inline' fonts.googleapis.com cdn.jsdelivr.net fast.fonts.net; font-src 'self' data: fonts.gstatic.com *.alicdn.com *.wistia.com cdn.jsdelivr.net info.gooddata.com; frame-src 'self'; object-src 'none'; worker-src 'self' blob:; child-src blob:; connect-src 'self' *.tiles.mapbox.com *.mapbox.com *.litix.io *.wistia.com embedwistia-a.akamaihd.net matomo.anywhere.gooddata.com; media-src 'self' blob: data: *.wistia.com *.wistia.net embedwistia-a.akamaihd.net" ] }, "body": { diff --git a/gooddata-sdk/tests/catalog/test_catalog_permission.py b/gooddata-sdk/tests/catalog/test_catalog_permission.py index 7e42aaf72..16ce62036 100644 --- a/gooddata-sdk/tests/catalog/test_catalog_permission.py +++ b/gooddata-sdk/tests/catalog/test_catalog_permission.py @@ -10,7 +10,7 @@ import gooddata_metadata_client.apis as metadata_apis from gooddata_sdk import GoodDataApiClient, GoodDataSdk from gooddata_sdk.catalog.identifier import CatalogAssigneeIdentifier -from gooddata_sdk.catalog.permissions.declarative_model.permission import ( +from gooddata_sdk.catalog.permission.declarative_model.permission import ( CatalogDeclarativeDataSourcePermission, CatalogDeclarativeSingleWorkspacePermission, CatalogDeclarativeWorkspaceHierarchyPermission, @@ -26,7 +26,7 @@ def _empty_permissions(sdk: GoodDataSdk, workspace_id: str) -> None: empty_permissions_e = CatalogDeclarativeWorkspacePermissions(permissions=[], hierarchy_permissions=[]) - sdk.catalog_permission.set_declarative_permissions( + sdk.catalog_permission.put_declarative_permissions( workspace_id=workspace_id, declarative_workspace_permissions=empty_permissions_e ) empty_permissions_o = sdk.catalog_permission.get_declarative_permissions(workspace_id=workspace_id) @@ -102,7 +102,7 @@ def test_put_declarative_permissions(test_config): declarative_workspace_permissions = CatalogDeclarativeWorkspacePermissions.from_dict(data, camel_case=True) try: - sdk.catalog_permission.set_declarative_permissions( + sdk.catalog_permission.put_declarative_permissions( workspace_id=workspace_id, declarative_workspace_permissions=declarative_workspace_permissions ) declarative_permissions_o = sdk.catalog_permission.get_declarative_permissions(workspace_id=workspace_id) diff --git a/gooddata-sdk/tests/catalog/test_catalog_user_service.py b/gooddata-sdk/tests/catalog/test_catalog_user_service.py index ebfdcd3e0..dd8341504 100644 --- a/gooddata-sdk/tests/catalog/test_catalog_user_service.py +++ b/gooddata-sdk/tests/catalog/test_catalog_user_service.py @@ -12,6 +12,8 @@ CatalogDeclarativeUserGroup, CatalogDeclarativeUserGroups, ) +from gooddata_sdk.catalog.user.entity_model.user import CatalogUser +from gooddata_sdk.catalog.user.entity_model.user_group import CatalogUserGroup from gooddata_sdk.utils import create_directory from tests import VCR_MATCH_ON @@ -45,17 +47,16 @@ def test_create_delete_user(test_config): sdk = GoodDataSdk.create(host_=test_config["host"], token_=test_config["token"]) user_id = test_config["test_new_user"] authentication_id = f"{user_id}_auth_id" - user_groups = [test_config["test_user_group"]] + user_group_ids = [test_config["test_user_group"]] try: assert len(sdk.catalog_user.list_users()) == 3 - sdk.catalog_user.create_or_update_user( - user_id=user_id, authentication_id=authentication_id, user_groups=user_groups - ) + user_e = CatalogUser.init(user_id=user_id, authentication_id=authentication_id, user_group_ids=user_group_ids) + sdk.catalog_user.create_or_update_user(user_e) user = sdk.catalog_user.get_user(user_id) assert len(sdk.catalog_user.list_users()) == 4 assert user.id == user_id - assert user.get_user_groups == user_groups + assert user.get_user_groups == user_group_ids assert user.attributes.authentication_id == authentication_id finally: sdk.catalog_user.delete_user(user_id) @@ -68,17 +69,18 @@ def test_update_user(test_config): user_id = test_config["test_user"] user = sdk.catalog_user.get_user(user_id) new_auth_id = f"{user_id}_123" - new_user_groups = ["demoGroup", "visitorsGroup"] + user_group_ids = ["demoGroup", "visitorsGroup"] try: - sdk.catalog_user.create_or_update_user(user_id, new_auth_id, new_user_groups) + user_e = CatalogUser.init(user_id=user_id, authentication_id=new_auth_id, user_group_ids=user_group_ids) + sdk.catalog_user.create_or_update_user(user_e) updated_user = sdk.catalog_user.get_user(user_id) assert updated_user.attributes.authentication_id == new_auth_id - assert len(updated_user.get_user_groups) == len(new_user_groups) - assert set(updated_user.get_user_groups) == set(new_user_groups) + assert len(updated_user.get_user_groups) == len(user_group_ids) + assert set(updated_user.get_user_groups) == set(user_group_ids) finally: sdk.catalog_user.delete_user(user_id) - sdk.catalog_user.create_or_update_user(user.id, user.attributes.authentication_id, user.get_user_groups) + sdk.catalog_user.create_or_update_user(user) assert len(sdk.catalog_user.list_users()) == 3 @@ -109,17 +111,16 @@ def test_get_user_group(test_config): def test_create_delete_user_group(test_config): sdk = GoodDataSdk.create(host_=test_config["host"], token_=test_config["token"]) user_group_id = test_config["test_new_user_group"] - user_group_parents_id = [test_config["test_user_group"]] + user_group_parent_ids = [test_config["test_user_group"]] try: assert len(sdk.catalog_user.list_user_groups()) == 4 - sdk.catalog_user.create_or_update_user_group( - user_group_id=user_group_id, user_group_parents_id=user_group_parents_id - ) + user_group_e = CatalogUserGroup.init(user_group_id=user_group_id, user_group_parent_ids=user_group_parent_ids) + sdk.catalog_user.create_or_update_user_group(user_group_e) user_group = sdk.catalog_user.get_user_group(user_group_id) assert len(sdk.catalog_user.list_user_groups()) == 5 assert user_group.id == user_group_id - assert [p.id for p in user_group.relationships.parents.data] == user_group_parents_id + assert [p.id for p in user_group.relationships.parents.data] == user_group_parent_ids finally: sdk.catalog_user.delete_user_group(user_group_id) assert len(sdk.catalog_user.list_user_groups()) == 4 @@ -131,16 +132,17 @@ def test_update_user_group(test_config): user_group_id = test_config["test_user_group"] user_group = sdk.catalog_user.get_user_group(user_group_id) user_group_parent_ids = [] + assert len(sdk.catalog_user.list_user_groups()) == 4 try: - sdk.catalog_user.create_or_update_user_group(user_group_id, user_group_parent_ids) + user_group_e = CatalogUserGroup.init(user_group_id=user_group_id, user_group_parent_ids=user_group_parent_ids) + sdk.catalog_user.create_or_update_user_group(user_group_e) updated_user_group = sdk.catalog_user.get_user_group(user_group_id) assert user_group.id == updated_user_group.id assert len(updated_user_group.get_parents) == len(user_group_parent_ids) assert set(updated_user_group.get_parents) == set(user_group_parent_ids) finally: - sdk.catalog_user.delete_user(user_group_id) - sdk.catalog_user.create_or_update_user_group(user_group_id, user_group.get_parents) + sdk.catalog_user.create_or_update_user_group(user_group) assert len(sdk.catalog_user.list_user_groups()) == 4