|
1 | 1 | from typing import Any
|
2 | 2 | from unittest.mock import MagicMock
|
3 | 3 |
|
4 |
| -from unstract.llmwhisperer.client_v2 import LLMWhispererClientV2 |
| 4 | +import pytest |
| 5 | +from unstract.llmwhisperer.client_v2 import LLMWhispererClientException, LLMWhispererClientV2 |
5 | 6 |
|
6 | 7 | WEBHOOK_URL = "http://test-webhook.com/callback"
|
7 | 8 | AUTH_TOKEN = "dummy-auth-token"
|
@@ -34,3 +35,75 @@ def test_get_webhook_details(mocker: Any, client_v2: LLMWhispererClientV2) -> No
|
34 | 35 |
|
35 | 36 | assert response["status"] == "success"
|
36 | 37 | assert response["webhook_details"]["url"] == WEBHOOK_URL
|
| 38 | + |
| 39 | + |
| 40 | +def test_whisper_json_string_response_error(mocker: Any, client_v2: LLMWhispererClientV2) -> None: |
| 41 | + """Test whisper method handles JSON string responses correctly for error |
| 42 | + cases.""" |
| 43 | + mock_send = mocker.patch("requests.Session.send") |
| 44 | + mock_response = MagicMock() |
| 45 | + mock_response.status_code = 400 |
| 46 | + mock_response.text = '"Error message as JSON string"' |
| 47 | + mock_response.encoding = "utf-8" |
| 48 | + mock_send.return_value = mock_response |
| 49 | + |
| 50 | + with pytest.raises(LLMWhispererClientException) as exc_info: |
| 51 | + client_v2.whisper(url="https://example.com/test.pdf") |
| 52 | + |
| 53 | + error = exc_info.value.args[0] |
| 54 | + assert error["message"] == "Error message as JSON string" |
| 55 | + assert error["status_code"] == 400 |
| 56 | + assert error["extraction"] == {} |
| 57 | + |
| 58 | + |
| 59 | +def test_whisper_json_string_response_202(mocker: Any, client_v2: LLMWhispererClientV2) -> None: |
| 60 | + """Test whisper method handles JSON string responses correctly for 202 |
| 61 | + status.""" |
| 62 | + mock_send = mocker.patch("requests.Session.send") |
| 63 | + mock_response = MagicMock() |
| 64 | + mock_response.status_code = 202 |
| 65 | + mock_response.text = '"Processing in progress"' |
| 66 | + mock_response.encoding = "utf-8" |
| 67 | + mock_send.return_value = mock_response |
| 68 | + |
| 69 | + response = client_v2.whisper(url="https://example.com/test.pdf", wait_for_completion=False) |
| 70 | + |
| 71 | + assert response["message"] == "Processing in progress" |
| 72 | + assert response["status_code"] == 202 |
| 73 | + assert response["extraction"] == {} |
| 74 | + |
| 75 | + |
| 76 | +def test_whisper_invalid_json_response_error(mocker: Any, client_v2: LLMWhispererClientV2) -> None: |
| 77 | + """Test whisper method handles invalid JSON responses correctly for error |
| 78 | + cases.""" |
| 79 | + mock_send = mocker.patch("requests.Session.send") |
| 80 | + mock_response = MagicMock() |
| 81 | + mock_response.status_code = 500 |
| 82 | + mock_response.text = "Invalid JSON response" |
| 83 | + mock_response.encoding = "utf-8" |
| 84 | + mock_send.return_value = mock_response |
| 85 | + |
| 86 | + with pytest.raises(LLMWhispererClientException) as exc_info: |
| 87 | + client_v2.whisper(url="https://example.com/test.pdf") |
| 88 | + |
| 89 | + error = exc_info.value.args[0] |
| 90 | + assert error["message"] == "Invalid JSON response" |
| 91 | + assert error["status_code"] == 500 |
| 92 | + assert error["extraction"] == {} |
| 93 | + |
| 94 | + |
| 95 | +def test_whisper_invalid_json_response_202(mocker: Any, client_v2: LLMWhispererClientV2) -> None: |
| 96 | + """Test whisper method handles invalid JSON responses correctly for 202 |
| 97 | + status.""" |
| 98 | + mock_send = mocker.patch("requests.Session.send") |
| 99 | + mock_response = MagicMock() |
| 100 | + mock_response.status_code = 202 |
| 101 | + mock_response.text = "Invalid JSON response" |
| 102 | + mock_response.encoding = "utf-8" |
| 103 | + mock_send.return_value = mock_response |
| 104 | + |
| 105 | + response = client_v2.whisper(url="https://example.com/test.pdf", wait_for_completion=False) |
| 106 | + |
| 107 | + assert response["message"] == "Invalid JSON response" |
| 108 | + assert response["status_code"] == 202 |
| 109 | + assert response["extraction"] == {} |
0 commit comments