Skip to content

Commit 3c710bc

Browse files
committed
Update request method headers and unittests to work with pagination
1 parent 81e4346 commit 3c710bc

10 files changed

Lines changed: 44 additions & 12 deletions

api/server/routes/aas.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def __init__(self, global_obj_store: ObjectStore[Identifiable]):
1717
def _setup_routes(self):
1818
@self.router.get("/shells")
1919
@paginated()
20-
async def get_all_aas() -> Any:
20+
async def get_all_aas(request: Request) -> Any:
2121
return self.service.get_all_shells_as_jsonable()
2222

2323
@self.router.post("/shells")

api/server/routes/aas_registry_server.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ def __init__(self, global_obj_store: ObjectStore[Identifiable]):
1919
def _setup_routes(self):
2020
@self.router.get("/")
2121
@paginated()
22-
async def get_all_aas_descriptors() -> Any:
22+
async def get_all_aas_descriptors(request: Request) -> Any:
2323
return self.service.get_all_asset_administration_shell_descriptors()
2424

2525
@self.router.get("/{aas_descriptor_id}")

api/server/routes/aasx_file_server.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ def __init__(self, global_obj_store: ObjectStore[Identifiable]):
1919
def _setup_routes(self):
2020
@self.router.get("")
2121
@paginated()
22-
async def get_all_aasx() -> Any:
22+
async def get_all_aasx(request: Request) -> Any:
2323
return self.service.get_all_aasx_package_ids()
2424

2525
@self.router.get("/{aasx_package_id}")

api/server/routes/submodel.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ async def post_submodel_elements(submodel_identifier: str, request: Request) ->
9999

100100
@self.router.get("/{submodel_identifier}/submodel-elements")
101101
@paginated()
102-
async def get_submodel_submodel_elements(submodel_identifier: str) -> Any:
102+
async def get_submodel_submodel_elements(request: Request, submodel_identifier: str) -> Any:
103103
# Get submodel elements
104104
self.service.get_submodel_elements(submodel_identifier)
105105

@@ -122,7 +122,7 @@ async def not_implemented_submodel_elements_path(submodel_identifier: str) -> An
122122

123123
@self.router.get("/{submodel_identifier}/submodel-elements/{id_short_path}")
124124
@paginated()
125-
async def get_submodel_submodel_elements_id_short_path(submodel_identifier: str, id_short_path: str) -> Any:
125+
async def get_submodel_submodel_elements_id_short_path(request: Request, submodel_identifier: str, id_short_path: str) -> Any:
126126
return self.service.get_submodel_element(submodel_identifier, id_short_path)
127127

128128
@self.router.post("/{submodel_identifier}/submodel-elements/{id_short_path}")

api/server/routes/submodel_registry_server.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ def __init__(self, global_obj_store: ObjectStore[Identifiable]):
1919
def _setup_routes(self):
2020
@self.router.get("/")
2121
@paginated()
22-
async def get_all_submodel_descriptors() -> Any:
22+
async def get_all_submodel_descriptors(request: Request) -> Any:
2323
return self.service.get_all_submodel_descriptors()
2424

2525
@self.router.get("/{submodel_id}")

api/test/__init__.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
def wrap_paginated(result):
2+
return {
3+
"result": result,
4+
"paging_metadata": {
5+
"next_cursor": None
6+
}
7+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"result": [],
3+
"paging_metadata": {
4+
"next_cursor": null
5+
}
6+
}

api/test/test_aas_service.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
from server import app
77

8+
from api.test import wrap_paginated
9+
810
BASE_URL = "/api/v3.0/"
911

1012

@@ -31,6 +33,9 @@ def setUp(self):
3133
with open(os.path.join(base_path, "examples/aas", "thumbnail_modified.json"), encoding="utf-8") as f:
3234
self.thumbnail_example_modified = json.load(f)
3335

36+
with open(os.path.join(base_path, "examples", "empty_paged_result.json"), encoding="utf-8") as f:
37+
self.empty_result = json.load(f)
38+
3439
# FIXME: modified AAS should contain more complex types but deserialization seems to fail
3540
with open(os.path.join(base_path, "examples/aas", "aas_modified.json"), encoding="utf-8") as f:
3641
self.aas_example_modified = json.load(f)
@@ -48,14 +53,14 @@ def test_aas_post(self):
4853
def test_get_all_shells(self):
4954
response = self.client.get(BASE_URL + "aas/shells")
5055
self.assertEqual(response.status_code, 200)
51-
self.assertEqual(response.json(), [])
56+
self.assertEqual(response.json(), self.empty_result)
5257

