|
23 | 23 |
|
24 | 24 | from kernel import Kernel, AsyncKernel, APIResponseValidationError
|
25 | 25 | from kernel._types import Omit
|
26 |
| -from kernel._utils import maybe_transform |
27 | 26 | from kernel._models import BaseModel, FinalRequestOptions
|
28 |
| -from kernel._constants import RAW_RESPONSE_HEADER |
29 | 27 | from kernel._exceptions import KernelError, APIStatusError, APITimeoutError, APIResponseValidationError
|
30 | 28 | from kernel._base_client import (
|
31 | 29 | DEFAULT_TIMEOUT,
|
|
35 | 33 | DefaultAsyncHttpxClient,
|
36 | 34 | make_request_options,
|
37 | 35 | )
|
38 |
| -from kernel.types.browser_create_params import BrowserCreateParams |
39 | 36 |
|
40 | 37 | from .utils import update_env
|
41 | 38 |
|
@@ -722,45 +719,22 @@ def test_parse_retry_after_header(self, remaining_retries: int, retry_after: str
|
722 | 719 | @pytest.mark.skip() # SDK-2615
|
723 | 720 | @mock.patch("kernel._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
|
724 | 721 | @pytest.mark.respx(base_url=base_url)
|
725 |
| - def test_retrying_timeout_errors_doesnt_leak(self, respx_mock: MockRouter) -> None: |
| 722 | + def test_retrying_timeout_errors_doesnt_leak(self, respx_mock: MockRouter, client: Kernel) -> None: |
726 | 723 | respx_mock.post("/browsers").mock(side_effect=httpx.TimeoutException("Test timeout error"))
|
727 | 724 |
|
728 | 725 | with pytest.raises(APITimeoutError):
|
729 |
| - self.client.post( |
730 |
| - "/browsers", |
731 |
| - body=cast( |
732 |
| - object, |
733 |
| - maybe_transform( |
734 |
| - dict(invocation_id="REPLACE_ME", persistence={"id": "browser-for-user-1234"}), |
735 |
| - BrowserCreateParams, |
736 |
| - ), |
737 |
| - ), |
738 |
| - cast_to=httpx.Response, |
739 |
| - options={"headers": {RAW_RESPONSE_HEADER: "stream"}}, |
740 |
| - ) |
| 726 | + client.browsers.with_streaming_response.create(invocation_id="rr33xuugxj9h0bkf1rdt2bet").__enter__() |
741 | 727 |
|
742 | 728 | assert _get_open_connections(self.client) == 0
|
743 | 729 |
|
744 | 730 | @pytest.mark.skip() # SDK-2615
|
745 | 731 | @mock.patch("kernel._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
|
746 | 732 | @pytest.mark.respx(base_url=base_url)
|
747 |
| - def test_retrying_status_errors_doesnt_leak(self, respx_mock: MockRouter) -> None: |
| 733 | + def test_retrying_status_errors_doesnt_leak(self, respx_mock: MockRouter, client: Kernel) -> None: |
748 | 734 | respx_mock.post("/browsers").mock(return_value=httpx.Response(500))
|
749 | 735 |
|
750 | 736 | with pytest.raises(APIStatusError):
|
751 |
| - self.client.post( |
752 |
| - "/browsers", |
753 |
| - body=cast( |
754 |
| - object, |
755 |
| - maybe_transform( |
756 |
| - dict(invocation_id="REPLACE_ME", persistence={"id": "browser-for-user-1234"}), |
757 |
| - BrowserCreateParams, |
758 |
| - ), |
759 |
| - ), |
760 |
| - cast_to=httpx.Response, |
761 |
| - options={"headers": {RAW_RESPONSE_HEADER: "stream"}}, |
762 |
| - ) |
763 |
| - |
| 737 | + client.browsers.with_streaming_response.create(invocation_id="rr33xuugxj9h0bkf1rdt2bet").__enter__() |
764 | 738 | assert _get_open_connections(self.client) == 0
|
765 | 739 |
|
766 | 740 | @pytest.mark.parametrize("failures_before_success", [0, 2, 4])
|
@@ -1575,45 +1549,26 @@ async def test_parse_retry_after_header(self, remaining_retries: int, retry_afte
|
1575 | 1549 | @pytest.mark.skip() # SDK-2615
|
1576 | 1550 | @mock.patch("kernel._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
|
1577 | 1551 | @pytest.mark.respx(base_url=base_url)
|
1578 |
| - async def test_retrying_timeout_errors_doesnt_leak(self, respx_mock: MockRouter) -> None: |
| 1552 | + async def test_retrying_timeout_errors_doesnt_leak(self, respx_mock: MockRouter, async_client: AsyncKernel) -> None: |
1579 | 1553 | respx_mock.post("/browsers").mock(side_effect=httpx.TimeoutException("Test timeout error"))
|
1580 | 1554 |
|
1581 | 1555 | with pytest.raises(APITimeoutError):
|
1582 |
| - await self.client.post( |
1583 |
| - "/browsers", |
1584 |
| - body=cast( |
1585 |
| - object, |
1586 |
| - maybe_transform( |
1587 |
| - dict(invocation_id="REPLACE_ME", persistence={"id": "browser-for-user-1234"}), |
1588 |
| - BrowserCreateParams, |
1589 |
| - ), |
1590 |
| - ), |
1591 |
| - cast_to=httpx.Response, |
1592 |
| - options={"headers": {RAW_RESPONSE_HEADER: "stream"}}, |
1593 |
| - ) |
| 1556 | + await async_client.browsers.with_streaming_response.create( |
| 1557 | + invocation_id="rr33xuugxj9h0bkf1rdt2bet" |
| 1558 | + ).__aenter__() |
1594 | 1559 |
|
1595 | 1560 | assert _get_open_connections(self.client) == 0
|
1596 | 1561 |
|
1597 | 1562 | @pytest.mark.skip() # SDK-2615
|
1598 | 1563 | @mock.patch("kernel._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
|
1599 | 1564 | @pytest.mark.respx(base_url=base_url)
|
1600 |
| - async def test_retrying_status_errors_doesnt_leak(self, respx_mock: MockRouter) -> None: |
| 1565 | + async def test_retrying_status_errors_doesnt_leak(self, respx_mock: MockRouter, async_client: AsyncKernel) -> None: |
1601 | 1566 | respx_mock.post("/browsers").mock(return_value=httpx.Response(500))
|
1602 | 1567 |
|
1603 | 1568 | with pytest.raises(APIStatusError):
|
1604 |
| - await self.client.post( |
1605 |
| - "/browsers", |
1606 |
| - body=cast( |
1607 |
| - object, |
1608 |
| - maybe_transform( |
1609 |
| - dict(invocation_id="REPLACE_ME", persistence={"id": "browser-for-user-1234"}), |
1610 |
| - BrowserCreateParams, |
1611 |
| - ), |
1612 |
| - ), |
1613 |
| - cast_to=httpx.Response, |
1614 |
| - options={"headers": {RAW_RESPONSE_HEADER: "stream"}}, |
1615 |
| - ) |
1616 |
| - |
| 1569 | + await async_client.browsers.with_streaming_response.create( |
| 1570 | + invocation_id="rr33xuugxj9h0bkf1rdt2bet" |
| 1571 | + ).__aenter__() |
1617 | 1572 | assert _get_open_connections(self.client) == 0
|
1618 | 1573 |
|
1619 | 1574 | @pytest.mark.parametrize("failures_before_success", [0, 2, 4])
|
|
0 commit comments