def test_get_matrix_not_found(self, mock_get_table_item): request_id = str(uuid.uuid4()) mock_get_table_item.side_effect = MatrixException(status=requests.codes.not_found, title=f"Unable to find") response = core.get_matrix(request_id) self.assertEqual(response[1], 404) self.assertTrue(request_id in response[0]['message'])
def test_get_matrix_batch_failure(self, mock_get_table_item, mock_batch_job_status, mock_log_error): request_id = str(uuid.uuid4()) mock_get_table_item.return_value = {RequestTableField.ERROR_MESSAGE.value: "", RequestTableField.FORMAT.value: "test_format"} mock_batch_job_status.return_value = "FAILED" response = core.get_matrix(request_id) self.assertEqual(response[1], requests.codes.ok) self.assertEqual(response[0]['status'], MatrixRequestStatus.FAILED.value)
def test_get_matrix_processing__driver_not_initialized(self, mock_is_request_complete, mock_get_table_item, mock_initialized): request_id = str(uuid.uuid4()) mock_initialized.return_value = True mock_get_table_item.side_effect = MatrixException(status=requests.codes.not_found, title=f"Unable to find") response = core.get_matrix(request_id) self.assertEqual(response[1], requests.codes.ok) self.assertEqual(response[0]['status'], MatrixRequestStatus.IN_PROGRESS.value)
def test_get_matrix_timeout(self, mock_is_request_complete, mock_get_table_item, mock_timeout): request_id = str(uuid.uuid4()) mock_is_request_complete.return_value = False mock_get_table_item.return_value = {RequestTableField.ERROR_MESSAGE.value: "", RequestTableField.FORMAT.value: "test_format"} mock_timeout.return_value = True response = core.get_matrix(request_id) self.assertEqual(response[1], requests.codes.ok) self.assertEqual(response[0]['status'], MatrixRequestStatus.FAILED.value)
def test_get_mtx_matrix_complete(self, mock_is_request_complete, mock_get_table_item): request_id = str(uuid.uuid4()) mock_is_request_complete.return_value = True mock_get_table_item.return_value = {RequestTableField.ERROR_MESSAGE.value: "", RequestTableField.FORMAT.value: "mtx"} response = core.get_matrix(request_id) self.assertEqual(response[1], requests.codes.ok) self.assertEqual(response[0]['matrix_url'], f"https://s3.amazonaws.com/{os.environ['MATRIX_RESULTS_BUCKET']}/{request_id}.mtx.zip") self.assertEqual(response[0]['status'], MatrixRequestStatus.COMPLETE.value)
def test_get_matrix_failed(self, mock_is_request_complete, mock_get_table_item, mock_initialized): request_id = str(uuid.uuid4()) mock_initialized.return_value = True mock_is_request_complete.return_value = False mock_get_table_item.return_value = {RequestTableField.ERROR_MESSAGE.value: "test error", RequestTableField.FORMAT.value: "test_format"} response = core.get_matrix(request_id) self.assertEqual(response[1], requests.codes.ok) self.assertEqual(response[0]['status'], MatrixRequestStatus.FAILED.value) self.assertEqual(response[0]['message'], "test error")
def test_get_matrix_processing__post_driver(self, mock_is_request_complete, mock_get_table_item, mock_initialized): request_id = str(uuid.uuid4()) mock_initialized.return_value = True mock_is_request_complete.return_value = False mock_get_table_item.return_value = {RequestTableField.ERROR_MESSAGE.value: "", RequestTableField.FORMAT.value: "test_format", RequestTableField.CREATION_DATE.value: get_datetime_now(as_string=True)} response = core.get_matrix(request_id) self.assertEqual(response[1], requests.codes.ok) self.assertEqual(response[0]['status'], MatrixRequestStatus.IN_PROGRESS.value)
def test_get_matrix_expired(self, mock_is_request_complete, mock_get_table_item, mock_is_expired, mock_batch_job_status): request_id = str(uuid.uuid4()) mock_is_request_complete.return_value = False mock_get_table_item.return_value = { RequestTableField.ERROR_MESSAGE.value: "", RequestTableField.FORMAT.value: "test_format" } mock_batch_job_status.return_value = "SUCCEEDED" mock_is_expired.return_value = True response = core.get_matrix(request_id) self.assertEqual(response[1], requests.codes.ok) self.assertEqual(response[0]['status'], MatrixRequestStatus.EXPIRED.value)
def test_get_csv_matrix_complete(self, mock_is_request_complete, mock_get_table_item, mock_size): request_id = str(uuid.uuid4()) mock_size.return_value = 1234 mock_is_request_complete.return_value = True mock_get_table_item.return_value = { RequestTableField.DATA_VERSION.value: 0, RequestTableField.REQUEST_HASH.value: "hash", RequestTableField.ERROR_MESSAGE.value: "", RequestTableField.FORMAT.value: "csv" } response = core.get_matrix(request_id) self.assertEqual(response[1], requests.codes.ok) self.assertEqual( response[0]['matrix_url'], f"https://s3.amazonaws.com/{os.environ['MATRIX_RESULTS_BUCKET']}/0/hash/{request_id}.csv.zip" ) self.assertEqual(response[0]['status'], MatrixRequestStatus.COMPLETE.value)
def test_get_matrix_no_cells(self, mock_is_request_complete, mock_get_table_item, mock_batch_job_status, mock_s3_size): request_id = str(uuid.uuid4()) mock_get_table_item.return_value = { RequestTableField.DATA_VERSION.value: 0, RequestTableField.ERROR_MESSAGE.value: "", RequestTableField.FORMAT.value: "test_format", RequestTableField.GENUS_SPECIES.value: GenusSpecies.HUMAN.value, RequestTableField.CREATION_DATE.value: get_datetime_now(as_string=True) } mock_batch_job_status.return_value = "SUCCEEDED" mock_is_request_complete.return_value = True mock_s3_size.return_value = 0 response = core.get_matrix(request_id) self.assertEqual(response[1], requests.codes.ok) self.assertEqual(response[0]['status'], MatrixRequestStatus.COMPLETE.value) self.assertEqual(response[0]['matrix_url'], "")