11from unittest .mock import patch
22
33from api_app .analyzers_manager .observable_analyzers .inquest import InQuest
4- from tests .api_app .analyzers_manager .unit_tests .observable_analyzers .base_test_class import (
5- BaseAnalyzerTest ,
6- )
4+ from tests .api_app .analyzers_manager .unit_tests .observable_analyzers .base_test_class import BaseAnalyzerTest
75from tests .mock_utils import MockUpResponse
86
97
@@ -22,3 +20,74 @@ def get_extra_config(cls) -> dict:
2220 "_api_key_name" : "Bearer dummy_api_key" ,
2321 "generic_identifier_mode" : "user-defined" ,
2422 }
23+
24+
25+ class TypeOfGenericTestCase (InQuestTestCase ):
26+ """Tests for the type_of_generic method."""
27+
28+ @classmethod
29+ def get_extra_config (cls ) -> dict :
30+ config = super ().get_extra_config ()
31+ config ["generic_identifier_mode" ] = "auto"
32+ return config
33+
34+ def setUp (self ):
35+ super ().setUp ()
36+ # Create a mock analyzer config
37+ from api_app .analyzers_manager .models import AnalyzerConfig
38+
39+ config = AnalyzerConfig .objects .filter (python_module = self .analyzer_class .python_module ).first ()
40+ if not config :
41+ self .skipTest (
42+ "AnalyzerConfig for InQuest is not available; skipping TypeOfGenericTestCase tests."
43+ )
44+ self .analyzer = self ._setup_analyzer (config , "generic" , "test" )
45+
46+ def test_type_of_generic_email_simple (self ):
47+ self .analyzer .observable_name = "user@example.com"
48+ self .assertEqual (self .analyzer .type_of_generic (), "email" )
49+
50+ def test_type_of_generic_email_with_subdomain (self ):
51+ self .analyzer .observable_name = "user.name+tag@sub.domain.info"
52+ self .assertEqual (self .analyzer .type_of_generic (), "email" )
53+
54+ def test_type_of_generic_email_long_tld (self ):
55+ self .analyzer .observable_name = "test@domain.museum"
56+ self .assertEqual (self .analyzer .type_of_generic (), "email" )
57+
58+ def test_type_of_generic_registry_hkey (self ):
59+ self .analyzer .observable_name = "HKEY_LOCAL_MACHINE\\ Software\\ Test"
60+ self .assertEqual (self .analyzer .type_of_generic (), "registry" )
61+
62+ def test_type_of_generic_registry_hklm (self ):
63+ self .analyzer .observable_name = "HKLM\\ Software\\ Microsoft"
64+ self .assertEqual (self .analyzer .type_of_generic (), "registry" )
65+
66+ def test_type_of_generic_registry_hkcu (self ):
67+ self .analyzer .observable_name = "HKCU\\ Desktop"
68+ self .assertEqual (self .analyzer .type_of_generic (), "registry" )
69+
70+ def test_type_of_generic_xmpid (self ):
71+ self .analyzer .observable_name = "550e8400-e29b-41d4-a716-446655440000"
72+ self .assertEqual (self .analyzer .type_of_generic (), "xmpid" )
73+
74+ def test_type_of_generic_filename_simple (self ):
75+ self .analyzer .observable_name = "malware.exe"
76+ self .assertEqual (self .analyzer .type_of_generic (), "filename" )
77+
78+ def test_type_of_generic_filename_with_spaces (self ):
79+ self .analyzer .observable_name = "my document.pdf"
80+ self .assertEqual (self .analyzer .type_of_generic (), "filename" )
81+
82+ def test_type_of_generic_unknown_defaults_to_filename (self ):
83+ self .analyzer .observable_name = "random-text-no-extension"
84+ self .assertEqual (self .analyzer .type_of_generic (), "filename" )
85+
86+ @patch ("api_app.analyzers_manager.observable_analyzers.inquest.logger.warning" )
87+ def test_type_of_generic_unknown_warning (self , mock_warning ):
88+ self .analyzer .observable_name = "random-text-no-extension"
89+ self .analyzer .type_of_generic ()
90+ mock_warning .assert_called_once_with (
91+ "Could not determine type of generic observable: "
92+ "'random-text-no-extension'. Defaulting to 'filename'."
93+ )
0 commit comments