import sys import unittest from io import StringIO from unittest.mock import patch, MagicMock from pathlib import Path from iottb.definitions import DEVICE_METADATA_FILE import shutil from iottb.__main__ import main class TestDeviceMetadataFileCreation(unittest.TestCase): def setUp(self): self.test_dir = Path('/tmp/iottbtest/test_add_device') self.test_dir.mkdir(parents=True, exist_ok=True) # self.captured_output = StringIO() # sys.stdout = self.captured_output def tearDown(self): # shutil.rmtree(str(self.test_dir)) for item in self.test_dir.iterdir(): if item.is_dir(): item.rmdir() else: item.unlink() self.test_dir.rmdir() # sys.stdout = sys.__stdout__ @patch('builtins.input', side_effect=['iPhone 14', 'y', 'y']) def test_guided_device_setup(self, mock_input): sys.argv = ['__main__.py', 'add', '--root_dir', str(self.test_dir), '--guided'] main() expected_file = self.test_dir / DEVICE_METADATA_FILE self.assertTrue(expected_file.exists()), f'Expected file not created: {expected_file}' @patch('builtins.input', side_effect=['y']) # need mock_input else wont work def test_device_setup(self, mock_input): sys.argv = ['__main__.py', 'add', '--root_dir', str(self.test_dir), '--name', 'iPhone 14'] main() expected_file = self.test_dir / DEVICE_METADATA_FILE self.assertTrue(expected_file.exists()), f'Expected file not created: {expected_file}' def test_add_when_file_exists(self): # TODO pass if __name__ == '__main__': unittest.main()