Skip to content

[BUG] Failing tests test_callable_in_request_session and test_basicauth_in_request_session #849

Open
@drupol

Description

What is the bug?

Official tests of the package are failing:

  • test_callable_in_request_session
  • test_basicauth_in_request_session

How can one reproduce the bug?

Run pytest

What is the expected behavior?

Tests should pass

What is your host/environment?

Linux, Python 3.12.5

Do you have any screenshots?

Log
============================= test session starts ==============================
platform linux -- Python 3.12.7, pytest-8.3.3, pluggy-1.5.0
rootdir: /build/source
configfile: setup.cfg
plugins: asyncio-0.23.8, mock-3.14.0
asyncio: mode=Mode.AUTO
collected 853 items / 2 deselected / 851 selected                              

test_opensearchpy/test_async/test_client.py ...                          [  0%]
test_opensearchpy/test_async/test_helpers/test_document.py ............. [  1%]
.................................                                        [  5%]
test_opensearchpy/test_async/test_helpers/test_faceted_search.py ....... [  6%]
.....................                                                    [  9%]
test_opensearchpy/test_async/test_helpers/test_index.py .............    [ 10%]
test_opensearchpy/test_async/test_helpers/test_mapping.py ........       [ 11%]
test_opensearchpy/test_async/test_helpers/test_search.py ............... [ 13%]
.................                                                        [ 15%]
test_opensearchpy/test_async/test_helpers/test_update_by_query.py ...... [ 15%]
..                                                                       [ 16%]
test_opensearchpy/test_async/test_http.py ......                         [ 16%]
test_opensearchpy/test_async/test_http_connection.py ...FF               [ 17%]
test_opensearchpy/test_async/test_plugins_client.py .                    [ 17%]
test_opensearchpy/test_async/test_server_secured/test_security_plugin.py s [ 17%]
ssssssssssssss                                                           [ 19%]
test_opensearchpy/test_async/test_signer.py .........                    [ 20%]
test_opensearchpy/test_async/test_transport.py ......................... [ 23%]
.......                                                                  [ 24%]
test_opensearchpy/test_cases.py ...                                      [ 24%]
test_opensearchpy/test_client/test_cluster.py ...                        [ 24%]
test_opensearchpy/test_client/test_http.py ......                        [ 25%]
test_opensearchpy/test_client/test_indices.py .....                      [ 26%]
test_opensearchpy/test_client/test_overrides.py ...............          [ 27%]
test_opensearchpy/test_client/test_plugins/test_alerting.py ............ [ 29%]
                                                                         [ 29%]
test_opensearchpy/test_client/test_plugins/test_index_management.py .... [ 29%]
.....                                                                    [ 30%]
test_opensearchpy/test_client/test_plugins/test_plugins_client.py .      [ 30%]
test_opensearchpy/test_client/test_point_in_time.py ........             [ 31%]
test_opensearchpy/test_client/test_remote_store.py .                     [ 31%]
test_opensearchpy/test_client/test_requests.py ..                        [ 31%]
test_opensearchpy/test_client/test_search_pipeline.py ..                 [ 32%]
test_opensearchpy/test_client/test_urllib3.py ...                        [ 32%]
test_opensearchpy/test_client/test_utils.py ..............               [ 34%]
test_opensearchpy/test_connection/test_base_connection.py .............  [ 35%]
test_opensearchpy/test_connection/test_requests_http_connection.py ..... [ 36%]
........................................................................ [ 44%]
                                                                         [ 44%]
