Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 8 additions & 7 deletions pinecone/openapi_support/rest_aiohttp.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
26 changes: 26 additions & 0 deletions tests/unit/openapi_support/test_rest_aiohttp_ssl_verify.py
Original file line number Diff line number Diff line change
@@ -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)}")