Skip to content
Snippets Groups Projects
Commit cdb72709 authored by Hunter Wittenborn's avatar Hunter Wittenborn
Browse files

Added unit tests for searches

Also fixed how arguments are passed to run_search_dependencies() We'll 
be squashing all of these commits so it shouldn't matter too much that 
I'm combining like this :)
parent eed17174
No related branches found
No related tags found
No related merge requests found
Pipeline #11353 failed
......@@ -210,7 +210,9 @@ def run_search(**args):
run_info_list = []
if search_by in DEP_NAMES.keys():
run_search_dependencies(search_by, package_name, run_info_list)
run_search_dependencies(search_by=search_by,
package_name=package_name,
run_info_list=run_info_list)
else:
search = PackageSearch(request.user)
......@@ -283,10 +285,6 @@ def RPC(**function_args):
search_by=search_by,
request=request)
# Return the error message if one was made.
if returned_data.get("type") == "error":
break
elif type is None:
returned_data["type"] = "error"
returned_data["error"] = "No request type/data specified."
......
File moved
import orjson
import pytest
from fastapi.testclient import TestClient
from aurweb.asgi import app
from aurweb.db import begin, create, query
from aurweb.models.account_type import AccountType
from aurweb.models.dependency_type import DependencyType
from aurweb.models.package import Package
from aurweb.models.package_base import PackageBase
from aurweb.models.package_dependency import PackageDependency
from aurweb.models.user import User
from aurweb.testing import setup_test_db
def make_request(path):
with TestClient(app) as request:
return request.get(path)
def remove_bad_keys(dict_data):
for i in dict_data["results"]:
i.pop("ID")
i.pop("PackageBaseID")
i.pop("FirstSubmitted")
i.pop("LastModified")
return dict_data
@pytest.fixture(autouse=True)
def setup():
setup_test_db("Users", "PackageBases", "Packages", "Licenses",
"PackageDepends", "PackageRelations", "PackageLicenses",
"PackageKeywords", "PackageVotes")
with begin():
account_type = query(AccountType, AccountType.AccountType == "User").first()
dependency_depends = query(DependencyType, DependencyType.Name == "depends").first()
dependency_optdepends = query(DependencyType, DependencyType.Name == "optdepends").first()
dependency_makedepends = query(DependencyType, DependencyType.Name == "makedepends").first()
dependency_checkdepends = query(DependencyType, DependencyType.Name == "checkdepends").first()
user1 = create(User,
Username="user1",
Email="user1@example.com",
RealName="Test User 1",
Passwd="testPassword",
AccountType=account_type)
user2 = create(User,
Username="user2",
Email="user2@example.com",
RealName="Test User 2",
Passwd="testPassword",
AccountType=account_type)
pkgbase1 = create(PackageBase, Name="big-chungus1", Maintainer=user1)
pkgname1 = create(Package,
PackageBase=pkgbase1,
Name=pkgbase1.Name,
Description="Cookie Monster",
URL="https://example.com/")
pkgbase2 = create(PackageBase, Name="big-chungus2", Maintainer=user1)
pkgname2 = create(Package,
PackageBase=pkgbase2,
Name=pkgbase2.Name,
Description="Bunny bunny around bunny",
URL="https://example.com/")
pkgbase3 = create(PackageBase, Name="small-chungus3", Maintainer=user2)
pkgname3 = create(Package,
PackageBase=pkgbase3,
Name=pkgbase3.Name,
Description="Bunny bunny around bunny",
URL="https://example.com/")
pkgbase4 = create(PackageBase, Name="small-chungus4", Maintainer=user1)
pkgname4 = create(Package,
PackageBase=pkgbase4,
Name=pkgbase4.Name,
Description="Bunny bunny around bunny",
URL="https://example.com/")
create(PackageDependency,
Package=pkgname1,
DependencyType=dependency_depends,
DepName="chungus-depends")
create(PackageDependency,
Package=pkgname2,
DependencyType=dependency_optdepends,
DepName="chungus-optdepends")
create(PackageDependency,
Package=pkgname3,
DependencyType=dependency_makedepends,
DepName="chungus-makedepends")
create(PackageDependency,
Package=pkgname4,
DependencyType=dependency_checkdepends,
DepName="chungus-checkdepends")
def test_name():
expected_data = {
'version': 5,
'results': [
{
'Name': 'big-chungus1',
'Version': '',
'Description': 'Cookie Monster',
'URL': 'https://example.com/',
'PackageBase': 'big-chungus1',
'NumVotes': 0,
'Popularity': 0.0,
'OutOfDate': None,
'Maintainer': 'user1',
'URLPath': '/cgit/aur.git/snapshot/big-chungus1.tar.gz',
'Depends': ['chungus-depends'],
'License': [],
'Keywords': []
},
{
'Name': 'big-chungus2',
'Version': '',
'Description': 'Bunny bunny around bunny',
'URL': 'https://example.com/',
'PackageBase': 'big-chungus2',
'NumVotes': 0,
'Popularity': 0.0,
'OutOfDate': None,
'Maintainer': 'user1',
'URLPath': '/cgit/aur.git/snapshot/big-chungus2.tar.gz',
'OptDepends': ['chungus-optdepends'],
'License': [],
'Keywords': []
}
],
'resultcount': 2,
'type': 'search'
}
returned_data = make_request("/rpc/?v=5&type=search&by=name&arg=big-chungus").content.decode()
returned_data = orjson.loads(returned_data)
returned_data = remove_bad_keys(returned_data)
assert returned_data == expected_data
def test_name_desc():
expected_data = {
'version': 5,
'results': [{
'Name': 'big-chungus1',
'Version': '',
'Description': 'Cookie Monster',
'URL': 'https://example.com/',
'PackageBase': 'big-chungus1',
'NumVotes': 0,
'Popularity': 0.0,
'OutOfDate': None,
'Maintainer': 'user1',
'URLPath': '/cgit/aur.git/snapshot/big-chungus1.tar.gz',
'Depends': ['chungus-depends'],
'License': [],
'Keywords': []
}],
'resultcount': 1,
'type': 'search'
}
# Specifying no 'by' field default's the field to 'name-desc'.
returned_data1 = make_request("/rpc/?v=5&type=search&arg=cookie").content.decode()
returned_data2 = make_request("/rpc/?v=5&type=search&arg=cookie&by=name-desc").content.decode()
returned_data1 = orjson.loads(returned_data1)
returned_data2 = orjson.loads(returned_data2)
returned_data1 = remove_bad_keys(returned_data1)
returned_data2 = remove_bad_keys(returned_data2)
for i in [returned_data1, returned_data2]:
assert i == expected_data
def test_maintainer():
expected_data = {
'version': 5,
'results': [{
'Name': 'small-chungus3',
'Version': '',
'Description': 'Bunny bunny around bunny',
'URL': 'https://example.com/',
'PackageBase': 'small-chungus3',
'NumVotes': 0,
'Popularity': 0.0,
'OutOfDate': None,
'Maintainer': 'user2',
'URLPath': '/cgit/aur.git/snapshot/small-chungus3.tar.gz',
'MakeDepends': ['chungus-makedepends'],
'License': [],
'Keywords': []
}],
'resultcount': 1,
'type': 'search'
}
returned_data = make_request("/rpc?v=5&type=search&by=maintainer&arg=user2").content.decode()
returned_data = orjson.loads(returned_data)
returned_data = remove_bad_keys(returned_data)
assert returned_data == expected_data
def test_depends():
expected_data = {
'version': 5,
'results': [{
'Name': 'big-chungus1',
'Version': '',
'Description': 'Cookie Monster',
'URL': 'https://example.com/',
'PackageBase': 'big-chungus1',
'NumVotes': 0,
'Popularity': 0.0,
'OutOfDate': None,
'Maintainer': 'user1',
'URLPath': '/cgit/aur.git/snapshot/big-chungus1.tar.gz',
'Depends': ['chungus-depends'],
'License': [],
'Keywords': []
}],
'resultcount': 1,
'type': 'search'
}
returned_data = make_request("/rpc?v=5&type=search&by=depends&arg=chungus-depends").content.decode()
returned_data = orjson.loads(returned_data)
returned_data = remove_bad_keys(returned_data)
assert returned_data == expected_data
def test_optdepends():
expected_data = {
'version': 5,
'results': [{
'Name': 'big-chungus2',
'Version': '',
'Description': 'Bunny bunny around bunny',
'URL': 'https://example.com/',
'PackageBase': 'big-chungus2',
'NumVotes': 0,
'Popularity': 0.0,
'OutOfDate': None,
'Maintainer': 'user1',
'URLPath': '/cgit/aur.git/snapshot/big-chungus2.tar.gz',
'OptDepends': ['chungus-optdepends'],
'License': [],
'Keywords': []
}],
'resultcount': 1,
'type': 'search'
}
returned_data = make_request("/rpc?v=5&type=search&by=optdepends&arg=chungus-optdepends").content.decode()
returned_data = orjson.loads(returned_data)
returned_data = remove_bad_keys(returned_data)
assert returned_data == expected_data
def test_makedepends():
expected_data = {
'version': 5,
'results': [{
'Name': 'small-chungus3',
'Version': '',
'Description': 'Bunny bunny around bunny',
'URL': 'https://example.com/',
'PackageBase': 'small-chungus3',
'NumVotes': 0,
'Popularity': 0.0,
'OutOfDate': None,
'Maintainer': 'user2',
'URLPath': '/cgit/aur.git/snapshot/small-chungus3.tar.gz',
'MakeDepends': ['chungus-makedepends'],
'License': [],
'Keywords': []
}],
'resultcount': 1,
'type': 'search'
}
returned_data = make_request("/rpc?v=5&type=search&by=makedepends&arg=chungus-makedepends").content.decode()
returned_data = orjson.loads(returned_data)
returned_data = remove_bad_keys(returned_data)
assert returned_data == expected_data
def test_checkdepends():
expected_data = {
'version': 5,
'results': [{
'Name': 'small-chungus4',
'Version': '',
'Description': 'Bunny bunny around bunny',
'URL': 'https://example.com/',
'PackageBase': 'small-chungus4',
'NumVotes': 0,
'Popularity': 0.0,
'OutOfDate': None,
'Maintainer': 'user1',
'URLPath': '/cgit/aur.git/snapshot/small-chungus4.tar.gz',
'CheckDepends': ['chungus-checkdepends'],
'License': [],
'Keywords': []
}],
'resultcount': 1,
'type': 'search'
}
returned_data = make_request("/rpc?v=5&type=search&by=checkdepends&arg=chungus-checkdepends").content.decode()
returned_data = orjson.loads(returned_data)
returned_data = remove_bad_keys(returned_data)
assert returned_data == expected_data
def test_bad_by_field():
expected_data = {
'version': 5,
'results': [],
'resultcount': 0,
'type': 'error',
'error': 'Incorrect by field specified'
}
returned_data = make_request("/rpc?v=5&type=search&by=asdf&arg=chungus-checkdepends").content.decode()
returned_data = orjson.loads(returned_data)
returned_data = remove_bad_keys(returned_data)
assert returned_data == expected_data
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment