Skip to content

Commit 39e3257

Browse files
Merge remote-tracking branch 'upstream/dev' into perf/tag-inheritance-batch-during-import
2 parents 3de4441 + 1e59c8d commit 39e3257

4 files changed

Lines changed: 65 additions & 6 deletions

File tree

helm/defectdojo/Chart.lock

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ dependencies:
44
version: 16.7.27
55
- name: valkey
66
repository: oci://registry-1.docker.io/cloudpirates
7-
version: 0.20.1
8-
digest: sha256:cf600182b8b8e4904c4ae087d5b4c670906a498775697ea5df4592713b13bad1
9-
generated: "2026-05-06T00:51:37.646065858Z"
7+
version: 0.20.2
8+
digest: sha256:58b4e410be866b64fa78f139b6e9ea6ca9d8bda76f9d3bf2b05e857d9f1cad07
9+
generated: "2026-05-13T01:05:18.277272591Z"

helm/defectdojo/Chart.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ dependencies:
1414
repository: "oci://us-docker.pkg.dev/os-public-container-registry/defectdojo"
1515
condition: postgresql.enabled
1616
- name: valkey
17-
version: 0.20.1
17+
version: 0.20.2
1818
repository: "oci://registry-1.docker.io/cloudpirates"
1919
condition: valkey.enabled
2020
# For correct syntax, check https://artifacthub.io/docs/topics/annotations/helm/
@@ -34,4 +34,4 @@ dependencies:
3434
# description: Critical bug
3535
annotations:
3636
artifacthub.io/prerelease: "true"
37-
artifacthub.io/changes: "- kind: changed\n description: Update valkey Docker tag from 0.20.0 to v0.20.1 (_/defect_/Chart.yaml)\n"
37+
artifacthub.io/changes: "- kind: changed\n description: Update valkey Docker tag from 0.20.0 to v0.20.1 (_/defect_/Chart.yaml)\n- kind: changed\n description: Update valkey Docker tag from 0.20.1 to v0.20.2 (_/defect_/Chart.yaml)\n"

helm/defectdojo/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -525,7 +525,7 @@ A Helm chart for Kubernetes to install DefectDojo
525525
526526
| Repository | Name | Version |
527527
|------------|------|---------|
528-
| oci://registry-1.docker.io/cloudpirates | valkey | 0.20.1 |
528+
| oci://registry-1.docker.io/cloudpirates | valkey | 0.20.2 |
529529
| oci://us-docker.pkg.dev/os-public-container-registry/defectdojo | postgresql | 16.7.27 |
530530
531531
## Values

unittests/test_risk_acceptance_api.py

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,19 @@ def setUp(self):
178178
self.client.credentials(HTTP_AUTHORIZATION="Token " + self.token.key)
179179
self.url = reverse("risk_acceptance-list")
180180

181+
# Helper method to create a risk acceptance for testing filters
182+
def create_risk_acceptance(self):
183+
risk_acceptance = Risk_Acceptance.objects.create(
184+
name="Filter Test RA",
185+
recommendation="A",
186+
decision="A",
187+
accepted_by="Test User",
188+
owner=self.user,
189+
)
190+
risk_acceptance.accepted_findings.add(self.finding_a1)
191+
self.engagement_a.risk_acceptance.add(risk_acceptance)
192+
return risk_acceptance
193+
181194
def test_create_risk_acceptance_links_to_engagement(self):
182195
"""Test that risk acceptance created via API appears in engagement.risk_acceptance"""
183196
payload = {
@@ -360,3 +373,49 @@ def test_update_risk_acceptance_add_cross_engagement_fails(self):
360373
response = self.client.put(f"{self.url}{ra.id}/", payload, format="json")
361374
self.assertEqual(403, response.status_code, response.content)
362375
self.assertIn("multiple engagements", str(response.data))
376+
377+
def test_risk_acceptance_created_filter(self):
378+
# 1. Create a baseline Risk Acceptance using the existing test setup
379+
risk_acceptance = self.create_risk_acceptance()
380+
381+
# 2. Manually backdate the created date to test ranges
382+
past_date = datetime.datetime.now(datetime.UTC) - datetime.timedelta(days=10)
383+
risk_acceptance.created = past_date
384+
risk_acceptance.save()
385+
386+
# 3. Test `created__lt` (Less than / Before)
387+
# Should return the risk acceptance because it was created 10 days ago
388+
future_date = datetime.datetime.now(datetime.UTC).strftime("%Y-%m-%dT%H:%M:%S.%fZ")
389+
response = self.client.get(reverse("risk_acceptance-list") + f"?created__lt={future_date}")
390+
self.assertEqual(response.status_code, 200)
391+
result_ids = {item["id"] for item in response.json()["results"]}
392+
self.assertIn(risk_acceptance.id, result_ids)
393+
394+
# 4. Test `created__gt` (Greater than / After)
395+
# Should NOT return the risk acceptance because it is not newer than today
396+
response = self.client.get(reverse("risk_acceptance-list") + f"?created__gt={future_date}")
397+
self.assertEqual(response.status_code, 200)
398+
result_ids = {item["id"] for item in response.json()["results"]}
399+
self.assertNotIn(risk_acceptance.id, result_ids)
400+
401+
def test_risk_acceptance_updated_filter(self):
402+
risk_acceptance = self.create_risk_acceptance()
403+
404+
# Manually backdate the updated date
405+
past_date = datetime.datetime.now(datetime.UTC) - datetime.timedelta(days=10)
406+
# We use .update() to bypass the auto_now=True behavior on the updated field
407+
type(risk_acceptance).objects.filter(pk=risk_acceptance.id).update(updated=past_date)
408+
409+
future_date = datetime.datetime.now(datetime.UTC).strftime("%Y-%m-%dT%H:%M:%S.%fZ")
410+
411+
# Test updated__lt
412+
response = self.client.get(reverse("risk_acceptance-list") + f"?updated__lt={future_date}")
413+
self.assertEqual(response.status_code, 200)
414+
result_ids = {item["id"] for item in response.json()["results"]}
415+
self.assertIn(risk_acceptance.id, result_ids)
416+
417+
# Test updated__gt
418+
response = self.client.get(reverse("risk_acceptance-list") + f"?updated__gt={future_date}")
419+
self.assertEqual(response.status_code, 200)
420+
result_ids = {item["id"] for item in response.json()["results"]}
421+
self.assertNotIn(risk_acceptance.id, result_ids)

0 commit comments

Comments
 (0)