test_opensearchpy/test_connection/test_urllib3_http_connection.py ...... [ 45%]
.....................................................                    [ 51%]
test_opensearchpy/test_connection_pool.py ..............                 [ 53%]
test_opensearchpy/test_exceptions.py ..                                  [ 53%]
test_opensearchpy/test_helpers/test_actions.py .s...........             [ 54%]
test_opensearchpy/test_helpers/test_aggs.py ............................ [ 58%]
....                                                                     [ 58%]
test_opensearchpy/test_helpers/test_analysis.py ...........              [ 60%]
test_opensearchpy/test_helpers/test_document.py ........................ [ 62%]
.......................                                                  [ 65%]
test_opensearchpy/test_helpers/test_faceted_search.py .................. [ 67%]
..........                                                               [ 68%]
test_opensearchpy/test_helpers/test_field.py ...................         [ 71%]
test_opensearchpy/test_helpers/test_index.py ..............              [ 72%]
test_opensearchpy/test_helpers/test_mapping.py ........                  [ 73%]
test_opensearchpy/test_helpers/test_query.py ........................... [ 76%]
.....................................                                    [ 81%]
test_opensearchpy/test_helpers/test_result.py .................          [ 83%]
test_opensearchpy/test_helpers/test_search.py .......................... [ 86%]
............                                                             [ 87%]
test_opensearchpy/test_helpers/test_update_by_query.py .........         [ 88%]
test_opensearchpy/test_helpers/test_utils.py ...........                 [ 90%]
test_opensearchpy/test_helpers/test_validation.py ..........             [ 91%]
test_opensearchpy/test_helpers/test_wrappers.py ........................ [ 94%]
.                                                                        [ 94%]
test_opensearchpy/test_serializer.py .s..sssssssssss........             [ 96%]
test_opensearchpy/test_transport.py ...........................          [100%]

=================================== FAILURES ===================================
__________ TestAsyncHttpConnection.test_basicauth_in_request_session ___________

self = <test_opensearchpy.test_async.test_http_connection.TestAsyncHttpConnection object at 0x7ffff4c69100>
mock_request = <Mock name='request' id='140737295999408'>

    @pytest.mark.asyncio  # type: ignore
    @mock.patch("aiohttp.ClientSession.request", new_callable=mock.Mock)
    async def test_basicauth_in_request_session(self, mock_request: Any) -> None:
        async def do_request(*args: Any, **kwargs: Any) -> Any:
            response_mock = mock.AsyncMock()
            response_mock.headers = CIMultiDict()
            response_mock.status = 200
            return response_mock
    
        mock_request.return_value = aiohttp.client._RequestContextManager(do_request())
    
        c = AsyncHttpConnection(
            http_auth=("username", "password"),
            loop=get_running_loop(),
        )
        c.headers = {}
>       await c.perform_request("post", "/test")

test_opensearchpy/test_async/test_http_connection.py:75: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
opensearchpy/connection/http_async.py:241: in perform_request
    self._raise_warnings(warning_headers)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <AsyncHttpConnection: http://localhost:9200>
warning_headers = <coroutine object AsyncMockMixin._execute_mock_call at 0x7ffff47c1c40>

    def _raise_warnings(self, warning_headers: Any) -> None:
        """If 'headers' contains a 'Warning' header raise
        the warnings to be seen by the user. Takes an iterable
        of string values from any number of 'Warning' headers.
        """
        if not warning_headers:
            return
    
        # Grab only the message from each header, the rest is discarded.
        # Format is: '(number) OpenSearch-(version)-(instance) "(message)"'
        warning_messages = []
>       for header in warning_headers:
E       TypeError: 'coroutine' object is not iterable

opensearchpy/connection/base.py:165: TypeError
___________ TestAsyncHttpConnection.test_callable_in_request_session ___________

self = <test_opensearchpy.test_async.test_http_connection.TestAsyncHttpConnection object at 0x7ffff4c69340>
mock_request = <Mock name='request' id='140737296002048'>

    @pytest.mark.asyncio  # type: ignore
    @mock.patch("aiohttp.ClientSession.request", new_callable=mock.Mock)
    async def test_callable_in_request_session(self, mock_request: Any) -> None:
        def auth_fn(*args: Any, **kwargs: Any) -> Any:
            return {
                "Test": "PASSED",
            }
    
        async def do_request(*args: Any, **kwargs: Any) -> Any:
            response_mock = mock.AsyncMock()
            response_mock.headers = CIMultiDict()
            response_mock.status = 200
            return response_mock
    
        mock_request.return_value = aiohttp.client._RequestContextManager(do_request())
    
        c = AsyncHttpConnection(http_auth=auth_fn, loop=get_running_loop())
        c.headers = {}
>       await c.perform_request("post", "/test")

test_opensearchpy/test_async/test_http_connection.py:109: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
opensearchpy/connection/http_async.py:241: in perform_request
    self._raise_warnings(warning_headers)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <AsyncHttpConnection: http://localhost:9200>
warning_headers = <coroutine object AsyncMockMixin._execute_mock_call at 0x7ffff47c2840>

    def _raise_warnings(self, warning_headers: Any) -> None:
        """If 'headers' contains a 'Warning' header raise
        the warnings to be seen by the user. Takes an iterable
        of string values from any number of 'Warning' headers.
        """
        if not warning_headers:
            return
    
        # Grab only the message from each header, the rest is discarded.
        # Format is: '(number) OpenSearch-(version)-(instance) "(message)"'
        warning_messages = []
>       for header in warning_headers:
E       TypeError: 'coroutine' object is not iterable

opensearchpy/connection/base.py:165: TypeError
=============================== warnings summary ===============================
test_opensearchpy/test_async/test_transport.py:428
  test_opensearchpy/test_async/test_transport.py:428: PytestDeprecationWarning: test_sniff_after_n_seconds is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    async def test_sniff_after_n_seconds(self, event_loop: Any) -> None:

test_opensearchpy/test_async/test_transport.py:482
  test_opensearchpy/test_async/test_transport.py:482: PytestDeprecationWarning: test_sniff_on_start_error_if_no_sniffed_hosts is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    async def test_sniff_on_start_error_if_no_sniffed_hosts(

test_opensearchpy/test_async/test_transport.py:501
  test_opensearchpy/test_async/test_transport.py:501: PytestDeprecationWarning: test_sniff_on_start_waits_for_sniff_to_complete is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    async def test_sniff_on_start_waits_for_sniff_to_complete(

test_opensearchpy/test_async/test_transport.py:539
  test_opensearchpy/test_async/test_transport.py:539: PytestDeprecationWarning: test_sniff_on_start_close_unlocks_async_calls is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    async def test_sniff_on_start_close_unlocks_async_calls(

test_opensearchpy/test_async/test_helpers/test_faceted_search.py::test_date_histogram_facet_with_1970_01_01_date
test_opensearchpy/test_async/test_helpers/test_faceted_search.py::test_date_histogram_facet_with_1970_01_01_date
test_opensearchpy/test_helpers/test_faceted_search.py::test_date_histogram_facet_with_1970_01_01_date
test_opensearchpy/test_helpers/test_faceted_search.py::test_date_histogram_facet_with_1970_01_01_date
  /build/source/opensearchpy/helpers/faceted_search.py:227: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).
    return datetime.utcfromtimestamp(int(bucket["key"]) / 1000.0)  # type: ignore

test_opensearchpy/test_async/test_server_secured/test_security_plugin.py: 15 warnings
  /build/source/opensearchpy/_async/http_aiohttp.py:203: UserWarning: Connecting to https://localhost:9200 using SSL with verify_certs=False is insecure.
    warnings.warn(

test_opensearchpy/test_async/test_server_secured/test_security_plugin.py::TestSecurityPlugin::test_create_role
  /nix/store/px2nj16i5gc3d4mnw5l1nclfdxhry61p-python3-3.12.7/lib/python3.12/linecache.py:52: RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited
    def checkcache(filename=None):
  Enable tracemalloc to get traceback where the object was allocated.
  See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.

test_opensearchpy/test_async/test_server_secured/test_security_plugin.py::TestSecurityPlugin::test_create_role
  /nix/store/px2nj16i5gc3d4mnw5l1nclfdxhry61p-python3-3.12.7/lib/python3.12/traceback.py:265: RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited
    def __init__(self, filename, lineno, name, *, lookup_line=True,
  Enable tracemalloc to get traceback where the object was allocated.
  See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.

test_opensearchpy/test_async/test_signer.py: 5 warnings
test_opensearchpy/test_connection/test_requests_http_connection.py: 5 warnings
test_opensearchpy/test_connection/test_urllib3_http_connection.py: 7 warnings
  /nix/store/7qs7b3cfsvxd806avf9am5qv57i7vf1f-python3.12-botocore-1.35.30/lib/python3.12/site-packages/botocore/auth.py:424: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).
    datetime_now = datetime.datetime.utcnow()

test_opensearchpy/test_client/test_point_in_time.py::TestPointInTime::test_create_one_point_in_time
  /build/source/opensearchpy/client/_patch.py:64: DeprecationWarning: The 'create_point_in_time' API is deprecated and will be removed in a future version. Use 'create_pit' API instead.
    warnings.warn(

test_opensearchpy/test_client/test_point_in_time.py::TestPointInTime::test_delete_all_point_in_time
test_opensearchpy/test_client/test_point_in_time.py::TestPointInTime::test_delete_one_point_in_time
  /build/source/opensearchpy/client/_patch.py:93: DeprecationWarning: The 'delete_point_in_time' API is deprecated and will be removed in a future version. Use 'delete_all_pits' or 'delete_pit' API instead.
    warnings.warn(

test_opensearchpy/test_client/test_point_in_time.py::TestPointInTime::test_list_all_point_in_time
  /build/source/opensearchpy/client/_patch.py:27: DeprecationWarning: The 'list_all_point_in_time' API is deprecated and will be removed in a future version. Use 'get_all_pits' API instead.
    warnings.warn(

test_opensearchpy/test_connection/test_urllib3_http_connection.py::TestUrllib3HttpConnection::test_uses_no_ca_certs
test_opensearchpy/test_connection/test_urllib3_http_connection.py::TestSignerWithFrozenCredentials::test_uses_no_ca_certs
  /build/source/opensearchpy/connection/http_urllib3.py:214: UserWarning: Connecting to https://localhost:9200 using SSL with verify_certs=False is insecure.
    warnings.warn(

test_opensearchpy/test_helpers/test_result.py::test_bucket_keys_get_deserialized
test_opensearchpy/test_helpers/test_result.py::test_bucket_keys_get_deserialized
test_opensearchpy/test_helpers/test_result.py::test_bucket_keys_get_deserialized
  /build/source/opensearchpy/helpers/field.py:295: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).
    return datetime.utcfromtimestamp(data / 1000.0)

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
FAILED test_opensearchpy/test_async/test_http_connection.py::TestAsyncHttpConnection::test_basicauth_in_request_session - TypeError: 'coroutine' object is not iterable
FAILED test_opensearchpy/test_async/test_http_connection.py::TestAsyncHttpConnection::test_callable_in_request_session - TypeError: 'coroutine' object is not iterable
= 2 failed, 821 passed, 28 skipped, 2 deselected, 51 warnings in 220.02s (0:03:40) =
error: builder for '/nix/store/w8bwzlrk1brd4gj69gyh5zn0p7dkp587-python3.12-opensearch-py-2.7.1.drv' failed with exit code 1;
       last 50 log lines:
       >   /build/source/opensearchpy/_async/http_aiohttp.py:203: UserWarning: Connecting to https://localhost:9200 using SSL with verify_certs=False is insecure.
       >     warnings.warn(
       >
       > test_opensearchpy/test_async/test_server_secured/test_security_plugin.py::TestSecurityPlugin::test_create_role
       >   /nix/store/px2nj16i5gc3d4mnw5l1nclfdxhry61p-python3-3.12.7/lib/python3.12/linecache.py:52: RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited
       >     def checkcache(filename=None):
       >   Enable tracemalloc to get traceback where the object was allocated.
       >   See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.
       >
       > test_opensearchpy/test_async/test_server_secured/test_security_plugin.py::TestSecurityPlugin::test_create_role
       >   /nix/store/px2nj16i5gc3d4mnw5l1nclfdxhry61p-python3-3.12.7/lib/python3.12/traceback.py:265: RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited
       >     def __init__(self, filename, lineno, name, *, lookup_line=True,
       >   Enable tracemalloc to get traceback where the object was allocated.
       >   See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.
       >
       > test_opensearchpy/test_async/test_signer.py: 5 warnings
       > test_opensearchpy/test_connection/test_requests_http_connection.py: 5 warnings
       > test_opensearchpy/test_connection/test_urllib3_http_connection.py: 7 warnings
       >   /nix/store/7qs7b3cfsvxd806avf9am5qv57i7vf1f-python3.12-botocore-1.35.30/lib/python3.12/site-packages/botocore/auth.py:424: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).
       >     datetime_now = datetime.datetime.utcnow()
       >
       > test_opensearchpy/test_client/test_point_in_time.py::TestPointInTime::test_create_one_point_in_time
       >   /build/source/opensearchpy/client/_patch.py:64: DeprecationWarning: The 'create_point_in_time' API is deprecated and will be removed in a future version. Use 'create_pit' API instead.
       >     warnings.warn(
       >
       > test_opensearchpy/test_client/test_point_in_time.py::TestPointInTime::test_delete_all_point_in_time
       > test_opensearchpy/test_client/test_point_in_time.py::TestPointInTime::test_delete_one_point_in_time
       >   /build/source/opensearchpy/client/_patch.py:93: DeprecationWarning: The 'delete_point_in_time' API is deprecated and will be removed in a future version. Use 'delete_all_pits' or 'delete_pit' API instead.
       >     warnings.warn(
       >
       > test_opensearchpy/test_client/test_point_in_time.py::TestPointInTime::test_list_all_point_in_time
       >   /build/source/opensearchpy/client/_patch.py:27: DeprecationWarning: The 'list_all_point_in_time' API is deprecated and will be removed in a future version. Use 'get_all_pits' API instead.
       >     warnings.warn(
       >
       > test_opensearchpy/test_connection/test_urllib3_http_connection.py::TestUrllib3HttpConnection::test_uses_no_ca_certs
       > test_opensearchpy/test_connection/test_urllib3_http_connection.py::TestSignerWithFrozenCredentials::test_uses_no_ca_certs
       >   /build/source/opensearchpy/connection/http_urllib3.py:214: UserWarning: Connecting to https://localhost:9200 using SSL with verify_certs=False is insecure.
       >     warnings.warn(
       >
       > test_opensearchpy/test_helpers/test_result.py::test_bucket_keys_get_deserialized
       > test_opensearchpy/test_helpers/test_result.py::test_bucket_keys_get_deserialized
       > test_opensearchpy/test_helpers/test_result.py::test_bucket_keys_get_deserialized
       >   /build/source/opensearchpy/helpers/field.py:295: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).
       >     return datetime.utcfromtimestamp(data / 1000.0)
       >
       > -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
       > =========================== short test summary info ============================
       > FAILED test_opensearchpy/test_async/test_http_connection.py::TestAsyncHttpConnection::test_basicauth_in_request_session - TypeError: 'coroutine' object is not iterable
       > FAILED test_opensearchpy/test_async/test_http_connection.py::TestAsyncHttpConnection::test_callable_in_request_session - TypeError: 'coroutine' object is not iterable
       > = 2 failed, 821 passed, 28 skipped, 2 deselected, 51 warnings in 220.02s (0:03:40) =

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions