def test_configure(self): RequestsHandler.LOG_PUBLISHER = MagicMock(spec=LogPublisher) RequestsHandler.LOG_PUBLISHER.publish = MagicMock() logger = Logger("Config logger") msg = { "header": { 'process_id': 'any process_id', 'source': 'any source', 'application': 'any application', 'catalogue': 'any catalogue', 'entity': 'any entity', 'jobid': None, 'stepid': None }, "some": "other" } logger.configure(msg) self.assertEqual(logger._default_args, msg["header"]) logger.warning("test") RequestsHandler.LOG_PUBLISHER.publish.assert_called_once() level, args = RequestsHandler.LOG_PUBLISHER.publish.call_args[0] self.assertEqual(level, "WARNING") self.assertIsNotNone(args["timestamp"]) self.assertEqual(args["level"], "WARNING") self.assertEqual(args["name"], logger._name) self.assertEqual(args["msg"], "test") self.assertIsNotNone(args["formatted_msg"]) self.assertEqual(args["process_id"], msg["header"]["process_id"]) self.assertEqual(args["source"], msg["header"]["source"]) self.assertEqual(args["application"], msg["header"]["application"]) self.assertEqual(args["catalogue"], msg["header"]["catalogue"]) self.assertEqual(args["entity"], msg["header"]["entity"]) RequestsHandler.LOG_PUBLISHER.publish.reset_mock() logger.info("test", { "data": "any data", "id": "any id", "destination": "any destination" }) RequestsHandler.LOG_PUBLISHER.publish.assert_called_once() level, args = RequestsHandler.LOG_PUBLISHER.publish.call_args[0] self.assertEqual(args["data"], "any data") self.assertEqual(args["id"], "any id") self.assertEqual(args["destination"], "any destination") RequestsHandler.LOG_PUBLISHER.publish.reset_mock() logger.error("any error msg", { **msg.get('header', {}), "data": { "error": "any error" } }) level, args = RequestsHandler.LOG_PUBLISHER.publish.call_args[0] print(args) self.assertEqual(args["msg"], "any error msg") self.assertEqual(args["source"], msg["header"]["source"]) self.assertEqual(args["data"], {"error": "any error"})
def test_error(self): logger = Logger("Error logger") # RequestsHandler.LOG_PUBLISHER.publish.reset_mock() with self.assertLogs(logger=Logger._logger[logger._name], level=logging.INFO) as result: logger.error("test") self.assertEqual(result.output, [f"ERROR:{logger._name}:test"])