Skip to content

Commit

Permalink
Test workspace
Browse files Browse the repository at this point in the history
  • Loading branch information
vuilleumierc committed Aug 22, 2024
1 parent b7c1c88 commit fcbaa5d
Show file tree
Hide file tree
Showing 7 changed files with 119 additions and 4 deletions.
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ help: ## Display this help message

.PHONY: install
install: ## Install package
poetry lock --no-update
poetry install

.PHONY: build
Expand Down
8 changes: 5 additions & 3 deletions geoservercloud/geoservercloud.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,12 +102,14 @@ def delete_workspace(self, workspace: str) -> Response:

def recreate_workspace(
self, workspace: str, set_default_workspace: bool = False
) -> None:
) -> Response:
"""
Create a workspace in GeoServer, and first delete it if it already exists.
"""
self.delete_workspace(workspace)
self.create_workspace(workspace, set_default_workspace=set_default_workspace)
return self.create_workspace(
workspace, set_default_workspace=set_default_workspace
)

def publish_workspace(self, workspace) -> Response:
path: str = f"{self.workspace_wms_settings_path(workspace)}"
Expand Down Expand Up @@ -333,7 +335,7 @@ def publish_gwc_layer(
self.post_request(
"/gwc/rest/reload",
headers={"Content-Type": "application/json"},
data="reload_configuration=1",
data="reload_configuration=1", # type: ignore
)
payload = Templates.gwc_layer(workspace, layer, f"EPSG:{epsg}")
return self.put_request(
Expand Down
22 changes: 21 additions & 1 deletion poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ xmltodict = "0.13.0"

[tool.poetry.group.dev.dependencies]
pytest = "8.2.2"
responses = "0.25.3"

[build-system]
requires = [
Expand Down
Empty file added tests/__init__.py
Empty file.
11 changes: 11 additions & 0 deletions tests/conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import pytest

from geoservercloud import GeoServerCloud

GEOSERVER_URL = "http://localhost:8080/geoserver"


@pytest.fixture(scope="session")
def geoserver():
geoserver = GeoServerCloud(url=GEOSERVER_URL)
yield geoserver
80 changes: 80 additions & 0 deletions tests/test_workspace.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
import responses
from responses import matchers

from geoservercloud.geoservercloud import GeoServerCloud
from tests.conftest import GEOSERVER_URL


def test_create_workspace(geoserver: GeoServerCloud) -> None:
workspace = "test_workspace"
isolated = True

with responses.RequestsMock() as rsps:
rsps.post(
url=f"{GEOSERVER_URL}/rest/workspaces.json",
status=201,
match=[
matchers.json_params_matcher(
{
"workspace": {
"name": workspace,
"isolated": isolated,
}
}
)
],
)

response = geoserver.create_workspace(workspace, isolated=isolated)

assert response.status_code == 201


def test_update_workspace(geoserver: GeoServerCloud) -> None:
workspace = "test_workspace"

with responses.RequestsMock() as rsps:
rsps.post(
url=f"{GEOSERVER_URL}/rest/workspaces.json",
status=409,
)
rsps.put(
url=f"{GEOSERVER_URL}/rest/workspaces/{workspace}.json",
status=200,
)

response = geoserver.create_workspace(workspace)

assert response.status_code == 200


def test_delete_workspace(geoserver: GeoServerCloud) -> None:
workspace = "test_workspace"

with responses.RequestsMock() as rsps:
rsps.delete(
url=f"{GEOSERVER_URL}/rest/workspaces/{workspace}.json",
status=200,
)

response = geoserver.delete_workspace(workspace)

assert response.status_code == 200


def test_recreate_workspace(geoserver: GeoServerCloud) -> None:
workspace = "test_workspace"

with responses.RequestsMock() as rsps:
rsps.delete(
url=f"{GEOSERVER_URL}/rest/workspaces/{workspace}.json",
status=200,
)
rsps.post(
url=f"{GEOSERVER_URL}/rest/workspaces.json",
status=201,
)

response = geoserver.recreate_workspace(workspace)

assert response.status_code == 201

0 comments on commit fcbaa5d

Please sign in to comment.