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_configure_with_name(self): RequestsHandler.LOG_PUBLISHER = MagicMock(spec=LogPublisher) RequestsHandler.LOG_PUBLISHER.publish = MagicMock() logger = Logger() msg = { "header": { 'process_id': 'any process_id', 'source': 'any source', 'application': 'any application', 'catalogue': 'any catalogue', 'collection': 'any entity' }, "some": "other" } logger.configure(msg, "Another config logger") logger.warning("test") RequestsHandler.LOG_PUBLISHER.publish.assert_called_once() level, args = RequestsHandler.LOG_PUBLISHER.publish.call_args[0] self.assertEqual(args["name"], logger._name) # Test collection fallback self.assertEqual(args["entity"], msg['header']['collection']) self.assertEqual(logger.get_name(), args["name"]) self.assertEqual(logger.get_attribute('source'), 'any source')