def test_filemanager_get_queries_error() -> None: """ Check if we can properly handle errors in case of unsuccessful query file loading :return: None """ filemanager = GrinderFileManager() with raises(GrinderFileManagerOpenError): filemanager.get_queries(queries_file="not_exists.json")
def test_filemanager_get_malformed_queries() -> None: """ Check case when input json is exists, but file itself is malformed or contains some unparseable constructions :return: None """ filemanager = GrinderFileManager() with raises(GrinderFileManagerJsonDecoderError): filemanager.get_queries(queries_file=str( TestDefaultFilemanagerValues.TEST_DATA_QUERIES_PATH.joinpath( TestDefaultFilemanagerValues.TEST_MALFORMED_FILE)))
def test_filemanager_get_queries_success() -> None: """ Check if we can successfully get query file from queries/* directory :return: None """ filemanager = GrinderFileManager() queries = filemanager.get_queries( queries_file=str( TestDefaultFilemanagerValues.TEST_DATA_QUERIES_PATH.joinpath( TestDefaultFilemanagerValues.TEST_QUERIES_FILE ) ) ) for query_obj in queries: assert sorted(query_obj.keys()) == sorted( [ "vendor", "product", "shodan_queries", "censys_queries", "scripts", "vendor_confidence", ] ) assert ( isinstance(query_obj.get("vendor"), str) and query_obj.get("vendor") != "" ) assert ( isinstance(query_obj.get("product"), str) and query_obj.get("product") != "" ) assert ( isinstance(query_obj.get("shodan_queries"), list) and query_obj.get("shodan_queries") != [] ) for query in query_obj.get("shodan_queries"): assert sorted(query.keys()) == sorted(["query", "query_confidence"]) assert ( isinstance(query_obj.get("censys_queries"), list) and query_obj.get("censys_queries") != [] ) for query in query_obj.get("censys_queries"): assert sorted(query.keys()) == sorted(["query", "query_confidence"]) assert sorted(query_obj.get("scripts").keys()) == sorted( ["py_script", "nse_script"] ) assert ( isinstance(query_obj.get("vendor_confidence"), str) and query_obj.get("vendor_confidence") != "" )