diff --git a/pinecone/openapi_support/rest_aiohttp.py b/pinecone/openapi_support/rest_aiohttp.py index 8b84e850a..8ce33fd9c 100644 --- a/pinecone/openapi_support/rest_aiohttp.py +++ b/pinecone/openapi_support/rest_aiohttp.py @@ -16,14 +16,15 @@ def __init__(self, configuration: Configuration) -> None: "Additional dependencies are required to use Pinecone with asyncio. Include these extra dependencies in your project by installing `pinecone[asyncio]`." ) from None - if configuration.ssl_ca_cert is not None: - ca_certs = configuration.ssl_ca_cert + if configuration.verify_ssl: + if configuration.ssl_ca_cert is not None: + ca_certs = configuration.ssl_ca_cert + else: + ca_certs = certifi.where() + ssl_context = ssl.create_default_context(cafile=ca_certs) + conn = aiohttp.TCPConnector(ssl=ssl_context) else: - ca_certs = certifi.where() - - ssl_context = ssl.create_default_context(cafile=ca_certs) - - conn = aiohttp.TCPConnector(verify_ssl=configuration.verify_ssl, ssl=ssl_context) + conn = aiohttp.TCPConnector(verify_ssl=False) if configuration.proxy: self._session = aiohttp.ClientSession(connector=conn, proxy=configuration.proxy) diff --git a/tests/unit/openapi_support/test_rest_aiohttp_ssl_verify.py b/tests/unit/openapi_support/test_rest_aiohttp_ssl_verify.py new file mode 100644 index 000000000..66295957c --- /dev/null +++ b/tests/unit/openapi_support/test_rest_aiohttp_ssl_verify.py @@ -0,0 +1,26 @@ +import pytest +import asyncio +import os +import mock +from unittest.mock import patch, MagicMock +from pinecone import Pinecone +from pinecone.openapi_support.rest_aiohttp import AiohttpRestClient +from pinecone.config.openapi_configuration import Configuration + +@pytest.mark.asyncio +async def test_ssl_verify_false_causes_error(): + """Test that using ssl_verify=False causes an error due to the mutually exclusive + parameters in aiohttp.TCPConnector constructor.""" + + # Create a mock configuration with verify_ssl=False + config = Configuration() + config.verify_ssl = False + + # Passes if no error is thrown, and fails if an error occurs + try: + rest_client = AiohttpRestClient(config) + # If we get here, no error was thrown, so the test passes + assert True + except ValueError as e: + # If we get here, an error was thrown, so the test fails + pytest.fail(f"Expected no error but got: {str(e)}")