Skip to content

Commit 8292330

Browse files
committed
Add missing filter for CVE status, rename variables in package status filter to ease confusion
1 parent 6e8eb2b commit 8292330

File tree

3 files changed

+17
-8
lines changed

3 files changed

+17
-8
lines changed

tests/test_routes.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
from webapp import auth
3232
from tests.helpers import transparent_decorator
3333

34-
3534
auth.authorization_required = transparent_decorator
3635
os.environ["DATABASE_URL"] = os.environ["TEST_DATABASE_URL"]
3736

@@ -136,8 +135,8 @@ def test_cves_returns_200_for_non_existing_version(self):
136135
"errors", []
137136
)
138137

139-
def test_cves_returns_422_for_non_existing_status(self):
140-
response = self.client.get("/security/cves.json?status=no-exist")
138+
def test_cves_returns_422_for_non_existing_package_status(self):
139+
response = self.client.get("/security/cves.json?package_status=none")
141140

142141
assert response.status_code == 422
143142
assert "Cannot find a status" in response.json["errors"]

webapp/schemas.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,12 @@ class CVEsAPISchema(Schema):
461461
description="List of release codenames ",
462462
allow_none=True,
463463
),
464-
"status": List(
464+
"status": String(
465+
description="CVE status",
466+
enum=["not-in-ubuntu", "active", "rejected"],
467+
allow_none=True,
468+
),
469+
"package_status": List(
465470
StatusStatuses(),
466471
description="List of statuses",
467472
allow_none=True,

webapp/views.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@ def get_cves(**kwargs):
8181
offset = kwargs.get("offset", 0)
8282
component = kwargs.get("component")
8383
versions = kwargs.get("version")
84-
statuses = kwargs.get("status")
84+
status = kwargs.get("status")
85+
package_status = kwargs.get("package_status")
8586
order_by = kwargs.get("order")
8687
show_hidden = kwargs.get("show_hidden", False)
8788

@@ -102,6 +103,10 @@ def get_cves(**kwargs):
102103
)
103104
)
104105

106+
# filter by CVE status
107+
if status:
108+
cves_query = cves_query.filter(CVE.status == status)
109+
105110
# build CVE statuses filter parameters
106111
parameters = []
107112

@@ -113,10 +118,10 @@ def get_cves(**kwargs):
113118
if component:
114119
parameters.append(Status.component == component)
115120

116-
# filter by status and version
117-
if _should_filter_by_version_and_status(statuses, versions):
121+
# filter by package status and version
122+
if _should_filter_by_version_and_status(package_status, versions):
118123
clean_versions = _get_clean_versions(versions)
119-
clean_statuses = _get_clean_statuses(statuses)
124+
clean_statuses = _get_clean_statuses(package_status)
120125

121126
# filter for cves.statuses by status-version criteria
122127
# exclude stauses that don't satisfy any status-version criteria

0 commit comments

Comments
 (0)