From e5ba7e9b0e7aac00de7a839b1a0454776ae94e98 Mon Sep 17 00:00:00 2001 From: davidt99 Date: Wed, 22 Jan 2025 14:09:42 +0200 Subject: [PATCH] fix(alert): wait works for Alert.from_id properly --- CHANGES | 8 ++++++++ intezer_sdk/__init__.py | 2 +- intezer_sdk/alerts.py | 6 +++--- tests/unit/test_alerts.py | 18 +++++++++++++++++- 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/CHANGES b/CHANGES index e917880..c6df259 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,11 @@ +1.21.10 +------ +- Fix `Alert.from_id` wait flag + +1.21.9 +------ +- Send autoruns info from offline scan + 1.21.8 _______ - Raise AnalysisRateLimitError for all endpoints when rate limit exceeded error returning from server diff --git a/intezer_sdk/__init__.py b/intezer_sdk/__init__.py index 707b4ea..9d04afc 100644 --- a/intezer_sdk/__init__.py +++ b/intezer_sdk/__init__.py @@ -1 +1 @@ -__version__ = '1.21.9' +__version__ = '1.21.10' diff --git a/intezer_sdk/alerts.py b/intezer_sdk/alerts.py index aed147a..9c7bc16 100644 --- a/intezer_sdk/alerts.py +++ b/intezer_sdk/alerts.py @@ -361,12 +361,12 @@ def from_id(cls, """ new_alert = cls(alert_id=alert_id, api=api) status = new_alert.check_status() - if status == AlertStatusCode.IN_PROGRESS: + if status == AlertStatusCode.IN_PROGRESS and not wait: raise errors.AlertInProgressError(alert_id) - if fetch_scans: - new_alert.fetch_scans() if wait: new_alert.wait_for_completion(timeout=timeout) + if fetch_scans: + new_alert.fetch_scans() return new_alert @classmethod diff --git a/tests/unit/test_alerts.py b/tests/unit/test_alerts.py index a0a135f..2579726 100644 --- a/tests/unit/test_alerts.py +++ b/tests/unit/test_alerts.py @@ -87,7 +87,7 @@ def test_ingest_alert_success(self): # Assert self.assertEqual(alert.alert_id, alert_id) - def test_get_alert_with_alert_object(self): + def test_alert_from_id(self): # Arrange with responses.RequestsMock() as mock: mock.add('GET', @@ -100,6 +100,22 @@ def test_get_alert_with_alert_object(self): # Assert self.assertEqual(alert.alert_id, 'alert_id') + + def test_alert_from_id_waits_from_completion(self): + # Arrange + with responses.RequestsMock() as mock: + mock.get(url=f'{self.full_url}/alerts/get-by-id', + status=HTTPStatus.OK, + json={'result': {}, 'status': 'in_progress'}) + mock.get(url=f'{self.full_url}/alerts/get-by-id', + status=HTTPStatus.OK, + json={'result': {}, 'status': 'success'}) + # Act + alert = Alert.from_id('alert_id', wait=True) + + # Assert + self.assertEqual(alert.alert_id, 'alert_id') + def test_ingest_binary_alert_success(self): # Arrange raw_alert = load_binary_file_from_resources('binary_alerts/test.eml')