Fix a long-standing bug where the user directory would return 1 more row than requested. (#14631)
This commit is contained in:
parent
9e82caac45
commit
cf1059d045
|
@ -0,0 +1 @@
|
||||||
|
Fix a long-standing bug where the user directory would return 1 more row than requested.
|
|
@ -63,8 +63,8 @@ class UserDirectorySearchRestServlet(RestServlet):
|
||||||
|
|
||||||
body = parse_json_object_from_request(request)
|
body = parse_json_object_from_request(request)
|
||||||
|
|
||||||
limit = body.get("limit", 10)
|
limit = int(body.get("limit", 10))
|
||||||
limit = min(limit, 50)
|
limit = max(min(limit, 50), 0)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
search_term = body["search_term"]
|
search_term = body["search_term"]
|
||||||
|
|
|
@ -886,7 +886,7 @@ class UserDirectoryStore(UserDirectoryBackgroundUpdateStore):
|
||||||
|
|
||||||
limited = len(results) > limit
|
limited = len(results) > limit
|
||||||
|
|
||||||
return {"limited": limited, "results": results}
|
return {"limited": limited, "results": results[0:limit]}
|
||||||
|
|
||||||
|
|
||||||
def _parse_query_sqlite(search_term: str) -> str:
|
def _parse_query_sqlite(search_term: str) -> str:
|
||||||
|
|
|
@ -448,6 +448,12 @@ class UserDirectoryStoreTestCase(HomeserverTestCase):
|
||||||
{"user_id": BOBBY, "display_name": "bobby", "avatar_url": None},
|
{"user_id": BOBBY, "display_name": "bobby", "avatar_url": None},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@override_config({"user_directory": {"search_all_users": True}})
|
||||||
|
def test_search_user_limit_correct(self) -> None:
|
||||||
|
r = self.get_success(self.store.search_user_dir(ALICE, "bob", 1))
|
||||||
|
self.assertTrue(r["limited"])
|
||||||
|
self.assertEqual(1, len(r["results"]))
|
||||||
|
|
||||||
@override_config({"user_directory": {"search_all_users": True}})
|
@override_config({"user_directory": {"search_all_users": True}})
|
||||||
def test_search_user_dir_stop_words(self) -> None:
|
def test_search_user_dir_stop_words(self) -> None:
|
||||||
"""Tests that a user can look up another user by searching for the start if its
|
"""Tests that a user can look up another user by searching for the start if its
|
||||||
|
|
Loading…
Reference in New Issue