diff --git a/gooddata-sdk/gooddata_sdk/__init__.py b/gooddata-sdk/gooddata_sdk/__init__.py index dfd2a15e7..bc8c0533a 100644 --- a/gooddata-sdk/gooddata_sdk/__init__.py +++ b/gooddata-sdk/gooddata_sdk/__init__.py @@ -26,6 +26,7 @@ from gooddata_sdk.catalog.entity import BasicCredentials, TokenCredentialsFromFile from gooddata_sdk.catalog.organization.service import CatalogOrganizationService from gooddata_sdk.catalog.workspace.declarative_model.workspace.workspace import ( + CatalogDeclarativeWorkspaceDataFilters, CatalogDeclarativeWorkspaceModel, CatalogDeclarativeWorkspaces, ) 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 d4c776c90..91d02a255 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 @@ -11,6 +11,7 @@ from gooddata_metadata_client.model.declarative_workspace_data_filter_setting import ( DeclarativeWorkspaceDataFilterSetting, ) +from gooddata_metadata_client.model.declarative_workspace_data_filters import DeclarativeWorkspaceDataFilters from gooddata_metadata_client.model.declarative_workspace_model import DeclarativeWorkspaceModel from gooddata_metadata_client.model.declarative_workspaces import DeclarativeWorkspaces from gooddata_sdk.catalog.base import Base @@ -107,6 +108,33 @@ def client_class() -> Type[DeclarativeWorkspaceDataFilterSetting]: return DeclarativeWorkspaceDataFilterSetting +@attr.s(auto_attribs=True, kw_only=True) +class CatalogDeclarativeWorkspaceDataFilters(Base): + workspace_data_filters: List[CatalogDeclarativeWorkspaceDataFilter] + + @staticmethod + def client_class() -> Type[DeclarativeWorkspaceDataFilters]: + return DeclarativeWorkspaceDataFilters + + def store_to_disk(self, layout_organization_folder: Path) -> None: + for workspace_data_filter in self.workspace_data_filters: + workspace_data_filter.store_to_disk( + CatalogDeclarativeWorkspaces.workspace_data_filters_folder(layout_organization_folder) + ) + + @classmethod + def load_from_disk(cls, layout_organization_folder: Path) -> CatalogDeclarativeWorkspaceDataFilters: + workspace_data_filters_files = get_sorted_yaml_files( + CatalogDeclarativeWorkspaces.workspace_data_filters_folder(layout_organization_folder) + ) + workspace_data_filters = [] + for workspace_data_filters_file in workspace_data_filters_files: + workspace_data_filters.append( + CatalogDeclarativeWorkspaceDataFilter.load_from_disk(workspace_data_filters_file) + ) + return cls(workspace_data_filters=workspace_data_filters) + + @attr.s(auto_attribs=True, kw_only=True) class CatalogDeclarativeWorkspaceDataFilter(Base): id: str diff --git a/gooddata-sdk/gooddata_sdk/catalog/workspace/service.py b/gooddata-sdk/gooddata_sdk/catalog/workspace/service.py index 17a691589..4b040db60 100644 --- a/gooddata-sdk/gooddata_sdk/catalog/workspace/service.py +++ b/gooddata-sdk/gooddata_sdk/catalog/workspace/service.py @@ -17,6 +17,7 @@ from gooddata_sdk.catalog.workspace.declarative_model.workspace.logical_model.ldm import CatalogDeclarativeModel from gooddata_sdk.catalog.workspace.declarative_model.workspace.workspace import ( LAYOUT_WORKSPACES_DIR, + CatalogDeclarativeWorkspaceDataFilters, CatalogDeclarativeWorkspaceModel, CatalogDeclarativeWorkspaces, ) @@ -119,6 +120,30 @@ def load_and_put_declarative_workspaces(self, layout_root_path: Path = Path.cwd( declarative_workspaces = self.load_declarative_workspaces(layout_root_path) self.put_declarative_workspaces(declarative_workspaces) + def get_declarative_workspace_data_filters(self) -> CatalogDeclarativeWorkspaceDataFilters: + return CatalogDeclarativeWorkspaceDataFilters.from_api(self._layout_api.get_workspace_data_filters_layout()) + + def put_declarative_workspace_data_filters( + self, workspace_data_filters: CatalogDeclarativeWorkspaceDataFilters + ) -> None: + self._layout_api.set_workspace_data_filters_layout( + declarative_workspace_data_filters=workspace_data_filters.to_api() + ) + + def store_declarative_workspace_data_filters(self, layout_root_path: Path = Path.cwd()) -> None: + self.get_declarative_workspace_data_filters().store_to_disk(self.layout_organization_folder(layout_root_path)) + + def load_declarative_workspace_data_filters( + self, layout_root_path: Path = Path.cwd() + ) -> CatalogDeclarativeWorkspaceDataFilters: + return CatalogDeclarativeWorkspaceDataFilters.load_from_disk(self.layout_organization_folder(layout_root_path)) + + def load_and_put_declarative_workspace_data_filters(self, layout_root_path: Path = Path.cwd()) -> None: + declarative_workspace_data_filters = CatalogDeclarativeWorkspaceDataFilters.load_from_disk( + self.layout_organization_folder(layout_root_path) + ) + self.put_declarative_workspace_data_filters(declarative_workspace_data_filters) + class CatalogWorkspaceContentService(CatalogServiceBase): # Note on the disabled checking: diff --git a/gooddata-sdk/tests/catalog/expected/declarative_workspace_data_filters.json b/gooddata-sdk/tests/catalog/expected/declarative_workspace_data_filters.json new file mode 100644 index 000000000..82fb6dbbc --- /dev/null +++ b/gooddata-sdk/tests/catalog/expected/declarative_workspace_data_filters.json @@ -0,0 +1,48 @@ +{ + "workspaceDataFilters": [ + { + "columnName": "wdf__region", + "id": "wdf__region", + "title": "Customer region", + "workspace": { + "id": "demo", + "type": "workspace" + }, + "workspaceDataFilterSettings": [ + { + "filterValues": [ + "West" + ], + "id": "region_west", + "title": "Region West", + "workspace": { + "id": "demo_west", + "type": "workspace" + } + } + ] + }, + { + "columnName": "wdf__state", + "id": "wdf__state", + "title": "Customer state", + "workspace": { + "id": "demo_west", + "type": "workspace" + }, + "workspaceDataFilterSettings": [ + { + "filterValues": [ + "California" + ], + "id": "region_west_california", + "title": "Region West California", + "workspace": { + "id": "demo_west_california", + "type": "workspace" + } + } + ] + } + ] +} diff --git a/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_get_declarative_workspace_data_filters.json b/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_get_declarative_workspace_data_filters.json new file mode 100644 index 000000000..4e03519d2 --- /dev/null +++ b/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_get_declarative_workspace_data_filters.json @@ -0,0 +1,181 @@ +{ + "version": 1, + "interactions": [ + { + "request": { + "method": "GET", + "uri": "http://localhost:3000/api/v1/layout/workspaceDataFilters", + "body": null, + "headers": { + "Accept": [ + "application/json" + ], + "X-Requested-With": [ + "XMLHttpRequest" + ], + "X-GDC-VALIDATE-RELATIONS": [ + "true" + ] + } + }, + "response": { + "status": { + "code": 200, + "message": "" + }, + "headers": { + "Access-Control-Allow-Credentials": [ + "true" + ], + "Access-Control-Expose-Headers": [ + "Content-Disposition, Content-Length, Content-Range, Set-Cookie" + ], + "Set-Cookie": [ + "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + ], + "Permission-Policy": [ + "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" + ], + "X-XSS-Protection": [ + "1; mode=block" + ], + "Connection": [ + "keep-alive" + ], + "Transfer-Encoding": [ + "chunked" + ], + "Date": [ + "Mon, 20 Jun 2022 08:37:43 GMT" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Content-Type": [ + "application/json" + ], + "Pragma": [ + "no-cache" + ], + "X-Frame-Options": [ + "DENY" + ], + "Expires": [ + "0" + ], + "Vary": [ + "Origin", + "Access-Control-Request-Method", + "Access-Control-Request-Headers" + ], + "X-GDC-TRACE-ID": [ + "ad55be2500fa39d0" + ], + "GoodData-Deployment": [ + "aio" + ], + "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" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "Server": [ + "nginx" + ] + }, + "body": { + "string": "{\"workspaceDataFilters\":[{\"columnName\":\"wdf__region\",\"id\":\"wdf__region\",\"title\":\"Customer region\",\"workspace\":{\"id\":\"demo\",\"type\":\"workspace\"},\"workspaceDataFilterSettings\":[{\"filterValues\":[\"West\"],\"id\":\"region_west\",\"title\":\"Region West\",\"workspace\":{\"id\":\"demo_west\",\"type\":\"workspace\"}}]},{\"columnName\":\"wdf__state\",\"id\":\"wdf__state\",\"title\":\"Customer state\",\"workspace\":{\"id\":\"demo_west\",\"type\":\"workspace\"},\"workspaceDataFilterSettings\":[{\"filterValues\":[\"California\"],\"id\":\"region_west_california\",\"title\":\"Region West California\",\"workspace\":{\"id\":\"demo_west_california\",\"type\":\"workspace\"}}]}]}" + } + } + }, + { + "request": { + "method": "GET", + "uri": "http://localhost:3000/api/v1/layout/workspaceDataFilters", + "body": null, + "headers": { + "Accept": [ + "application/json" + ], + "X-Requested-With": [ + "XMLHttpRequest" + ], + "X-GDC-VALIDATE-RELATIONS": [ + "true" + ] + } + }, + "response": { + "status": { + "code": 200, + "message": "" + }, + "headers": { + "Access-Control-Allow-Credentials": [ + "true" + ], + "Access-Control-Expose-Headers": [ + "Content-Disposition, Content-Length, Content-Range, Set-Cookie" + ], + "Set-Cookie": [ + "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + ], + "Permission-Policy": [ + "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" + ], + "X-XSS-Protection": [ + "1; mode=block" + ], + "Connection": [ + "keep-alive" + ], + "Transfer-Encoding": [ + "chunked" + ], + "Date": [ + "Mon, 20 Jun 2022 08:37:43 GMT" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Content-Type": [ + "application/json" + ], + "Pragma": [ + "no-cache" + ], + "X-Frame-Options": [ + "DENY" + ], + "Expires": [ + "0" + ], + "Vary": [ + "Origin", + "Access-Control-Request-Method", + "Access-Control-Request-Headers" + ], + "X-GDC-TRACE-ID": [ + "fbe666d07a0518bf" + ], + "GoodData-Deployment": [ + "aio" + ], + "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" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "Server": [ + "nginx" + ] + }, + "body": { + "string": "{\"workspaceDataFilters\":[{\"columnName\":\"wdf__region\",\"id\":\"wdf__region\",\"title\":\"Customer region\",\"workspace\":{\"id\":\"demo\",\"type\":\"workspace\"},\"workspaceDataFilterSettings\":[{\"filterValues\":[\"West\"],\"id\":\"region_west\",\"title\":\"Region West\",\"workspace\":{\"id\":\"demo_west\",\"type\":\"workspace\"}}]},{\"columnName\":\"wdf__state\",\"id\":\"wdf__state\",\"title\":\"Customer state\",\"workspace\":{\"id\":\"demo_west\",\"type\":\"workspace\"},\"workspaceDataFilterSettings\":[{\"filterValues\":[\"California\"],\"id\":\"region_west_california\",\"title\":\"Region West California\",\"workspace\":{\"id\":\"demo_west_california\",\"type\":\"workspace\"}}]}]}" + } + } + } + ] +} diff --git a/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_load_and_put_declarative_workspace_data_filters.json b/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_load_and_put_declarative_workspace_data_filters.json new file mode 100644 index 000000000..0f58d86b1 --- /dev/null +++ b/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_load_and_put_declarative_workspace_data_filters.json @@ -0,0 +1,685 @@ +{ + "version": 1, + "interactions": [ + { + "request": { + "method": "GET", + "uri": "http://localhost:3000/api/v1/layout/workspaceDataFilters", + "body": null, + "headers": { + "Accept": [ + "application/json" + ], + "X-Requested-With": [ + "XMLHttpRequest" + ], + "X-GDC-VALIDATE-RELATIONS": [ + "true" + ] + } + }, + "response": { + "status": { + "code": 200, + "message": "" + }, + "headers": { + "Pragma": [ + "no-cache" + ], + "Content-Type": [ + "application/json" + ], + "Access-Control-Expose-Headers": [ + "Content-Disposition, Content-Length, Content-Range, Set-Cookie" + ], + "Expires": [ + "0" + ], + "Transfer-Encoding": [ + "chunked" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "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" + ], + "Vary": [ + "Origin", + "Access-Control-Request-Method", + "Access-Control-Request-Headers" + ], + "Server": [ + "nginx" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "X-Frame-Options": [ + "DENY" + ], + "Permission-Policy": [ + "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" + ], + "Access-Control-Allow-Credentials": [ + "true" + ], + "Date": [ + "Mon, 20 Jun 2022 08:49:02 GMT" + ], + "Set-Cookie": [ + "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + ], + "X-GDC-TRACE-ID": [ + "a26ffa68fa8acff8" + ], + "X-XSS-Protection": [ + "1; mode=block" + ], + "GoodData-Deployment": [ + "aio" + ] + }, + "body": { + "string": "{\"workspaceDataFilters\":[{\"columnName\":\"wdf__region\",\"id\":\"wdf__region\",\"title\":\"Customer region\",\"workspace\":{\"id\":\"demo\",\"type\":\"workspace\"},\"workspaceDataFilterSettings\":[{\"filterValues\":[\"West\"],\"id\":\"region_west\",\"title\":\"Region West\",\"workspace\":{\"id\":\"demo_west\",\"type\":\"workspace\"}}]},{\"columnName\":\"wdf__state\",\"id\":\"wdf__state\",\"title\":\"Customer state\",\"workspace\":{\"id\":\"demo_west\",\"type\":\"workspace\"},\"workspaceDataFilterSettings\":[{\"filterValues\":[\"California\"],\"id\":\"region_west_california\",\"title\":\"Region West California\",\"workspace\":{\"id\":\"demo_west_california\",\"type\":\"workspace\"}}]}]}" + } + } + }, + { + "request": { + "method": "PUT", + "uri": "http://localhost:3000/api/v1/layout/workspaceDataFilters", + "body": "{\"workspaceDataFilters\": []}", + "headers": { + "Content-Type": [ + "application/json" + ], + "X-Requested-With": [ + "XMLHttpRequest" + ], + "X-GDC-VALIDATE-RELATIONS": [ + "true" + ] + } + }, + "response": { + "status": { + "code": 204, + "message": "" + }, + "headers": { + "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" + ], + "Vary": [ + "Origin", + "Access-Control-Request-Method", + "Access-Control-Request-Headers" + ], + "Server": [ + "nginx" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "Pragma": [ + "no-cache" + ], + "X-Frame-Options": [ + "DENY" + ], + "Expires": [ + "0" + ], + "X-GDC-TRACE-ID": [ + "57d6812dc6081976" + ], + "X-XSS-Protection": [ + "1; mode=block" + ], + "Permission-Policy": [ + "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Connection": [ + "keep-alive" + ], + "Access-Control-Expose-Headers": [ + "Content-Disposition, Content-Length, Content-Range, Set-Cookie" + ], + "GoodData-Deployment": [ + "aio" + ], + "Access-Control-Allow-Credentials": [ + "true" + ], + "Date": [ + "Mon, 20 Jun 2022 08:49:02 GMT" + ], + "Set-Cookie": [ + "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + ] + }, + "body": { + "string": "" + } + } + }, + { + "request": { + "method": "GET", + "uri": "http://localhost:3000/api/v1/layout/workspaceDataFilters", + "body": null, + "headers": { + "Accept": [ + "application/json" + ], + "X-Requested-With": [ + "XMLHttpRequest" + ], + "X-GDC-VALIDATE-RELATIONS": [ + "true" + ] + } + }, + "response": { + "status": { + "code": 200, + "message": "" + }, + "headers": { + "Pragma": [ + "no-cache" + ], + "Content-Type": [ + "application/json" + ], + "Access-Control-Expose-Headers": [ + "Content-Disposition, Content-Length, Content-Range, Set-Cookie" + ], + "Expires": [ + "0" + ], + "Transfer-Encoding": [ + "chunked" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "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" + ], + "Vary": [ + "Origin", + "Access-Control-Request-Method", + "Access-Control-Request-Headers" + ], + "Server": [ + "nginx" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "X-Frame-Options": [ + "DENY" + ], + "Permission-Policy": [ + "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" + ], + "Access-Control-Allow-Credentials": [ + "true" + ], + "Date": [ + "Mon, 20 Jun 2022 08:49:02 GMT" + ], + "Set-Cookie": [ + "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + ], + "X-GDC-TRACE-ID": [ + "ccde979d9ab9ffce" + ], + "X-XSS-Protection": [ + "1; mode=block" + ], + "GoodData-Deployment": [ + "aio" + ] + }, + "body": { + "string": "{\"workspaceDataFilters\":[]}" + } + } + }, + { + "request": { + "method": "GET", + "uri": "http://localhost:3000/api/v1/entities/organization", + "body": null, + "headers": { + "X-Requested-With": [ + "XMLHttpRequest" + ], + "X-GDC-VALIDATE-RELATIONS": [ + "true" + ] + } + }, + "response": { + "status": { + "code": 302, + "message": "" + }, + "headers": { + "Pragma": [ + "no-cache" + ], + "Access-Control-Expose-Headers": [ + "Content-Disposition, Content-Length, Content-Range, Set-Cookie" + ], + "Expires": [ + "0" + ], + "Transfer-Encoding": [ + "chunked" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "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" + ], + "Location": [ + "/api/v1/entities/admin/organizations/default" + ], + "Vary": [ + "Origin", + "Access-Control-Request-Method", + "Access-Control-Request-Headers" + ], + "Server": [ + "nginx" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "X-Frame-Options": [ + "DENY" + ], + "Permission-Policy": [ + "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" + ], + "Access-Control-Allow-Credentials": [ + "true" + ], + "Date": [ + "Mon, 20 Jun 2022 08:49:02 GMT" + ], + "Set-Cookie": [ + "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + ], + "X-GDC-TRACE-ID": [ + "27ac33074535a6c1" + ], + "X-XSS-Protection": [ + "1; mode=block" + ], + "GoodData-Deployment": [ + "aio" + ] + }, + "body": { + "string": "" + } + } + }, + { + "request": { + "method": "GET", + "uri": "http://localhost:3000/api/v1/entities/admin/organizations/default", + "body": null, + "headers": { + "X-Requested-With": [ + "XMLHttpRequest" + ], + "X-GDC-VALIDATE-RELATIONS": [ + "true" + ] + } + }, + "response": { + "status": { + "code": 200, + "message": "" + }, + "headers": { + "Pragma": [ + "no-cache" + ], + "Content-Type": [ + "application/vnd.gooddata.api+json" + ], + "Access-Control-Expose-Headers": [ + "Content-Disposition, Content-Length, Content-Range, Set-Cookie" + ], + "Expires": [ + "0" + ], + "Transfer-Encoding": [ + "chunked" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "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" + ], + "Vary": [ + "Origin", + "Access-Control-Request-Method", + "Access-Control-Request-Headers" + ], + "Server": [ + "nginx" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "X-Frame-Options": [ + "DENY" + ], + "Permission-Policy": [ + "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" + ], + "Access-Control-Allow-Credentials": [ + "true" + ], + "Date": [ + "Mon, 20 Jun 2022 08:49:02 GMT" + ], + "Set-Cookie": [ + "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + ], + "X-GDC-TRACE-ID": [ + "634ca308829b6d8c" + ], + "X-XSS-Protection": [ + "1; mode=block" + ], + "GoodData-Deployment": [ + "aio" + ] + }, + "body": { + "string": "{\"data\":{\"attributes\":{\"name\":\"Default Organization\",\"hostname\":\"localhost\",\"oauthClientId\":\"b89c4710-1045-4da1-9d39-fa18da7cf6b0\"},\"id\":\"default\",\"type\":\"organization\"},\"links\":{\"self\":\"http://localhost:3000/api/v1/entities/admin/organizations/default\"}}" + } + } + }, + { + "request": { + "method": "PUT", + "uri": "http://localhost:3000/api/v1/layout/workspaceDataFilters", + "body": "{\"workspaceDataFilters\": [{\"columnName\": \"wdf__region\", \"id\": \"wdf__region\", \"title\": \"Customer region\", \"workspaceDataFilterSettings\": [{\"filterValues\": [\"West\"], \"id\": \"region_west\", \"title\": \"Region West\", \"workspace\": {\"id\": \"demo_west\", \"type\": \"workspace\"}}], \"workspace\": {\"id\": \"demo\", \"type\": \"workspace\"}}, {\"columnName\": \"wdf__state\", \"id\": \"wdf__state\", \"title\": \"Customer state\", \"workspaceDataFilterSettings\": [{\"filterValues\": [\"California\"], \"id\": \"region_west_california\", \"title\": \"Region West California\", \"workspace\": {\"id\": \"demo_west_california\", \"type\": \"workspace\"}}], \"workspace\": {\"id\": \"demo_west\", \"type\": \"workspace\"}}]}", + "headers": { + "Content-Type": [ + "application/json" + ], + "X-Requested-With": [ + "XMLHttpRequest" + ], + "X-GDC-VALIDATE-RELATIONS": [ + "true" + ] + } + }, + "response": { + "status": { + "code": 204, + "message": "" + }, + "headers": { + "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" + ], + "Vary": [ + "Origin", + "Access-Control-Request-Method", + "Access-Control-Request-Headers" + ], + "Server": [ + "nginx" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "Pragma": [ + "no-cache" + ], + "X-Frame-Options": [ + "DENY" + ], + "Expires": [ + "0" + ], + "X-GDC-TRACE-ID": [ + "a3967c863a9694f8" + ], + "X-XSS-Protection": [ + "1; mode=block" + ], + "Permission-Policy": [ + "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Connection": [ + "keep-alive" + ], + "Access-Control-Expose-Headers": [ + "Content-Disposition, Content-Length, Content-Range, Set-Cookie" + ], + "GoodData-Deployment": [ + "aio" + ], + "Access-Control-Allow-Credentials": [ + "true" + ], + "Date": [ + "Mon, 20 Jun 2022 08:49:02 GMT" + ], + "Set-Cookie": [ + "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + ] + }, + "body": { + "string": "" + } + } + }, + { + "request": { + "method": "GET", + "uri": "http://localhost:3000/api/v1/layout/workspaceDataFilters", + "body": null, + "headers": { + "Accept": [ + "application/json" + ], + "X-Requested-With": [ + "XMLHttpRequest" + ], + "X-GDC-VALIDATE-RELATIONS": [ + "true" + ] + } + }, + "response": { + "status": { + "code": 200, + "message": "" + }, + "headers": { + "Pragma": [ + "no-cache" + ], + "Content-Type": [ + "application/json" + ], + "Access-Control-Expose-Headers": [ + "Content-Disposition, Content-Length, Content-Range, Set-Cookie" + ], + "Expires": [ + "0" + ], + "Transfer-Encoding": [ + "chunked" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "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" + ], + "Vary": [ + "Origin", + "Access-Control-Request-Method", + "Access-Control-Request-Headers" + ], + "Server": [ + "nginx" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "X-Frame-Options": [ + "DENY" + ], + "Permission-Policy": [ + "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" + ], + "Access-Control-Allow-Credentials": [ + "true" + ], + "Date": [ + "Mon, 20 Jun 2022 08:49:02 GMT" + ], + "Set-Cookie": [ + "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + ], + "X-GDC-TRACE-ID": [ + "11eaf884e3bc38f6" + ], + "X-XSS-Protection": [ + "1; mode=block" + ], + "GoodData-Deployment": [ + "aio" + ] + }, + "body": { + "string": "{\"workspaceDataFilters\":[{\"columnName\":\"wdf__region\",\"id\":\"wdf__region\",\"title\":\"Customer region\",\"workspace\":{\"id\":\"demo\",\"type\":\"workspace\"},\"workspaceDataFilterSettings\":[{\"filterValues\":[\"West\"],\"id\":\"region_west\",\"title\":\"Region West\",\"workspace\":{\"id\":\"demo_west\",\"type\":\"workspace\"}}]},{\"columnName\":\"wdf__state\",\"id\":\"wdf__state\",\"title\":\"Customer state\",\"workspace\":{\"id\":\"demo_west\",\"type\":\"workspace\"},\"workspaceDataFilterSettings\":[{\"filterValues\":[\"California\"],\"id\":\"region_west_california\",\"title\":\"Region West California\",\"workspace\":{\"id\":\"demo_west_california\",\"type\":\"workspace\"}}]}]}" + } + } + }, + { + "request": { + "method": "PUT", + "uri": "http://localhost:3000/api/v1/layout/workspaceDataFilters", + "body": "{\"workspaceDataFilters\": [{\"columnName\": \"wdf__region\", \"id\": \"wdf__region\", \"title\": \"Customer region\", \"workspaceDataFilterSettings\": [{\"filterValues\": [\"West\"], \"id\": \"region_west\", \"title\": \"Region West\", \"workspace\": {\"id\": \"demo_west\", \"type\": \"workspace\"}}], \"workspace\": {\"id\": \"demo\", \"type\": \"workspace\"}}, {\"columnName\": \"wdf__state\", \"id\": \"wdf__state\", \"title\": \"Customer state\", \"workspaceDataFilterSettings\": [{\"filterValues\": [\"California\"], \"id\": \"region_west_california\", \"title\": \"Region West California\", \"workspace\": {\"id\": \"demo_west_california\", \"type\": \"workspace\"}}], \"workspace\": {\"id\": \"demo_west\", \"type\": \"workspace\"}}]}", + "headers": { + "Content-Type": [ + "application/json" + ], + "X-Requested-With": [ + "XMLHttpRequest" + ], + "X-GDC-VALIDATE-RELATIONS": [ + "true" + ] + } + }, + "response": { + "status": { + "code": 204, + "message": "" + }, + "headers": { + "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" + ], + "Vary": [ + "Origin", + "Access-Control-Request-Method", + "Access-Control-Request-Headers" + ], + "Server": [ + "nginx" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "Pragma": [ + "no-cache" + ], + "X-Frame-Options": [ + "DENY" + ], + "Expires": [ + "0" + ], + "X-GDC-TRACE-ID": [ + "f49e2679a1a217fc" + ], + "X-XSS-Protection": [ + "1; mode=block" + ], + "Permission-Policy": [ + "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Connection": [ + "keep-alive" + ], + "Access-Control-Expose-Headers": [ + "Content-Disposition, Content-Length, Content-Range, Set-Cookie" + ], + "GoodData-Deployment": [ + "aio" + ], + "Access-Control-Allow-Credentials": [ + "true" + ], + "Date": [ + "Mon, 20 Jun 2022 08:49:02 GMT" + ], + "Set-Cookie": [ + "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + ] + }, + "body": { + "string": "" + } + } + } + ] +} diff --git a/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_put_declarative_workspace_data_filters.json b/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_put_declarative_workspace_data_filters.json new file mode 100644 index 000000000..801d14a47 --- /dev/null +++ b/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_put_declarative_workspace_data_filters.json @@ -0,0 +1,515 @@ +{ + "version": 1, + "interactions": [ + { + "request": { + "method": "GET", + "uri": "http://localhost:3000/api/v1/layout/workspaceDataFilters", + "body": null, + "headers": { + "Accept": [ + "application/json" + ], + "X-Requested-With": [ + "XMLHttpRequest" + ], + "X-GDC-VALIDATE-RELATIONS": [ + "true" + ] + } + }, + "response": { + "status": { + "code": 200, + "message": "" + }, + "headers": { + "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" + ], + "Access-Control-Allow-Credentials": [ + "true" + ], + "Pragma": [ + "no-cache" + ], + "Permission-Policy": [ + "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" + ], + "Expires": [ + "0" + ], + "Access-Control-Expose-Headers": [ + "Content-Disposition, Content-Length, Content-Range, Set-Cookie" + ], + "Vary": [ + "Origin", + "Access-Control-Request-Method", + "Access-Control-Request-Headers" + ], + "GoodData-Deployment": [ + "aio" + ], + "Transfer-Encoding": [ + "chunked" + ], + "X-GDC-TRACE-ID": [ + "f1b2f810b6cd69a5" + ], + "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" + ], + "Content-Type": [ + "application/json" + ], + "Connection": [ + "keep-alive" + ], + "X-Frame-Options": [ + "DENY" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "Date": [ + "Mon, 20 Jun 2022 08:51:09 GMT" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "nginx" + ] + }, + "body": { + "string": "{\"workspaceDataFilters\":[{\"columnName\":\"wdf__region\",\"id\":\"wdf__region\",\"title\":\"Customer region\",\"workspace\":{\"id\":\"demo\",\"type\":\"workspace\"},\"workspaceDataFilterSettings\":[{\"filterValues\":[\"West\"],\"id\":\"region_west\",\"title\":\"Region West\",\"workspace\":{\"id\":\"demo_west\",\"type\":\"workspace\"}}]},{\"columnName\":\"wdf__state\",\"id\":\"wdf__state\",\"title\":\"Customer state\",\"workspace\":{\"id\":\"demo_west\",\"type\":\"workspace\"},\"workspaceDataFilterSettings\":[{\"filterValues\":[\"California\"],\"id\":\"region_west_california\",\"title\":\"Region West California\",\"workspace\":{\"id\":\"demo_west_california\",\"type\":\"workspace\"}}]}]}" + } + } + }, + { + "request": { + "method": "PUT", + "uri": "http://localhost:3000/api/v1/layout/workspaceDataFilters", + "body": "{\"workspaceDataFilters\": []}", + "headers": { + "Content-Type": [ + "application/json" + ], + "X-Requested-With": [ + "XMLHttpRequest" + ], + "X-GDC-VALIDATE-RELATIONS": [ + "true" + ] + } + }, + "response": { + "status": { + "code": 204, + "message": "" + }, + "headers": { + "X-GDC-TRACE-ID": [ + "a10e3121b80ea6bb" + ], + "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" + ], + "Expires": [ + "0" + ], + "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" + ], + "Access-Control-Expose-Headers": [ + "Content-Disposition, Content-Length, Content-Range, Set-Cookie" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "Connection": [ + "keep-alive" + ], + "Vary": [ + "Origin", + "Access-Control-Request-Method", + "Access-Control-Request-Headers" + ], + "GoodData-Deployment": [ + "aio" + ], + "Access-Control-Allow-Credentials": [ + "true" + ], + "Date": [ + "Mon, 20 Jun 2022 08:51:09 GMT" + ], + "X-Frame-Options": [ + "DENY" + ], + "Pragma": [ + "no-cache" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "nginx" + ], + "Permission-Policy": [ + "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" + ] + }, + "body": { + "string": "" + } + } + }, + { + "request": { + "method": "GET", + "uri": "http://localhost:3000/api/v1/layout/workspaceDataFilters", + "body": null, + "headers": { + "Accept": [ + "application/json" + ], + "X-Requested-With": [ + "XMLHttpRequest" + ], + "X-GDC-VALIDATE-RELATIONS": [ + "true" + ] + } + }, + "response": { + "status": { + "code": 200, + "message": "" + }, + "headers": { + "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" + ], + "Access-Control-Allow-Credentials": [ + "true" + ], + "Pragma": [ + "no-cache" + ], + "Permission-Policy": [ + "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" + ], + "Expires": [ + "0" + ], + "Access-Control-Expose-Headers": [ + "Content-Disposition, Content-Length, Content-Range, Set-Cookie" + ], + "Vary": [ + "Origin", + "Access-Control-Request-Method", + "Access-Control-Request-Headers" + ], + "GoodData-Deployment": [ + "aio" + ], + "Transfer-Encoding": [ + "chunked" + ], + "X-GDC-TRACE-ID": [ + "42e91e32a112c170" + ], + "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" + ], + "Content-Type": [ + "application/json" + ], + "Connection": [ + "keep-alive" + ], + "X-Frame-Options": [ + "DENY" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "Date": [ + "Mon, 20 Jun 2022 08:51:09 GMT" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "nginx" + ] + }, + "body": { + "string": "{\"workspaceDataFilters\":[]}" + } + } + }, + { + "request": { + "method": "PUT", + "uri": "http://localhost:3000/api/v1/layout/workspaceDataFilters", + "body": "{\"workspaceDataFilters\": [{\"columnName\": \"wdf__region\", \"id\": \"wdf__region\", \"title\": \"Customer region\", \"workspaceDataFilterSettings\": [{\"filterValues\": [\"West\"], \"id\": \"region_west\", \"title\": \"Region West\", \"workspace\": {\"id\": \"demo_west\", \"type\": \"workspace\"}}], \"workspace\": {\"id\": \"demo\", \"type\": \"workspace\"}}, {\"columnName\": \"wdf__state\", \"id\": \"wdf__state\", \"title\": \"Customer state\", \"workspaceDataFilterSettings\": [{\"filterValues\": [\"California\"], \"id\": \"region_west_california\", \"title\": \"Region West California\", \"workspace\": {\"id\": \"demo_west_california\", \"type\": \"workspace\"}}], \"workspace\": {\"id\": \"demo_west\", \"type\": \"workspace\"}}]}", + "headers": { + "Content-Type": [ + "application/json" + ], + "X-Requested-With": [ + "XMLHttpRequest" + ], + "X-GDC-VALIDATE-RELATIONS": [ + "true" + ] + } + }, + "response": { + "status": { + "code": 204, + "message": "" + }, + "headers": { + "X-GDC-TRACE-ID": [ + "ef89e6b3dea72ac2" + ], + "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" + ], + "Expires": [ + "0" + ], + "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" + ], + "Access-Control-Expose-Headers": [ + "Content-Disposition, Content-Length, Content-Range, Set-Cookie" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "Connection": [ + "keep-alive" + ], + "Vary": [ + "Origin", + "Access-Control-Request-Method", + "Access-Control-Request-Headers" + ], + "GoodData-Deployment": [ + "aio" + ], + "Access-Control-Allow-Credentials": [ + "true" + ], + "Date": [ + "Mon, 20 Jun 2022 08:51:09 GMT" + ], + "X-Frame-Options": [ + "DENY" + ], + "Pragma": [ + "no-cache" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "nginx" + ], + "Permission-Policy": [ + "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" + ] + }, + "body": { + "string": "" + } + } + }, + { + "request": { + "method": "GET", + "uri": "http://localhost:3000/api/v1/layout/workspaceDataFilters", + "body": null, + "headers": { + "Accept": [ + "application/json" + ], + "X-Requested-With": [ + "XMLHttpRequest" + ], + "X-GDC-VALIDATE-RELATIONS": [ + "true" + ] + } + }, + "response": { + "status": { + "code": 200, + "message": "" + }, + "headers": { + "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" + ], + "Access-Control-Allow-Credentials": [ + "true" + ], + "Pragma": [ + "no-cache" + ], + "Permission-Policy": [ + "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" + ], + "Expires": [ + "0" + ], + "Access-Control-Expose-Headers": [ + "Content-Disposition, Content-Length, Content-Range, Set-Cookie" + ], + "Vary": [ + "Origin", + "Access-Control-Request-Method", + "Access-Control-Request-Headers" + ], + "GoodData-Deployment": [ + "aio" + ], + "Transfer-Encoding": [ + "chunked" + ], + "X-GDC-TRACE-ID": [ + "3e5acdf1bf831cdd" + ], + "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" + ], + "Content-Type": [ + "application/json" + ], + "Connection": [ + "keep-alive" + ], + "X-Frame-Options": [ + "DENY" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "Date": [ + "Mon, 20 Jun 2022 08:51:09 GMT" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "nginx" + ] + }, + "body": { + "string": "{\"workspaceDataFilters\":[{\"columnName\":\"wdf__region\",\"id\":\"wdf__region\",\"title\":\"Customer region\",\"workspace\":{\"id\":\"demo\",\"type\":\"workspace\"},\"workspaceDataFilterSettings\":[{\"filterValues\":[\"West\"],\"id\":\"region_west\",\"title\":\"Region West\",\"workspace\":{\"id\":\"demo_west\",\"type\":\"workspace\"}}]},{\"columnName\":\"wdf__state\",\"id\":\"wdf__state\",\"title\":\"Customer state\",\"workspace\":{\"id\":\"demo_west\",\"type\":\"workspace\"},\"workspaceDataFilterSettings\":[{\"filterValues\":[\"California\"],\"id\":\"region_west_california\",\"title\":\"Region West California\",\"workspace\":{\"id\":\"demo_west_california\",\"type\":\"workspace\"}}]}]}" + } + } + }, + { + "request": { + "method": "PUT", + "uri": "http://localhost:3000/api/v1/layout/workspaceDataFilters", + "body": "{\"workspaceDataFilters\": [{\"columnName\": \"wdf__region\", \"id\": \"wdf__region\", \"title\": \"Customer region\", \"workspaceDataFilterSettings\": [{\"filterValues\": [\"West\"], \"id\": \"region_west\", \"title\": \"Region West\", \"workspace\": {\"id\": \"demo_west\", \"type\": \"workspace\"}}], \"workspace\": {\"id\": \"demo\", \"type\": \"workspace\"}}, {\"columnName\": \"wdf__state\", \"id\": \"wdf__state\", \"title\": \"Customer state\", \"workspaceDataFilterSettings\": [{\"filterValues\": [\"California\"], \"id\": \"region_west_california\", \"title\": \"Region West California\", \"workspace\": {\"id\": \"demo_west_california\", \"type\": \"workspace\"}}], \"workspace\": {\"id\": \"demo_west\", \"type\": \"workspace\"}}]}", + "headers": { + "Content-Type": [ + "application/json" + ], + "X-Requested-With": [ + "XMLHttpRequest" + ], + "X-GDC-VALIDATE-RELATIONS": [ + "true" + ] + } + }, + "response": { + "status": { + "code": 204, + "message": "" + }, + "headers": { + "X-GDC-TRACE-ID": [ + "01a80da3814525af" + ], + "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" + ], + "Expires": [ + "0" + ], + "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" + ], + "Access-Control-Expose-Headers": [ + "Content-Disposition, Content-Length, Content-Range, Set-Cookie" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "Connection": [ + "keep-alive" + ], + "Vary": [ + "Origin", + "Access-Control-Request-Method", + "Access-Control-Request-Headers" + ], + "GoodData-Deployment": [ + "aio" + ], + "Access-Control-Allow-Credentials": [ + "true" + ], + "Date": [ + "Mon, 20 Jun 2022 08:51:09 GMT" + ], + "X-Frame-Options": [ + "DENY" + ], + "Pragma": [ + "no-cache" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "nginx" + ], + "Permission-Policy": [ + "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" + ] + }, + "body": { + "string": "" + } + } + } + ] +} diff --git a/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_store_declarative_workspace_data_filters.json b/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_store_declarative_workspace_data_filters.json new file mode 100644 index 000000000..165bb19ad --- /dev/null +++ b/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_store_declarative_workspace_data_filters.json @@ -0,0 +1,521 @@ +{ + "version": 1, + "interactions": [ + { + "request": { + "method": "GET", + "uri": "http://localhost:3000/api/v1/layout/workspaceDataFilters", + "body": null, + "headers": { + "Accept": [ + "application/json" + ], + "X-Requested-With": [ + "XMLHttpRequest" + ], + "X-GDC-VALIDATE-RELATIONS": [ + "true" + ] + } + }, + "response": { + "status": { + "code": 200, + "message": "" + }, + "headers": { + "X-XSS-Protection": [ + "1; mode=block" + ], + "X-Frame-Options": [ + "DENY" + ], + "Date": [ + "Mon, 20 Jun 2022 08:39:47 GMT" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "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" + ], + "Transfer-Encoding": [ + "chunked" + ], + "Access-Control-Allow-Credentials": [ + "true" + ], + "Set-Cookie": [ + "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + ], + "Permission-Policy": [ + "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" + ], + "Vary": [ + "Origin", + "Access-Control-Request-Method", + "Access-Control-Request-Headers" + ], + "Expires": [ + "0" + ], + "X-GDC-TRACE-ID": [ + "a91ff9a43e0cf10e" + ], + "Access-Control-Expose-Headers": [ + "Content-Disposition, Content-Length, Content-Range, Set-Cookie" + ], + "Server": [ + "nginx" + ], + "Content-Type": [ + "application/json" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Pragma": [ + "no-cache" + ], + "GoodData-Deployment": [ + "aio" + ] + }, + "body": { + "string": "{\"workspaceDataFilters\":[{\"columnName\":\"wdf__region\",\"id\":\"wdf__region\",\"title\":\"Customer region\",\"workspace\":{\"id\":\"demo\",\"type\":\"workspace\"},\"workspaceDataFilterSettings\":[{\"filterValues\":[\"West\"],\"id\":\"region_west\",\"title\":\"Region West\",\"workspace\":{\"id\":\"demo_west\",\"type\":\"workspace\"}}]},{\"columnName\":\"wdf__state\",\"id\":\"wdf__state\",\"title\":\"Customer state\",\"workspace\":{\"id\":\"demo_west\",\"type\":\"workspace\"},\"workspaceDataFilterSettings\":[{\"filterValues\":[\"California\"],\"id\":\"region_west_california\",\"title\":\"Region West California\",\"workspace\":{\"id\":\"demo_west_california\",\"type\":\"workspace\"}}]}]}" + } + } + }, + { + "request": { + "method": "GET", + "uri": "http://localhost:3000/api/v1/layout/workspaceDataFilters", + "body": null, + "headers": { + "Accept": [ + "application/json" + ], + "X-Requested-With": [ + "XMLHttpRequest" + ], + "X-GDC-VALIDATE-RELATIONS": [ + "true" + ] + } + }, + "response": { + "status": { + "code": 200, + "message": "" + }, + "headers": { + "X-XSS-Protection": [ + "1; mode=block" + ], + "X-Frame-Options": [ + "DENY" + ], + "Date": [ + "Mon, 20 Jun 2022 08:39:47 GMT" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "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" + ], + "Transfer-Encoding": [ + "chunked" + ], + "Access-Control-Allow-Credentials": [ + "true" + ], + "Set-Cookie": [ + "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + ], + "Permission-Policy": [ + "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" + ], + "Vary": [ + "Origin", + "Access-Control-Request-Method", + "Access-Control-Request-Headers" + ], + "Expires": [ + "0" + ], + "X-GDC-TRACE-ID": [ + "198a9f61a0ecfcd6" + ], + "Access-Control-Expose-Headers": [ + "Content-Disposition, Content-Length, Content-Range, Set-Cookie" + ], + "Server": [ + "nginx" + ], + "Content-Type": [ + "application/json" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Pragma": [ + "no-cache" + ], + "GoodData-Deployment": [ + "aio" + ] + }, + "body": { + "string": "{\"workspaceDataFilters\":[{\"columnName\":\"wdf__region\",\"id\":\"wdf__region\",\"title\":\"Customer region\",\"workspace\":{\"id\":\"demo\",\"type\":\"workspace\"},\"workspaceDataFilterSettings\":[{\"filterValues\":[\"West\"],\"id\":\"region_west\",\"title\":\"Region West\",\"workspace\":{\"id\":\"demo_west\",\"type\":\"workspace\"}}]},{\"columnName\":\"wdf__state\",\"id\":\"wdf__state\",\"title\":\"Customer state\",\"workspace\":{\"id\":\"demo_west\",\"type\":\"workspace\"},\"workspaceDataFilterSettings\":[{\"filterValues\":[\"California\"],\"id\":\"region_west_california\",\"title\":\"Region West California\",\"workspace\":{\"id\":\"demo_west_california\",\"type\":\"workspace\"}}]}]}" + } + } + }, + { + "request": { + "method": "GET", + "uri": "http://localhost:3000/api/v1/entities/organization", + "body": null, + "headers": { + "X-Requested-With": [ + "XMLHttpRequest" + ], + "X-GDC-VALIDATE-RELATIONS": [ + "true" + ] + } + }, + "response": { + "status": { + "code": 302, + "message": "" + }, + "headers": { + "X-XSS-Protection": [ + "1; mode=block" + ], + "X-Frame-Options": [ + "DENY" + ], + "Date": [ + "Mon, 20 Jun 2022 08:39:47 GMT" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "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" + ], + "Transfer-Encoding": [ + "chunked" + ], + "Access-Control-Allow-Credentials": [ + "true" + ], + "Set-Cookie": [ + "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + ], + "Permission-Policy": [ + "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" + ], + "Vary": [ + "Origin", + "Access-Control-Request-Method", + "Access-Control-Request-Headers" + ], + "Expires": [ + "0" + ], + "X-GDC-TRACE-ID": [ + "338117fe5ebda860" + ], + "Access-Control-Expose-Headers": [ + "Content-Disposition, Content-Length, Content-Range, Set-Cookie" + ], + "Server": [ + "nginx" + ], + "Location": [ + "/api/v1/entities/admin/organizations/default" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Pragma": [ + "no-cache" + ], + "GoodData-Deployment": [ + "aio" + ] + }, + "body": { + "string": "" + } + } + }, + { + "request": { + "method": "GET", + "uri": "http://localhost:3000/api/v1/entities/admin/organizations/default", + "body": null, + "headers": { + "X-Requested-With": [ + "XMLHttpRequest" + ], + "X-GDC-VALIDATE-RELATIONS": [ + "true" + ] + } + }, + "response": { + "status": { + "code": 200, + "message": "" + }, + "headers": { + "X-XSS-Protection": [ + "1; mode=block" + ], + "X-Frame-Options": [ + "DENY" + ], + "Date": [ + "Mon, 20 Jun 2022 08:39:47 GMT" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "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" + ], + "Transfer-Encoding": [ + "chunked" + ], + "Access-Control-Allow-Credentials": [ + "true" + ], + "Set-Cookie": [ + "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + ], + "Permission-Policy": [ + "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" + ], + "Vary": [ + "Origin", + "Access-Control-Request-Method", + "Access-Control-Request-Headers" + ], + "Expires": [ + "0" + ], + "X-GDC-TRACE-ID": [ + "9b2380ecba0c8f8f" + ], + "Access-Control-Expose-Headers": [ + "Content-Disposition, Content-Length, Content-Range, Set-Cookie" + ], + "Server": [ + "nginx" + ], + "Content-Type": [ + "application/vnd.gooddata.api+json" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Pragma": [ + "no-cache" + ], + "GoodData-Deployment": [ + "aio" + ] + }, + "body": { + "string": "{\"data\":{\"attributes\":{\"name\":\"Default Organization\",\"hostname\":\"localhost\",\"oauthClientId\":\"b89c4710-1045-4da1-9d39-fa18da7cf6b0\"},\"id\":\"default\",\"type\":\"organization\"},\"links\":{\"self\":\"http://localhost:3000/api/v1/entities/admin/organizations/default\"}}" + } + } + }, + { + "request": { + "method": "GET", + "uri": "http://localhost:3000/api/v1/entities/organization", + "body": null, + "headers": { + "X-Requested-With": [ + "XMLHttpRequest" + ], + "X-GDC-VALIDATE-RELATIONS": [ + "true" + ] + } + }, + "response": { + "status": { + "code": 302, + "message": "" + }, + "headers": { + "X-XSS-Protection": [ + "1; mode=block" + ], + "X-Frame-Options": [ + "DENY" + ], + "Date": [ + "Mon, 20 Jun 2022 08:39:47 GMT" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "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" + ], + "Transfer-Encoding": [ + "chunked" + ], + "Access-Control-Allow-Credentials": [ + "true" + ], + "Set-Cookie": [ + "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + ], + "Permission-Policy": [ + "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" + ], + "Vary": [ + "Origin", + "Access-Control-Request-Method", + "Access-Control-Request-Headers" + ], + "Expires": [ + "0" + ], + "X-GDC-TRACE-ID": [ + "676281dc049d3132" + ], + "Access-Control-Expose-Headers": [ + "Content-Disposition, Content-Length, Content-Range, Set-Cookie" + ], + "Server": [ + "nginx" + ], + "Location": [ + "/api/v1/entities/admin/organizations/default" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Pragma": [ + "no-cache" + ], + "GoodData-Deployment": [ + "aio" + ] + }, + "body": { + "string": "" + } + } + }, + { + "request": { + "method": "GET", + "uri": "http://localhost:3000/api/v1/entities/admin/organizations/default", + "body": null, + "headers": { + "X-Requested-With": [ + "XMLHttpRequest" + ], + "X-GDC-VALIDATE-RELATIONS": [ + "true" + ] + } + }, + "response": { + "status": { + "code": 200, + "message": "" + }, + "headers": { + "X-XSS-Protection": [ + "1; mode=block" + ], + "X-Frame-Options": [ + "DENY" + ], + "Date": [ + "Mon, 20 Jun 2022 08:39:47 GMT" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "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" + ], + "Transfer-Encoding": [ + "chunked" + ], + "Access-Control-Allow-Credentials": [ + "true" + ], + "Set-Cookie": [ + "SPRING_SEC_SECURITY_CONTEXT=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly" + ], + "Permission-Policy": [ + "geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'none'; payment 'none';" + ], + "Vary": [ + "Origin", + "Access-Control-Request-Method", + "Access-Control-Request-Headers" + ], + "Expires": [ + "0" + ], + "X-GDC-TRACE-ID": [ + "3d72ff1e1d7cf540" + ], + "Access-Control-Expose-Headers": [ + "Content-Disposition, Content-Length, Content-Range, Set-Cookie" + ], + "Server": [ + "nginx" + ], + "Content-Type": [ + "application/vnd.gooddata.api+json" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Pragma": [ + "no-cache" + ], + "GoodData-Deployment": [ + "aio" + ] + }, + "body": { + "string": "{\"data\":{\"attributes\":{\"name\":\"Default Organization\",\"hostname\":\"localhost\",\"oauthClientId\":\"b89c4710-1045-4da1-9d39-fa18da7cf6b0\"},\"id\":\"default\",\"type\":\"organization\"},\"links\":{\"self\":\"http://localhost:3000/api/v1/entities/admin/organizations/default\"}}" + } + } + } + ] +} diff --git a/gooddata-sdk/tests/catalog/test_catalog_workspace.py b/gooddata-sdk/tests/catalog/test_catalog_workspace.py index 3fd8e1687..28d406623 100644 --- a/gooddata-sdk/tests/catalog/test_catalog_workspace.py +++ b/gooddata-sdk/tests/catalog/test_catalog_workspace.py @@ -8,7 +8,10 @@ import gooddata_metadata_client.apis as metadata_apis from gooddata_sdk import GoodDataApiClient, GoodDataSdk -from gooddata_sdk.catalog.workspace.declarative_model.workspace.workspace import CatalogDeclarativeWorkspaces +from gooddata_sdk.catalog.workspace.declarative_model.workspace.workspace import ( + CatalogDeclarativeWorkspaceDataFilters, + CatalogDeclarativeWorkspaces, +) from gooddata_sdk.catalog.workspace.entity_model.workspace import CatalogWorkspace from gooddata_sdk.utils import create_directory from tests import VCR_MATCH_ON @@ -27,6 +30,18 @@ def _empty_workspaces(sdk: GoodDataSdk) -> None: assert empty_workspaces_e.to_dict(camel_case=True) == empty_workspaces_o.to_dict(camel_case=True) +def _empty_workspace_data_filters(sdk: GoodDataSdk) -> None: + empty_workspace_data_filters_e = CatalogDeclarativeWorkspaceDataFilters.from_dict( + {"workspace_data_filters": []}, camel_case=False + ) + sdk.catalog_workspace.put_declarative_workspace_data_filters(empty_workspace_data_filters_e) + empty_workspace_data_filters_o = sdk.catalog_workspace.get_declarative_workspace_data_filters() + assert empty_workspace_data_filters_e == empty_workspace_data_filters_o + assert empty_workspace_data_filters_e.to_dict(camel_case=True) == empty_workspace_data_filters_o.to_dict( + camel_case=True + ) + + @gd_vcr.use_cassette(str(_fixtures_dir / "demo_load_and_put_declarative_workspaces.json")) def test_load_and_put_declarative_workspaces(test_config): sdk = GoodDataSdk.create(host_=test_config["host"], token_=test_config["token"]) @@ -301,3 +316,82 @@ def test_workspace_list(test_config): workspaces_parent = {w.id: w.parent_id for w in workspaces} workspaces_parent_l = [workspaces_parent[workspace_id] for workspace_id in workspaces_id] assert parents == workspaces_parent_l + + +@gd_vcr.use_cassette(str(_fixtures_dir / "demo_get_declarative_workspace_data_filters.json")) +def test_get_declarative_workspace_data_filters(test_config): + sdk = GoodDataSdk.create(host_=test_config["host"], token_=test_config["token"]) + client = GoodDataApiClient(host=test_config["host"], token=test_config["token"]) + layout_api = metadata_apis.LayoutApi(client.metadata_client) + + declarative_workspace_data_filters = sdk.catalog_workspace.get_declarative_workspace_data_filters() + workspace_data_filters = declarative_workspace_data_filters.workspace_data_filters + + assert len(workspace_data_filters) == 2 + assert set(workspace_data_filter.id for workspace_data_filter in workspace_data_filters) == { + "wdf__region", + "wdf__state", + } + + assert declarative_workspace_data_filters.to_dict( + camel_case=True + ) == layout_api.get_workspace_data_filters_layout().to_dict(camel_case=True) + + +@gd_vcr.use_cassette(str(_fixtures_dir / "demo_store_declarative_workspace_data_filters.json")) +def test_store_declarative_workspace_data_filters(test_config): + sdk = GoodDataSdk.create(host_=test_config["host"], token_=test_config["token"]) + path = _current_dir / "store" + create_directory(path) + + declarative_workspace_data_filters_e = sdk.catalog_workspace.get_declarative_workspace_data_filters() + sdk.catalog_workspace.store_declarative_workspace_data_filters(path) + declarative_workspace_data_filters_o = sdk.catalog_workspace.load_declarative_workspace_data_filters(path) + + assert declarative_workspace_data_filters_e == declarative_workspace_data_filters_o + assert declarative_workspace_data_filters_e.to_dict( + camel_case=True + ) == declarative_workspace_data_filters_o.to_dict(camel_case=True) + + +@gd_vcr.use_cassette(str(_fixtures_dir / "demo_load_and_put_declarative_workspace_data_filters.json")) +def test_load_and_put_declarative_workspace_data_filters(test_config): + sdk = GoodDataSdk.create(host_=test_config["host"], token_=test_config["token"]) + path = _current_dir / "load" + expected_json_path = _current_dir / "expected" / "declarative_workspace_data_filters.json" + workspace_data_filters_e = sdk.catalog_workspace.get_declarative_workspace_data_filters() + + try: + _empty_workspace_data_filters(sdk) + + sdk.catalog_workspace.load_and_put_declarative_workspace_data_filters(path) + workspace_data_filters_o = sdk.catalog_workspace.get_declarative_workspace_data_filters() + assert workspace_data_filters_e == workspace_data_filters_o + assert workspace_data_filters_e.to_dict(camel_case=True) == workspace_data_filters_o.to_dict(camel_case=True) + finally: + with open(expected_json_path) as f: + data = json.load(f) + workspace_data_filters_o = CatalogDeclarativeWorkspaceDataFilters.from_dict(data, camel_case=True) + sdk.catalog_workspace.put_declarative_workspace_data_filters(workspace_data_filters_o) + + +@gd_vcr.use_cassette(str(_fixtures_dir / "demo_put_declarative_workspace_data_filters.json")) +def test_put_declarative_workspace_data_filters(test_config): + sdk = GoodDataSdk.create(host_=test_config["host"], token_=test_config["token"]) + path = _current_dir / "expected" / "declarative_workspace_data_filters.json" + declarative_workspace_data_filters_e = sdk.catalog_workspace.get_declarative_workspace_data_filters() + + try: + _empty_workspace_data_filters(sdk) + + sdk.catalog_workspace.put_declarative_workspace_data_filters(declarative_workspace_data_filters_e) + declarative_workspace_data_filters_o = sdk.catalog_workspace.get_declarative_workspace_data_filters() + assert declarative_workspace_data_filters_e == declarative_workspace_data_filters_o + assert declarative_workspace_data_filters_e.to_dict( + camel_case=True + ) == declarative_workspace_data_filters_o.to_dict(camel_case=True) + finally: + with open(path) as f: + data = json.load(f) + declarative_workspace_data_filters_o = CatalogDeclarativeWorkspaceDataFilters.from_dict(data) + sdk.catalog_workspace.put_declarative_workspace_data_filters(declarative_workspace_data_filters_o)