5358
# Setup
5459
self.client.post(BASE_URL + "aas/shells", json=self.aas_example)
5560

5661
response = self.client.get(BASE_URL + "aas/shells")
5762
self.assertEqual(response.status_code, 200)
58-
self.assertEqual(response.json(), [self.aas_example])
63+
self.assertEqual(response.json(), wrap_paginated([self.aas_example]))
5964

6065
# Teardown
6166
self.client.delete(BASE_URL + "ass/shells/" + self.shell_example_id)

api/test/test_aasx_file_server_service.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
from server import app
77
from aas_core3 import jsonization
88

9+
from api.test import wrap_paginated
10+
911
client = TestClient(app)
1012
BASE_URL = "/api/v3.0/"
1113

@@ -18,21 +20,25 @@ def setUp(self):
1820
with open(os.path.join(base_path, "examples/aasx", "aasx.json"), encoding="utf-8") as f:
1921
self.aasx_json = json.load(f)
2022

23+
with open(os.path.join(base_path, "examples", "empty_paged_result.json"), encoding="utf-8") as f:
24+
self.empty_result = json.load(f)
25+
26+
2127
self.test_aasx_id = self.aasx_json["id"]
2228
self.aasx = jsonization.asset_administration_shell_from_jsonable(self.aasx_json)
2329

2430
def test_get_all_aasx_package_ids(self):
2531
# Test empty
2632
response = self.client.get(BASE_URL + "aasx")
2733
self.assertEqual(response.status_code, 200)
28-
self.assertEqual(response.json(), [])
34+
self.assertEqual(response.json(), self.empty_result)
2935

3036
# Setup
3137
self.client.post(BASE_URL + "aasx", json=self.aasx_json)
3238

3339
response = self.client.get(BASE_URL + "aasx")
3440
self.assertEqual(response.status_code, 200)
35-
self.assertEqual(response.json(), [self.test_aasx_id])
41+
self.assertEqual(response.json(), wrap_paginated([self.test_aasx_id]))
3642

3743
# Teardown
3844
self.client.delete(BASE_URL + "aasx/" + self.test_aasx_id)

api/test/test_submodel_service.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
from server import app
88

9+
from api.test import wrap_paginated
10+
911
client = TestClient(app)
1012
BASE_URL = "/api/v3.0/"
1113

@@ -27,6 +29,9 @@ def setUp(self):
2729
self.submodel_element_new = json.load(f)
2830
with open(os.path.join(base_path, "examples/submodel", "submodel_with_new_element.json"), encoding="utf-8") as f:
2931
self.submodel_with_new_element = json.load(f)
32+
with open(os.path.join(base_path, "examples", "empty_paged_result.json"), encoding="utf-8") as f:
33+
self.empty_result = json.load(f)
34+
3035

3136
self.submodel_example_id = self.submodel_example["id"]
3237
self.submodel_example_2_id = self.submodel_example_2["id"]
@@ -37,14 +42,14 @@ def setUp(self):
3742
def test_get_all_submodels(self):
3843
response = self.client.get(BASE_URL + "submodels")
3944
self.assertEqual(response.status_code, 200)
40-
self.assertEqual(response.json(), [])
45+
self.assertEqual(response.json(), self.empty_result)
4146

4247
# Setup
4348
self.client.post(BASE_URL + "submodels", json=self.submodel_example)
4449

4550
response = self.client.get(BASE_URL + "submodels")
4651
self.assertEqual(response.status_code, 200)
47-
self.assertEqual(response.json(), [self.submodel_example])
52+
self.assertEqual(response.json(), wrap_paginated([self.submodel_example]))
4853

4954
# Teardown
5055
self.client.delete(BASE_URL + "submodels/" + self.submodel_example_id)
@@ -101,6 +106,9 @@ def test_post_submodel_element(self):
101106
self.assertEqual(new_submodel.status_code, 200)
102107
self.assertEqual(new_submodel.json(), self.submodel_with_new_element)
103108

109+
# Teardown
110+
self.client.delete(BASE_URL + "submodels/" + self.submodel_example_id + "/")
111+
104112
def test_delete_submodel_element(self):
105113
# Setup
106114
self.client.post(BASE_URL + "submodels", json=self.submodel_example)

0 commit comments

Comments
 (0)