def test_config_loadConfig_valid_port_types_all_work(self): validTypes = ['UART', 'uart', 'USB', 'usb', 'I2C', 'i2c'] for t in validTypes: with patch("builtins.open", mock_open(read_data=json.dumps({"port_type": t})), create=True) as mockOpen: c = config.loadConfig() self.assertEqual(c.PortType, t.lower())
def test_config_loadConfig_valid_baudrates_all_work(self): validRates = [9600, 115200] for r in validRates: with patch("builtins.open", mock_open(read_data=json.dumps({"port_baudrate": r})), create=True) as mockOpen: c = config.loadConfig() self.assertEqual(c.PortBaudRate, r)
def test_config_loadConfig_no_json_content_returnDefaults(self): with patch("builtins.open", mock_open(read_data="{}"), create=True) as mockOpen: c = config.loadConfig() self.assertIsNone(c.ProductUID) self.assertEqual(c.HubHost, config.DEFAULT_HUB_HOST) self.assertEqual(c.PortType, config.DEFAULT_PORT_TYPE) self.assertEqual(c.Debug, config.DEFAULT_DEBUG_FLAG) self.assertEqual(c.PortID, config.DEFAULT_PORT_ID) self.assertEqual(c.PortBaudRate, config.DEFAULT_PORT_BAUDRATE)
def test_config_loadConfig_returnsConfigFromFile(self): data = { "product_uid": "dummy_product_uid", "hub_host": "test-host.net", "port_type": "i2c", "port_id": 17, "port_baudrate": 115200, "debug": False } with patch("builtins.open", mock_open(read_data=json.dumps(data)), create=True) as mockOpen: c = config.loadConfig() self.assertEqual(c.ProductUID, data["product_uid"]) self.assertEqual(c.HubHost, data["hub_host"]) self.assertEqual(c.PortType, data["port_type"]) self.assertEqual(c.PortID, data["port_id"]) self.assertEqual(c.PortBaudRate, data["port_baudrate"]) self.assertEqual(c.Debug, data["debug"])
def test_config_loadConfig_fileNameArg_usesFileNameArg(self, mockOpen): fileName = "testName.json" c = config.loadConfig(fileName=fileName) mockOpen.assert_called_once_with(fileName, 'r')
def test_config_loadConfig_noInputArg_usesDefaultFileName(self, mockOpen): c = config.loadConfig() mockOpen.assert_called_once_with(config.DEFAULT_SECRETS_FILE_NAME, 'r')
#!/usr/bin/env python3 from src.light_controller import LightController from src.message_handler import MessageHandler from src.config import loadConfig from src.subscriber import start_mqtt, set_on_message_callback if __name__ == "__main__": loadConfig("config.json") # Create a light controller and initialize a bulb lightController = LightController() lightController.initializeBulb() # Create a message handler and pass the light controller messageHandler = MessageHandler(lightController) # Start the mqtt service and set the start_mqtt() set_on_message_callback(messageHandler.receiveData)