From 801df832e53e56bc364f73fb88a1315eea91fb55 Mon Sep 17 00:00:00 2001 From: Kevin Morris Date: Mon, 15 Aug 2022 10:06:44 -0700 Subject: [PATCH] fix(rpc): correct URLPath in package results This was incorrectly using the particular Package record's name to format options.snapshot_uri in order to produce URLPath. It should, instead, use the PackageBase record's name, which this commit resolves. Bug reported by thomy2000 Closes #382 Signed-off-by: Kevin Morris --- aurweb/rpc.py | 2 +- test/test_rpc.py | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/aurweb/rpc.py b/aurweb/rpc.py index f04de7d6..3ea7e070 100644 --- a/aurweb/rpc.py +++ b/aurweb/rpc.py @@ -138,7 +138,7 @@ class RPC: "Version": package.Version, "Description": package.Description, "URL": package.URL, - "URLPath": snapshot_uri % package.Name, + "URLPath": snapshot_uri % package.PackageBaseName, "NumVotes": package.NumVotes, "Popularity": pop, "OutOfDate": package.OutOfDateTS, diff --git a/test/test_rpc.py b/test/test_rpc.py index 0e24467a..c0861d3d 100644 --- a/test/test_rpc.py +++ b/test/test_rpc.py @@ -297,6 +297,28 @@ def test_rpc_singular_info(client: TestClient, assert response_data == expected_data +def test_rpc_split_package_urlpath(client: TestClient, user: User): + with db.begin(): + pkgbase = db.create(PackageBase, Name="pkg", + Maintainer=user, Packager=user) + pkgs = [ + db.create(Package, PackageBase=pkgbase, Name="pkg_1"), + db.create(Package, PackageBase=pkgbase, Name="pkg_2"), + ] + + with client as request: + response = request.get("/rpc", params={ + "v": 5, + "type": "info", + "arg": [pkgs[0].Name], + }) + + data = orjson.loads(response.text) + snapshot_uri = config.get("options", "snapshot_uri") + urlpath = data.get("results")[0].get("URLPath") + assert urlpath == (snapshot_uri % pkgbase.Name) + + def test_rpc_nonexistent_package(client: TestClient): # Make dummy request. with client as request: