Skip to content

Commit dd9e7ba

Browse files
committed
Merge remote-tracking branch 'origin/dev' into stackable
2 parents 8716c15 + 99f2883 commit dd9e7ba

19 files changed

Lines changed: 438 additions & 409 deletions

‎.github/workflows/build_push_dev.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
uses: docker/setup-buildx-action@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c # v4.2.0
3131
-
3232
name: Login to Stackable Harbor
33-
uses: docker/login-action@af1e73f918a031802d376d3c8bbc3fe56130a9b0 # v4.4.0
33+
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
3434
with:
3535
registry: oci.stackable.tech
3636
username: robot$stackable+github-action-build
@@ -83,7 +83,7 @@ jobs:
8383
uses: docker/setup-buildx-action@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c # v4.2.0
8484
-
8585
name: Login to Stackable Harbor
86-
uses: docker/login-action@af1e73f918a031802d376d3c8bbc3fe56130a9b0 # v4.4.0
86+
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
8787
with:
8888
registry: oci.stackable.tech
8989
username: robot$stackable+github-action-build

‎.github/workflows/build_push_release.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
uses: docker/setup-buildx-action@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c # v4.2.0
3434
-
3535
name: Login to GitHub Container Registry
36-
uses: docker/login-action@371161bbe7024a29a25c5e19bfcbc0804fe9ad2c # v4.5.2
36+
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
3737
with:
3838
registry: ghcr.io
3939
username: ${{ github.actor }}
@@ -79,7 +79,7 @@ jobs:
7979
uses: docker/setup-buildx-action@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c # v4.2.0
8080
-
8181
name: Login to GitHub Container Registry
82-
uses: docker/login-action@371161bbe7024a29a25c5e19bfcbc0804fe9ad2c # v4.5.2
82+
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
8383
with:
8484
registry: ghcr.io
8585
username: ${{ github.actor }}

‎.github/workflows/scorecard.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,6 @@ jobs:
6464

6565
# Upload the results to GitHub's code scanning dashboard.
6666
- name: "Upload to code-scanning"
67-
uses: github/codeql-action/upload-sarif@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3
67+
uses: github/codeql-action/upload-sarif@f205ea1c3313d32999d8d6a48b4f6530d4437b38 # v4.37.4
6868
with:
6969
sarif_file: results.sarif

‎backend/poetry.lock‎

Lines changed: 111 additions & 111 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎backend/pyproject.toml‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ django-cors-headers = "4.9.0" # https://github.com/adamchainz/django-cors-header
3131
# OpenAPI 3
3232
# ------------------------------------------------------------------------------
3333
drf-spectacular = "0.30.0" # https://github.com/tfranzel/drf-spectacular
34-
drf-spectacular-sidecar = "2026.7.1" # https://github.com/tfranzel/drf-spectacular-sidecar
34+
drf-spectacular-sidecar = "2026.8.1" # https://github.com/tfranzel/drf-spectacular-sidecar
3535

3636
# Token authentication
3737
# ------------------------------------------------------------------------------
@@ -63,7 +63,7 @@ license-expression = "30.4.4" # https://github.com/aboutcode-org/license-expres
6363
# Task queue
6464
# ------------------------------------------------------------------------------
6565
huey = "3.3.0" # https://github.com/coleifer/huey
66-
peewee = "4.2.6" # https://github.com/coleifer/peewee
66+
peewee = "4.3.0" # https://github.com/coleifer/peewee
6767

6868
# Issue tracker
6969
# ------------------------------------------------------------------------------
@@ -75,9 +75,9 @@ inflect = "7.5.0" # https://github.com/jaraco/inflect
7575
validators = "0.35.0" # https://github.com/python-validators/validators
7676
py-ocsf-models = "0.10.0" # https://github.com/prowler-cloud/py-ocsf-models
7777
spdx-tools = "0.8.5" # https://github.com/spdx/tools-python
78-
html-to-markdown = "3.9.1" # https://github.com/Goldziher/html-to-markdown
78+
html-to-markdown = "3.10.4" # https://github.com/Goldziher/html-to-markdown
7979
cyclonedx-python-lib = "11.11.0" # https://github.com/CycloneDX/cyclonedx-python-lib
80-
licenselynx = "2.3.2" # https://github.com/licenselynx/licenselynx
80+
licenselynx = "2.3.3" # https://github.com/licenselynx/licenselynx
8181
regopy = "1.5.2" # https://microsoft.github.io/rego-cpp/#python-example
8282
simplejson = "4.1.1"
8383

@@ -92,7 +92,7 @@ django-silk = { version = "5.5.0", optional = true } # https://github.com/jazzb
9292

9393
# Unittest dependencies
9494
# ------------------------------------------------------------------------------
95-
coverage = { version = "7.15.2", optional = true } # https://github.com/nedbat/coveragepy
95+
coverage = { version = "7.15.3", optional = true } # https://github.com/nedbat/coveragepy
9696
django-coverage-plugin = { version = "3.2.2", optional = true } # https://github.com/nedbat/django_coverage_plugin
9797

9898
# Code quality dependencies

‎backend/unittests/core/services/test_potential_duplicates.py‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,8 @@ def test_find_potential_duplicates_components(self):
9393
suppress_licenses=False,
9494
sbom=False,
9595
)
96-
file_upload_observations(file_upload_parameters)
96+
with self.captureOnCommitCallbacks(execute=True):
97+
file_upload_observations(file_upload_parameters)
9798

9899
observations = Observation.objects.filter(product=product)
99100
self.assertEqual(4, len(observations))

‎backend/unittests/core/test_signals.py‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,8 @@ def test_settings_post_save_task(self, mock_check_security_gate, mock_product_mo
148148
mock_product_model.objects.filter.return_value = [mock_product]
149149

150150
# Call the task
151-
settings_post_save_task()
151+
with self.captureOnCommitCallbacks(execute=True):
152+
settings_post_save_task()
152153

153154
# Verify that logger was called
154155
mock_logger.info.assert_has_calls(

‎backend/unittests/issue_tracker/services/test_issue_tracker.py‎

Lines changed: 36 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ def test_push_observations_to_issue_tracker(self, mock_current_user, mock_issue_
5454
@patch("application.issue_tracker.services.issue_tracker.issue_tracker_factory")
5555
def test_push_observation_to_issue_tracker_not_active(self, mock):
5656
observation = Observation.objects.get(pk=1)
57-
push_observation_to_issue_tracker(observation, None)
57+
with self.captureOnCommitCallbacks(execute=True):
58+
push_observation_to_issue_tracker(observation, None)
5859
mock.assert_not_called()
5960

6061
@patch("application.issue_tracker.services.issue_tracker.issue_tracker_factory")
@@ -63,7 +64,8 @@ def test_push_observation_to_issue_tracker_not_default_branch(self, mock):
6364
observation.product.issue_tracker_active = True
6465
not_default_branch = Branch.objects.get(pk=2)
6566
observation.branch = not_default_branch
66-
push_observation_to_issue_tracker(observation, None)
67+
with self.captureOnCommitCallbacks(execute=True):
68+
push_observation_to_issue_tracker(observation, None)
6769
mock.assert_not_called()
6870

6971
@patch("application.issue_tracker.services.issue_tracker.issue_tracker_factory")
@@ -75,7 +77,8 @@ def test_push_observation_to_issue_tracker_open_no_id_no_issue(self, observation
7577
observation.product.issue_tracker_active = True
7678
observation.current_status = Status.STATUS_OPEN
7779

78-
push_observation_to_issue_tracker(observation, None)
80+
with self.captureOnCommitCallbacks(execute=True):
81+
push_observation_to_issue_tracker(observation, None)
7982

8083
expected_calls = [call(observation.product), call().create_issue(observation)]
8184
mock.assert_has_calls(expected_calls, any_order=False)
@@ -92,7 +95,8 @@ def test_push_observation_to_issue_tracker_open_with_id_with_issue(self, observa
9295
observation.current_status = Status.STATUS_OPEN
9396
observation.issue_tracker_issue_id = "123"
9497

95-
push_observation_to_issue_tracker(observation, None)
98+
with self.captureOnCommitCallbacks(execute=True):
99+
push_observation_to_issue_tracker(observation, None)
96100

97101
observation_mock.assert_not_called()
98102
expected_calls = [
@@ -111,7 +115,8 @@ def test_push_observation_to_issue_tracker_closed_no_id_no_issue(self, observati
111115
observation.product.issue_tracker_active = True
112116
observation.current_status = Status.STATUS_NOT_AFFECTED
113117

114-
push_observation_to_issue_tracker(observation, None)
118+
with self.captureOnCommitCallbacks(execute=True):
119+
push_observation_to_issue_tracker(observation, None)
115120

116121
expected_calls = [call(observation.product)]
117122
factory_mock.assert_has_calls(expected_calls, any_order=False)
@@ -128,7 +133,8 @@ def test_push_observation_to_issue_tracker_closed_with_id_with_issue(self, obser
128133
observation.current_status = Status.STATUS_FALSE_POSITIVE
129134
observation.issue_tracker_issue_id = "123"
130135

131-
push_observation_to_issue_tracker(observation, None)
136+
with self.captureOnCommitCallbacks(execute=True):
137+
push_observation_to_issue_tracker(observation, None)
132138

133139
expected_calls = [
134140
call(observation.product),
@@ -146,7 +152,8 @@ def test_push_observation_to_issue_tracker_exception(self, exception_mock, facto
146152

147153
observation = Observation.objects.get(pk=1)
148154
observation.product.issue_tracker_active = True
149-
push_observation_to_issue_tracker(observation, self.user_internal)
155+
with self.captureOnCommitCallbacks(execute=True):
156+
push_observation_to_issue_tracker(observation, self.user_internal)
150157

151158
exception_mock.assert_called_with(exception, self.user_internal)
152159

@@ -166,7 +173,8 @@ def test_push_observation_to_issue_tracker_with_issue_higher_than_minimum(self,
166173
observation.numerical_severity = Severity.NUMERICAL_SEVERITIES.get(observation.current_severity, 99)
167174
observation.issue_tracker_issue_id = "123"
168175

169-
push_observation_to_issue_tracker(observation, None)
176+
with self.captureOnCommitCallbacks(execute=True):
177+
push_observation_to_issue_tracker(observation, None)
170178

171179
self.assertEqual(observation_mock.call_count, 2)
172180
expected_calls = [
@@ -190,7 +198,8 @@ def test_push_observation_to_issue_tracker_with_issue_higher_than_minimum(self,
190198
observation.numerical_severity = Severity.NUMERICAL_SEVERITIES.get(observation.current_severity, 99)
191199
observation.issue_tracker_issue_id = "123"
192200

193-
push_observation_to_issue_tracker(observation, None)
201+
with self.captureOnCommitCallbacks(execute=True):
202+
push_observation_to_issue_tracker(observation, None)
194203

195204
observation_mock.assert_not_called()
196205
expected_calls = [
@@ -214,7 +223,8 @@ def test_push_observation_to_issue_tracker_no_issue_lower_than_minimum(self, obs
214223
observation.current_severity = Severity.SEVERITY_MEDIUM
215224
observation.numerical_severity = Severity.NUMERICAL_SEVERITIES.get(observation.current_severity, 99)
216225

217-
push_observation_to_issue_tracker(observation, None)
226+
with self.captureOnCommitCallbacks(execute=True):
227+
push_observation_to_issue_tracker(observation, None)
218228

219229
observation_mock.assert_not_called()
220230
expected_calls = [
@@ -238,7 +248,8 @@ def test_push_observation_to_issue_tracker_with_issue_lower_than_minimum_not_clo
238248
observation.numerical_severity = Severity.NUMERICAL_SEVERITIES.get(observation.current_severity, 99)
239249
observation.issue_tracker_issue_id = "123"
240250

241-
push_observation_to_issue_tracker(observation, None)
251+
with self.captureOnCommitCallbacks(execute=True):
252+
push_observation_to_issue_tracker(observation, None)
242253

243254
observation_mock.assert_called_once()
244255
expected_calls = [
@@ -265,7 +276,8 @@ def test_push_observation_to_issue_tracker_with_issue_lower_than_minimum_already
265276
observation.issue_tracker_issue_id = "123"
266277
observation.issue_tracker_issue_closed = True
267278

268-
push_observation_to_issue_tracker(observation, None)
279+
with self.captureOnCommitCallbacks(execute=True):
280+
push_observation_to_issue_tracker(observation, None)
269281

270282
observation_mock.assert_not_called()
271283
expected_calls = [
@@ -279,28 +291,32 @@ def test_push_observation_to_issue_tracker_with_issue_lower_than_minimum_already
279291
@patch("application.issue_tracker.services.issue_tracker.issue_tracker_factory")
280292
def test_push_deleted_observation_not_active_no_id(self, mock):
281293
product = Product.objects.get(pk=1)
282-
push_deleted_observation_to_issue_tracker(product, "", None)
294+
with self.captureOnCommitCallbacks(execute=True):
295+
push_deleted_observation_to_issue_tracker(product, "", None)
283296
mock.assert_not_called()
284297

285298
@patch("application.issue_tracker.services.issue_tracker.issue_tracker_factory")
286299
def test_push_deleted_observation_active_no_id(self, mock):
287300
product = Product.objects.get(pk=1)
288301
product.issue_tracker_active = True
289-
push_deleted_observation_to_issue_tracker(product, "", None)
302+
with self.captureOnCommitCallbacks(execute=True):
303+
push_deleted_observation_to_issue_tracker(product, "", None)
290304
mock.assert_not_called()
291305

292306
@patch("application.issue_tracker.services.issue_tracker.issue_tracker_factory")
293307
def test_push_deleted_observation_not_active_with_id(self, mock):
294308
product = Product.objects.get(pk=1)
295-
push_deleted_observation_to_issue_tracker(product, "123", None)
309+
with self.captureOnCommitCallbacks(execute=True):
310+
push_deleted_observation_to_issue_tracker(product, "123", None)
296311
mock.assert_not_called()
297312

298313
@patch("application.issue_tracker.services.issue_tracker.issue_tracker_factory")
299314
def test_push_deleted_observation_active_with_id_no_issue(self, mock):
300315
mock.return_value.get_issue.return_value = None
301316
product = Product.objects.get(pk=1)
302317
product.issue_tracker_active = True
303-
push_deleted_observation_to_issue_tracker(product, "123", None)
318+
with self.captureOnCommitCallbacks(execute=True):
319+
push_deleted_observation_to_issue_tracker(product, "123", None)
304320
expected_calls = [call(product), call().get_issue(product, "123")]
305321
mock.assert_has_calls(expected_calls, any_order=False)
306322

@@ -310,7 +326,8 @@ def test_push_deleted_observation_active_with_id_with_issue(self, mock):
310326
mock.return_value.get_issue.return_value = issue
311327
product = Product.objects.get(pk=1)
312328
product.issue_tracker_active = True
313-
push_deleted_observation_to_issue_tracker(product, "123", None)
329+
with self.captureOnCommitCallbacks(execute=True):
330+
push_deleted_observation_to_issue_tracker(product, "123", None)
314331
expected_calls = [
315332
call(product),
316333
call().get_issue(product, "123"),
@@ -326,7 +343,8 @@ def test_push_deleted_observation_exception(self, exception_mock, factory_mock):
326343

327344
product = Product.objects.get(pk=1)
328345
product.issue_tracker_active = True
329-
push_deleted_observation_to_issue_tracker(product, "123", self.user_internal)
346+
with self.captureOnCommitCallbacks(execute=True):
347+
push_deleted_observation_to_issue_tracker(product, "123", self.user_internal)
330348

331349
exception_mock.assert_called_with(exception, self.user_internal)
332350

0 commit comments

Comments
 (0)