def test_build_all(self, build_downloader: mock.MagicMock, build_batcher: mock.MagicMock, build_analyzer: mock.MagicMock, mock_print: mock.MagicMock): """Verify that the top-level build function executes each individual builder.""" build.build(self._tempdir, downloader=True) build_analyzer.assert_called_once() build_batcher.assert_called_once() build_downloader.assert_called_once() mock_print.assert_not_called()
def test_build_all(self, mock_pip: mock.MagicMock, mock_print: mock.MagicMock): """Verify list of bundled files for each Lambda function.""" build.build(self._tempdir, downloader=True) self._verify_filenames( os.path.join(self._tempdir, 'lambda_analyzer.zip'), { # Python source files 'lambda_functions/__init__.py', 'lambda_functions/analyzer/__init__.py', 'lambda_functions/analyzer/analyzer_aws_lib.py', 'lambda_functions/analyzer/binary_info.py', 'lambda_functions/analyzer/common.py', 'lambda_functions/analyzer/file_hash.py', 'lambda_functions/analyzer/main.py', 'lambda_functions/analyzer/yara_analyzer.py', # Compiled rules file 'custom-signatures/yara/custom-rules.yar', # Natively compiled binaries 'thor-linux-64', 'upx', # Licenses 'UPX_LICENSE', 'docs/License_Acknowledgement.txt', }, subset=True) self._verify_filenames( os.path.join(self._tempdir, 'lambda_downloader.zip'), { # Python source files 'lambda_functions/', 'lambda_functions/__init__.py', 'lambda_functions/downloader/', 'lambda_functions/downloader/__init__.py', 'lambda_functions/downloader/main.py', # Libraries (mock install) 'cbapi-python.git/', 'prompt-toolkit/', 'python-dateutil/' }) mock_pip.assert_called_once() mock_print.assert_called()
def test_build_all(self, mock_print): """Verify that the top-level build function executes without error.""" build.build(self._tempdir) self.assertEqual(3, mock_print.call_count)
def test_build_all(self, mock_pip: mock.MagicMock, mock_print: mock.MagicMock): """Verify list of bundled files for each Lambda function.""" build.build(self._tempdir, downloader=True) self._verify_filenames( os.path.join(self._tempdir, 'lambda_analyzer.zip'), { # Python source files 'lambda_functions/__init__.py', 'lambda_functions/analyzer/__init__.py', 'lambda_functions/analyzer/analyzer_aws_lib.py', 'lambda_functions/analyzer/binary_info.py', 'lambda_functions/analyzer/common.py', 'lambda_functions/analyzer/file_hash.py', 'lambda_functions/analyzer/main.py', 'lambda_functions/analyzer/yara_analyzer.py', # Compiled rules file 'lambda_functions/analyzer/compiled_yara_rules.bin', # Natively compiled binaries 'cryptography/', 'libarchive.so.13', 'libs/', 'libs/bayshore_file_type_detect.o', 'libs/bayshore_file_type_detect.yara', 'libs/bayshore_yara_wrapper.o', 'libs/bzl.o', 'libs/pdf_parser.o', 'libs/zl.o', 'libfontconfig.so.1', 'libfreetype.so.6', 'libjbig.so.2.0', 'libjpeg.so.62', 'liblcms2.so.2', 'liblzma.so.5', 'liblzo2.so.2', 'libopenjpeg.so.2', 'libpcrecpp.so.0', 'libpoppler.so.46', 'libpng12.so.0', 'libstdc++.so.6', 'libtiff.so.5', 'libyara.so.3', 'libxml2.so.2', 'pdftotext', 'upx', 'yara.so', 'yextend', # Licenses 'UPX_LICENSE', 'YARA_LICENSE', 'YARA_PYTHON_LICENSE', 'YEXTEND_LICENSE' }, subset=True) self._verify_filenames( os.path.join(self._tempdir, 'lambda_downloader.zip'), { # Python source files 'lambda_functions/', 'lambda_functions/__init__.py', 'lambda_functions/downloader/', 'lambda_functions/downloader/__init__.py', 'lambda_functions/downloader/main.py', # Libraries (mock install) 'cbapi/', 'prompt-toolkit/', 'python-dateutil/' }, ) mock_pip.assert_called_once() mock_print.assert_called()