diff --git a/CHANGELOG.md b/CHANGELOG.md index 308fa4f6a..06a1155eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.2.20] + +* **fix: Prevent weaviate cloud precheck from passing with invalid config** + ## [1.2.19] * **fix: Pinned aibotocore to skip version that's incompatible with recent botocore version** diff --git a/test/integration/connectors/weaviate/test_cloud.py b/test/integration/connectors/weaviate/test_cloud.py index c3d0ae4dc..a376e6a89 100644 --- a/test/integration/connectors/weaviate/test_cloud.py +++ b/test/integration/connectors/weaviate/test_cloud.py @@ -1,17 +1,20 @@ import pytest from test.integration.connectors.utils.constants import DESTINATION_TAG, VECTOR_DB_TAG -from unstructured_ingest.error import ValueError +from unstructured_ingest.error import DestinationConnectionError +from unstructured_ingest.error import ValueError as IngestValueError from unstructured_ingest.processes.connectors.weaviate.cloud import ( CONNECTOR_TYPE, CloudWeaviateAccessConfig, CloudWeaviateConnectionConfig, + CloudWeaviateUploader, + CloudWeaviateUploaderConfig, ) @pytest.mark.tags(CONNECTOR_TYPE, DESTINATION_TAG, VECTOR_DB_TAG) def test_weaviate_failing_connection_config(): - with pytest.raises(ValueError): + with pytest.raises(IngestValueError): CloudWeaviateConnectionConfig( access_config=CloudWeaviateAccessConfig(api_key="my key", password="password"), username="username", @@ -37,3 +40,20 @@ def test_weaviate_connection_config_anonymous(): anonymous=True, cluster_url="clusterurl", ) + + +@pytest.mark.tags(CONNECTOR_TYPE, DESTINATION_TAG, VECTOR_DB_TAG) +def test_weaviate_precheck_invalid_credentials(): + """Test that precheck properly validates connection with invalid credentials.""" + connection_config = CloudWeaviateConnectionConfig( + access_config=CloudWeaviateAccessConfig(api_key="invalid-test-key-12345"), + cluster_url="https://invalid-test-cluster.weaviate.cloud", + anonymous=False, + ) + upload_config = CloudWeaviateUploaderConfig(collection=None) + uploader = CloudWeaviateUploader( + connection_config=connection_config, + upload_config=upload_config, + ) + with pytest.raises(DestinationConnectionError): + uploader.precheck() diff --git a/unstructured_ingest/__version__.py b/unstructured_ingest/__version__.py index 3c03d1982..bea5393cf 100644 --- a/unstructured_ingest/__version__.py +++ b/unstructured_ingest/__version__.py @@ -1 +1 @@ -__version__ = "1.2.19" # pragma: no cover +__version__ = "1.2.20" # pragma: no cover diff --git a/unstructured_ingest/processes/connectors/weaviate/weaviate.py b/unstructured_ingest/processes/connectors/weaviate/weaviate.py index 5fe3a9d86..dbdfa7e28 100644 --- a/unstructured_ingest/processes/connectors/weaviate/weaviate.py +++ b/unstructured_ingest/processes/connectors/weaviate/weaviate.py @@ -220,7 +220,10 @@ def _collection_exists(self, collection_name: Optional[str] = None): def precheck(self) -> None: try: - self.connection_config.get_client() + with self.connection_config.get_client(): + # Connection test successful - client is available but not needed + pass + # only if collection name populated should we check that it exists if self.upload_config.collection and not self._collection_exists(): raise DestinationConnectionError(