From 5484e68b42392c95a90a3425841419a5782c412a Mon Sep 17 00:00:00 2001 From: moson-mo Date: Mon, 7 Nov 2022 22:46:24 +0100 Subject: [PATCH] feat(rpc): add "by" parameter - submitter Add "by" parameter: submitter Signed-off-by: moson-mo --- aurweb/packages/search.py | 2 +- aurweb/rpc.py | 3 ++- test/test_rpc.py | 31 +++++++++++++++++++++++++++++-- 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/aurweb/packages/search.py b/aurweb/packages/search.py index 60e9f0fc..51d97d8e 100644 --- a/aurweb/packages/search.py +++ b/aurweb/packages/search.py @@ -269,7 +269,7 @@ class RPCSearch(PackageSearch): sanitization done for the PackageSearch `by` argument. """ - keys_removed = ("b", "N", "B", "k", "c", "M", "s") + keys_removed = ("b", "N", "B", "k", "c", "M") def __init__(self) -> "RPCSearch": super().__init__() diff --git a/aurweb/rpc.py b/aurweb/rpc.py index 5cdf675d..fa36486e 100644 --- a/aurweb/rpc.py +++ b/aurweb/rpc.py @@ -87,10 +87,11 @@ class RPC: "conflicts", "replaces", "groups", + "submitter", } # A mapping of by aliases. - BY_ALIASES = {"name-desc": "nd", "name": "n", "maintainer": "m"} + BY_ALIASES = {"name-desc": "nd", "name": "n", "maintainer": "m", "submitter": "s"} def __init__(self, version: int = 0, type: str = None) -> "RPC": self.version = version diff --git a/test/test_rpc.py b/test/test_rpc.py index bbd74588..5d59d16b 100644 --- a/test/test_rpc.py +++ b/test/test_rpc.py @@ -81,7 +81,11 @@ def packages(user: User, user2: User, user3: User) -> list[Package]: # Create package records used in our tests. with db.begin(): pkgbase = db.create( - PackageBase, Name="big-chungus", Maintainer=user, Packager=user + PackageBase, + Name="big-chungus", + Maintainer=user, + Packager=user, + Submitter=user2, ) pkg = db.create( Package, @@ -93,7 +97,11 @@ def packages(user: User, user2: User, user3: User) -> list[Package]: output.append(pkg) pkgbase = db.create( - PackageBase, Name="chungy-chungus", Maintainer=user, Packager=user + PackageBase, + Name="chungy-chungus", + Maintainer=user, + Packager=user, + Submitter=user2, ) pkg = db.create( Package, @@ -911,6 +919,25 @@ def test_rpc_search_groups( assert result.get("Name") == packages[0].Name +def test_rpc_search_submitter(client: TestClient, user2: User, packages: list[Package]): + params = {"v": 5, "type": "search", "by": "submitter", "arg": user2.Username} + with client as request: + response = request.get("/rpc", params=params) + data = response.json() + + # user2 submitted 2 packages + assert data.get("resultcount") == 2 + names = list(sorted(r.get("Name") for r in data.get("results"))) + expected_results = ["big-chungus", "chungy-chungus"] + assert names == expected_results + + # Search for a non-existent submitter, giving us zero packages. + params["arg"] = "blah-blah" + response = request.get("/rpc", params=params) + data = response.json() + assert data.get("resultcount") == 0 + + def test_rpc_incorrect_by(client: TestClient): params = {"v": 5, "type": "search", "by": "fake", "arg": "big"} with client as request: