From de4e751e7a41037e369ecea65c7fafc3927f3992 Mon Sep 17 00:00:00 2001 From: Steven Bal Date: Mon, 29 Sep 2025 09:30:30 +0200 Subject: [PATCH] :white_check_mark: [#677] Use non superuser token and add perftest for objecttype filter --- performance_test/create_data.py | 11 +++++++++-- performance_test/tests/test_objects_list.py | 22 +++++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/performance_test/create_data.py b/performance_test/create_data.py index d0228e40..8623c2cc 100644 --- a/performance_test/create_data.py +++ b/performance_test/create_data.py @@ -6,14 +6,21 @@ ObjectRecordFactory as _ObjectRecordFactory, ObjectTypeFactory, ) -from objects.token.tests.factories import TokenAuthFactory +from objects.token.constants import PermissionModes +from objects.token.tests.factories import PermissionFactory, TokenAuthFactory object_type = ObjectTypeFactory.create( service__api_root="http://localhost:8001/api/v2/", uuid="f1220670-8ab7-44f1-a318-bd0782e97662", ) -token = TokenAuthFactory(token="secret", is_superuser=True) +token = TokenAuthFactory(token="secret", is_superuser=False) +PermissionFactory.create( + object_type=object_type, + mode=PermissionModes.read_only, + token_auth=token, + use_fields=False, +) class ObjectRecordFactory(_ObjectRecordFactory): diff --git a/performance_test/tests/test_objects_list.py b/performance_test/tests/test_objects_list.py index 1920d615..944e74da 100644 --- a/performance_test/tests/test_objects_list.py +++ b/performance_test/tests/test_objects_list.py @@ -98,3 +98,25 @@ def make_request(): assert result.json()["count"] == 1 benchmark_assertions(mean=1, max=1) + + +@pytest.mark.benchmark(max_time=60, min_rounds=5) +def test_objects_api_list_filter_by_object_type(benchmark, benchmark_assertions): + """ + Regression test for maykinmedia/objects-api#677 + """ + params = { + "pageSize": 100, + "type": "http://localhost:8001/api/v2/objecttypes/f1220670-8ab7-44f1-a318-bd0782e97662", + "ordering": "-record__data__nested__timestamp", + } + + def make_request(): + return requests.get((BASE_URL / "objects").set(params), headers=AUTH_HEADERS) + + result = benchmark(make_request) + + assert result.status_code == 200 + assert result.json()["count"] == 5001 + + benchmark_assertions(mean=1, max=1)