Skip to content

Commit 5d980ff

Browse files
committed
more tests
Signed-off-by: pranjalg1331 <[email protected]>
1 parent c629178 commit 5d980ff

File tree

2 files changed

+97
-0
lines changed

2 files changed

+97
-0
lines changed
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
from unittest.mock import MagicMock, patch
2+
3+
from api_app.analyzers_manager.file_analyzers.cuckoo_scan import CuckooAnalysis
4+
5+
from .base_test_class import BaseFileAnalyzerTest
6+
7+
8+
class TestCuckooAnalysis(BaseFileAnalyzerTest):
9+
analyzer_class = CuckooAnalysis
10+
11+
def get_mocked_response(self):
12+
# Mock Session and its methods
13+
mock_session = MagicMock()
14+
15+
# Mock POST response (submit file)
16+
mock_post_response = MagicMock()
17+
mock_post_response.status_code = 200
18+
mock_post_response.json.return_value = {"task_id": 123}
19+
mock_session.post.return_value = mock_post_response
20+
21+
# Mock GET for polling -> "reported" status
22+
mock_poll_response = MagicMock()
23+
mock_poll_response.json.return_value = {"task": {"status": "reported"}}
24+
25+
# Mock GET for final report
26+
mock_report_response = MagicMock()
27+
mock_report_response.json.return_value = {
28+
"signatures": [],
29+
"suricata": {"alerts": []},
30+
"network": {"http": [], "domains": [], "dns": []},
31+
"info": {"score": 5, "machine": {}, "id": "cuckoo123"},
32+
"target": {"file": {"type": "exe", "yara": []}},
33+
}
34+
35+
# Order of GET calls: first poll, then report
36+
mock_session.get.side_effect = [mock_poll_response, mock_report_response]
37+
38+
# Patch requests.Session to return our mocked session
39+
return patch(
40+
"api_app.analyzers_manager.file_analyzers.cuckoo_scan.requests.Session",
41+
return_value=mock_session,
42+
)
43+
44+
def get_extra_config(self):
45+
# Create a hardcoded fake session for direct injection
46+
fake_session = MagicMock()
47+
fake_post = MagicMock()
48+
fake_post.status_code = 200
49+
fake_post.json.return_value = {"task_id": 123}
50+
fake_session.post.return_value = fake_post
51+
52+
fake_poll = MagicMock()
53+
fake_poll.json.return_value = {"task": {"status": "reported"}}
54+
fake_report = MagicMock()
55+
fake_report.json.return_value = {
56+
"signatures": [],
57+
"suricata": {"alerts": []},
58+
"network": {"http": [], "domains": [], "dns": []},
59+
"info": {"score": 5, "machine": {}, "id": "cuckoo123"},
60+
"target": {"file": {"type": "exe", "yara": []}},
61+
}
62+
fake_session.get.side_effect = [fake_poll, fake_report]
63+
64+
return {
65+
"_api_key_name": "dummy_key",
66+
"_url_key_name": "http://fake-cuckoo/",
67+
"max_post_tries": 1,
68+
"max_poll_tries": 1,
69+
"session": fake_session, # 👈 directly attach session
70+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from unittest.mock import patch
2+
3+
from api_app.analyzers_manager.file_analyzers.mwdb_scan import MockUpMWDB, MWDB_Scan
4+
5+
from .base_test_class import BaseFileAnalyzerTest
6+
7+
8+
class TestMWDBScan(BaseFileAnalyzerTest):
9+
analyzer_class = MWDB_Scan
10+
11+
def get_mocked_response(self):
12+
# Patch mwdblib.MWDB to return our MockUpMWDB
13+
return patch(
14+
"api_app.analyzers_manager.file_analyzers.mwdb_scan.mwdblib.MWDB",
15+
return_value=MockUpMWDB(),
16+
)
17+
18+
def get_extra_config(self):
19+
# Hardcode required config values
20+
return {
21+
"_api_key_name": "dummy_key",
22+
"private": False,
23+
"max_tries": 1,
24+
"session": None,
25+
"upload_file": True,
26+
"public": True,
27+
}

0 commit comments

Comments
 (0)