def test_valid_json_nested_multi_result_test(self) -> None: self._do_test( MultiTaskResult(TaskResultStatus.FAILURE, "failure message", [ TaskResult(TaskResultStatus.INFO, "test message"), MultiTaskResult(TaskResultStatus.SUCCESS, "success message", [ TaskResult(TaskResultStatus.WARNING, "warning message"), MultiTaskResult(TaskResultStatus.UNKNOWN, "unknown message", [ TaskResult(TaskResultStatus.FAILURE, "failure 2 message") ]) ]) ]))
def setUp(self): self.result1 = mock.MagicMock() self.result1.status = TaskResultStatus.SUCCESS self.result1.message = "m1" self.result2 = mock.MagicMock() self.result2.status = TaskResultStatus.FAILURE self.result2.message = "m2" self.multi_result = MultiTaskResult(TaskResultStatus.INFO, "msg", [self.result1, self.result2])
def task_result_decoder(obj): if 'status' in obj and 'message' in obj: status = TaskResultStatus[obj['status']] message = obj['message'] if 'results' in obj and isinstance(obj['results'], Iterable): return MultiTaskResult(status, message, obj['results']) else: return TaskResult(status, message) return obj
async def validate(self, response: aiohttp.ClientResponse) -> BaseTaskResult: if response.status == 200: return self._result_builder.of_results( await response.json(loads=self._deserializer.loads)) else: r = MultiTaskResult( TaskResultStatus.FAILURE, f'Call to external checklist [{response.real_url}] failed. See subtasks for details.', [TaskResult(TaskResultStatus.INFO, await response.text())]) return r
def test_dumps_and_get_lines_produces_same_results(self): msg1 = 'message1' result1 = TaskResult(TaskResultStatus.SUCCESS, msg1) msg2 = 'message2' result2 = TaskResult(TaskResultStatus.INFO, msg2) msg_multi = 'multi message' status_multi = TaskResultStatus.FAILURE multi = MultiTaskResult(status_multi, msg_multi, [result1, result2]) self.assertEqual(self.serializer.dumps(multi), '\n'.join(self.serializer.get_lines(multi)))
def test_multi_result(self): msg1 = 'unknown_message' result1 = TaskResult(TaskResultStatus.SUCCESS, msg1) msg2 = 'unknown_message' result2 = TaskResult(TaskResultStatus.INFO, msg2) msg_multi = 'multi message' status_multi = TaskResultStatus.FAILURE multi = MultiTaskResult(status_multi, msg_multi, [result1, result2]) self.writer.write(multi) self.serializer.get_lines.assert_valled_once_with(multi)
def test_multi_result(self): msg1 = 'message1' result1 = TaskResult(TaskResultStatus.SUCCESS, msg1) msg2 = 'message2' result2 = TaskResult(TaskResultStatus.INFO, msg2) msg_multi = 'multi message' status_multi = TaskResultStatus.FAILURE multi = MultiTaskResult(status_multi, msg_multi, [result1, result2]) self.assertEqual( self.serializer.dumps(multi), f'{{"status": "FAILURE", "message": "{msg_multi}", "results": [' + f'{{"status": "SUCCESS", "message": "{msg1}"}}, {{"status": "INFO", "message": "{msg2}"}}]}}')
def test_multi_result(self): msg1 = 'unknown_message' result1 = TaskResult(TaskResultStatus.SUCCESS, msg1) msg2 = 'unknown_message' result2 = TaskResult(TaskResultStatus.INFO, msg2) msg_multi = 'multi message' status_multi = TaskResultStatus.FAILURE multi = MultiTaskResult(status_multi, msg_multi, [result1, result2]) self.assertCountEqual(list(self.serializer.get_lines(multi)), [ f'[FAILURE ] {msg_multi}', f' [SUCCESS ] {msg1}', f' [INFO ] {msg2}', ])
def test_defaults(self): msg1 = 'message1' result1 = TaskResult(TaskResultStatus.SUCCESS, msg1) msg2 = 'message2' result2 = TaskResult(TaskResultStatus.INFO, msg2) msg_multi = 'multi message' status_multi = TaskResultStatus.FAILURE multi = MultiTaskResult(status_multi, msg_multi, [result1, result2]) self.writer.write(multi) writer = LoggingOutputWriter() with self.assertLogs( level=logging.DEBUG, logger=LoggingOutputWriter.DEFAULT_LOGGER_NAME) as logger: writer.write(multi) self.assertListEqual(logger.output, [ 'DEBUG:checklist.result:[FAILURE ] multi message', 'DEBUG:checklist.result: [SUCCESS ] message1', 'DEBUG:checklist.result: [INFO ] message2', ])
def test_valid_json_simple_multi_result_test(self) -> None: self._do_test( MultiTaskResult(TaskResultStatus.FAILURE, "failure message", [ TaskResult(TaskResultStatus.INFO, "test message"), ]))
async def test_error_http_request_with_error_results(self) -> None: res = TaskResult(TaskResultStatus.SUCCESS, 'test_message') await self._do_test( res, MultiTaskResult(TaskResultStatus.FAILURE, mock.ANY, [TaskResult(TaskResultStatus.INFO, self._serializer.dumps(res))]))