|
4 | 4 | import pandas as pd
|
5 | 5 | import pytest
|
6 | 6 | from pydantic import Secret
|
7 |
| -from pyiceberg.exceptions import CommitFailedException |
| 7 | +from pyiceberg.exceptions import CommitFailedException, RESTError |
8 | 8 | from pytest_mock import MockerFixture
|
9 | 9 |
|
10 | 10 | from unstructured_ingest.data_types.file_data import FileData, SourceIdentifiers
|
@@ -202,7 +202,7 @@ def test_ibm_watsonx_connection_config_bearer_token_soon_to_expire_token(
|
202 | 202 | ):
|
203 | 203 | connection_config._bearer_token = {
|
204 | 204 | "access_token": "soon_to_expire_token",
|
205 |
| - "expiration": timestamp_now + 60, |
| 205 | + "expiration": timestamp_now + (60 * 5), |
206 | 206 | }
|
207 | 207 | mock_generate_bearer_token = mocker.patch.object(
|
208 | 208 | IbmWatsonxConnectionConfig,
|
@@ -332,6 +332,21 @@ def test_ibm_watsonx_uploader_upload_data_table_commit_exception(
|
332 | 332 | assert mock_table.refresh.call_count == 5
|
333 | 333 |
|
334 | 334 |
|
| 335 | +def test_ibm_watsonx_uploader_upload_data_table_rest_error( |
| 336 | + uploader: IbmWatsonxUploader, |
| 337 | + mock_table: MagicMock, |
| 338 | + mock_transaction: MagicMock, |
| 339 | + mock_data_table: MagicMock, |
| 340 | + mock_delete: MagicMock, |
| 341 | + file_data: FileData, |
| 342 | +): |
| 343 | + mock_transaction.append.side_effect = RESTError() |
| 344 | + |
| 345 | + with pytest.raises(RESTError): |
| 346 | + uploader.upload_data_table(mock_table, mock_data_table, file_data) |
| 347 | + assert mock_table.refresh.call_count == 0 |
| 348 | + |
| 349 | + |
335 | 350 | def test_ibm_watsonx_uploader_upload_data_table_exception(
|
336 | 351 | uploader: IbmWatsonxUploader,
|
337 | 352 | mock_table: MagicMock,
|
@@ -428,6 +443,63 @@ def test_ibm_watsonx_uploader_upload_dataframe_success(
|
428 | 443 | mock_upload_data_table.assert_called_once_with(mock_table, mock_data_table, file_data)
|
429 | 444 |
|
430 | 445 |
|
| 446 | +def test_ibm_watsonx_uploader_upload_dataframe_rest_error( |
| 447 | + mocker: MockerFixture, |
| 448 | + uploader: IbmWatsonxUploader, |
| 449 | + test_df: pd.DataFrame, |
| 450 | + mock_get_table: MagicMock, |
| 451 | + mock_data_table: MagicMock, |
| 452 | + file_data: FileData, |
| 453 | +): |
| 454 | + mocker.patch.object(IbmWatsonxUploader, "_df_to_arrow_table", return_value=mock_data_table) |
| 455 | + mock_upload_data_table = mocker.patch.object( |
| 456 | + IbmWatsonxUploader, "upload_data_table", side_effect=RESTError() |
| 457 | + ) |
| 458 | + |
| 459 | + with pytest.raises(ProviderError): |
| 460 | + uploader.upload_dataframe(test_df, file_data) |
| 461 | + assert mock_get_table.call_count == 2 |
| 462 | + assert mock_upload_data_table.call_count == 2 |
| 463 | + |
| 464 | + |
| 465 | +def test_ibm_watsonx_uploader_upload_dataframe_provider_error( |
| 466 | + mocker: MockerFixture, |
| 467 | + uploader: IbmWatsonxUploader, |
| 468 | + test_df: pd.DataFrame, |
| 469 | + mock_get_table: MagicMock, |
| 470 | + mock_data_table: MagicMock, |
| 471 | + file_data: FileData, |
| 472 | +): |
| 473 | + mocker.patch.object(IbmWatsonxUploader, "_df_to_arrow_table", return_value=mock_data_table) |
| 474 | + mock_upload_data_table = mocker.patch.object( |
| 475 | + IbmWatsonxUploader, "upload_data_table", side_effect=ProviderError() |
| 476 | + ) |
| 477 | + |
| 478 | + with pytest.raises(ProviderError): |
| 479 | + uploader.upload_dataframe(test_df, file_data) |
| 480 | + mock_get_table.assert_called_once() |
| 481 | + mock_upload_data_table.assert_called_once() |
| 482 | + |
| 483 | + |
| 484 | +def test_ibm_watsonx_uploader_upload_dataframe_exception( |
| 485 | + mocker: MockerFixture, |
| 486 | + uploader: IbmWatsonxUploader, |
| 487 | + test_df: pd.DataFrame, |
| 488 | + mock_get_table: MagicMock, |
| 489 | + mock_data_table: MagicMock, |
| 490 | + file_data: FileData, |
| 491 | +): |
| 492 | + mocker.patch.object(IbmWatsonxUploader, "_df_to_arrow_table", return_value=mock_data_table) |
| 493 | + mock_upload_data_table = mocker.patch.object( |
| 494 | + IbmWatsonxUploader, "upload_data_table", side_effect=Exception() |
| 495 | + ) |
| 496 | + |
| 497 | + with pytest.raises(ProviderError): |
| 498 | + uploader.upload_dataframe(test_df, file_data) |
| 499 | + mock_get_table.assert_called_once() |
| 500 | + mock_upload_data_table.assert_called_once() |
| 501 | + |
| 502 | + |
431 | 503 | def test_ibm_watsonx_uploader_delete_can_delete(
|
432 | 504 | mocker: MockerFixture,
|
433 | 505 | uploader: IbmWatsonxUploader,
|
|
0 commit comments