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)
|
||||
|
||||
limit = body.get("limit", 10)
|
||||
limit = min(limit, 50)
|
||||
limit = int(body.get("limit", 10))
|
||||
limit = max(min(limit, 50), 0)
|
||||
|
||||
try:
|
||||
search_term = body["search_term"]
|
||||
|
|
|
@ -886,7 +886,7 @@ class UserDirectoryStore(UserDirectoryBackgroundUpdateStore):
|
|||
|
||||
limited = len(results) > limit
|
||||
|
||||
return {"limited": limited, "results": results}
|
||||
return {"limited": limited, "results": results[0:limit]}
|
||||
|
||||
|
||||
def _parse_query_sqlite(search_term: str) -> str:
|
||||
|
|
|
@ -448,6 +448,12 @@ class UserDirectoryStoreTestCase(HomeserverTestCase):
|
|||
{"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}})
|
||||
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
|
||||
|
|
Loading…
Reference in New Issue