Exemple #1
0
    async def test_list_indexes(self, api_key, endpoint, index_name, **kwargs):
        client = SearchIndexClient(endpoint, AzureKeyCredential(api_key))
        result = client.list_indexes()

        first = await result.__anext__()
        assert first.name == index_name

        with pytest.raises(StopAsyncIteration):
            await result.__anext__()
Exemple #2
0
 async def test_delete_indexes(self, api_key, endpoint, index_name,
                               **kwargs):
     client = SearchIndexClient(endpoint, AzureKeyCredential(api_key))
     await client.delete_index(index_name)
     import time
     if self.is_live:
         time.sleep(TIME_TO_SLEEP)
     result = client.list_indexes()
     with pytest.raises(StopAsyncIteration):
         await result.__anext__()
Exemple #3
0
    def test_index_endpoint_https(self):
        credential = AzureKeyCredential(key="old_api_key")
        client = SearchIndexClient("endpoint", credential)
        assert client._endpoint.startswith('https')

        client = SearchIndexClient("https://endpoint", credential)
        assert client._endpoint.startswith('https')

        with pytest.raises(ValueError):
            client = SearchIndexClient("http://endpoint", credential)

        with pytest.raises(ValueError):
            client = SearchIndexClient(12345, credential)
    async def test_delete_synonym_map_if_unchanged(self, api_key, endpoint, index_name, **kwargs):
        client = SearchIndexClient(endpoint, AzureKeyCredential(api_key))
        result = await client.create_synonym_map("test-syn-map", [
            "USA, United States, United States of America",
            "Washington, Wash. => WA",
        ])
        etag = result.e_tag

        await client.create_or_update_synonym_map("test-syn-map", [
                    "Washington, Wash. => WA",
                ])

        result.e_tag = etag
        with pytest.raises(HttpResponseError):
            await client.delete_synonym_map(result, match_condition=MatchConditions.IfNotModified)
            assert len(client.get_synonym_maps()) == 1
Exemple #5
0
    async def test_create_or_update_indexes_if_unchanged(
            self, api_key, endpoint, index_name, **kwargs):
        client = SearchIndexClient(endpoint, AzureKeyCredential(api_key))

        # First create an index
        name = "hotels"
        fields = [{
            "name": "hotelId",
            "type": "Edm.String",
            "key": True,
            "searchable": False
        }, {
            "name": "baseRate",
            "type": "Edm.Double"
        }]
        scoring_profile = ScoringProfile(name="MyProfile")
        scoring_profiles = []
        scoring_profiles.append(scoring_profile)
        cors_options = CorsOptions(allowed_origins=["*"],
                                   max_age_in_seconds=60)
        index = SearchIndex(name=name,
                            fields=fields,
                            scoring_profiles=scoring_profiles,
                            cors_options=cors_options)
        result = await client.create_index(index)
        etag = result.e_tag
        # get e tag  nd update
        index.scoring_profiles = []
        await client.create_or_update_index(index)

        index.e_tag = etag
        with pytest.raises(HttpResponseError):
            await client.create_or_update_index(
                index, match_condition=MatchConditions.IfNotModified)
Exemple #6
0
    async def _prepare_indexer(self, endpoint, api_key, name="sample-indexer", ds_name="sample-datasource", id_name="hotels"):
        con_str = self.settings.AZURE_STORAGE_CONNECTION_STRING
        self.scrubber.register_name_pair(con_str, 'connection_string')
        container = SearchIndexerDataContainer(name='searchcontainer')
        data_source_connection = SearchIndexerDataSourceConnection(
            name=ds_name,
            type="azureblob",
            connection_string=con_str,
            container=container
        )
        ds_client = SearchIndexerClient(endpoint, AzureKeyCredential(api_key))
        ds = await ds_client.create_data_source_connection(data_source_connection)

        index_name = id_name
        fields = [
        {
          "name": "hotelId",
          "type": "Edm.String",
          "key": True,
          "searchable": False
        }]
        index = SearchIndex(name=index_name, fields=fields)
        ind_client = SearchIndexClient(endpoint, AzureKeyCredential(api_key))
        ind = await ind_client.create_index(index)
        return SearchIndexer(name=name, data_source_name=ds.name, target_index_name=ind.name)
Exemple #7
0
    async def test_create_or_update_index(self, api_key, endpoint, index_name,
                                          **kwargs):
        name = "hotels"
        fields = fields = [
            SimpleField(name="hotelId",
                        type=SearchFieldDataType.String,
                        key=True),
            SimpleField(name="baseRate", type=SearchFieldDataType.Double)
        ]

        cors_options = CorsOptions(allowed_origins=["*"],
                                   max_age_in_seconds=60)
        scoring_profiles = []
        index = SearchIndex(name=name,
                            fields=fields,
                            scoring_profiles=scoring_profiles,
                            cors_options=cors_options)
        client = SearchIndexClient(endpoint, AzureKeyCredential(api_key))
        result = await client.create_or_update_index(index=index)
        assert len(result.scoring_profiles) == 0
        assert result.cors_options.allowed_origins == cors_options.allowed_origins
        assert result.cors_options.max_age_in_seconds == cors_options.max_age_in_seconds
        scoring_profile = ScoringProfile(name="MyProfile")
        scoring_profiles = []
        scoring_profiles.append(scoring_profile)
        index = SearchIndex(name=name,
                            fields=fields,
                            scoring_profiles=scoring_profiles,
                            cors_options=cors_options)
        result = await client.create_or_update_index(index=index)
        assert result.scoring_profiles[0].name == scoring_profile.name
        assert result.cors_options.allowed_origins == cors_options.allowed_origins
        assert result.cors_options.max_age_in_seconds == cors_options.max_age_in_seconds
 async def test_search_indexers(self, endpoint, api_key, **kwargs):
     storage_cs = kwargs.get("search_storage_connection_string")
     container_name = kwargs.get("search_storage_container_name")
     client = SearchIndexerClient(endpoint, api_key)
     index_client = SearchIndexClient(endpoint, api_key)
     async with client:
         async with index_client:
             await self._test_create_indexer(client, index_client,
                                             storage_cs, container_name)
             await self._test_delete_indexer(client, index_client,
                                             storage_cs, container_name)
             await self._test_get_indexer(client, index_client, storage_cs,
                                          container_name)
             await self._test_list_indexer(client, index_client, storage_cs,
                                           container_name)
             await self._test_create_or_update_indexer(
                 client, index_client, storage_cs, container_name)
             await self._test_reset_indexer(client, index_client,
                                            storage_cs, container_name)
             await self._test_run_indexer(client, index_client, storage_cs,
                                          container_name)
             await self._test_get_indexer_status(client, index_client,
                                                 storage_cs, container_name)
             await self._test_create_or_update_indexer_if_unchanged(
                 client, index_client, storage_cs, container_name)
             await self._test_delete_indexer_if_unchanged(
                 client, index_client, storage_cs, container_name)
async def create_indexer():
    # create an index
    index_name = "async-indexer-hotels"
    fields = [
        SimpleField(name="hotelId", type=SearchFieldDataType.String, key=True),
        SimpleField(name="baseRate", type=SearchFieldDataType.Double)
    ]
    index = SearchIndex(name=index_name, fields=fields)
    ind_client = SearchIndexClient(service_endpoint, AzureKeyCredential(key))
    async with ind_client:
        await ind_client.create_index(index)

    # [START create_indexer_async]
    # create a datasource
    container = SearchIndexerDataContainer(name='searchcontainer')
    data_source_connection = SearchIndexerDataSourceConnection(
        name="indexer-datasource",
        type="azureblob",
        connection_string=connection_string,
        container=container)
    data_source = await indexers_client.create_data_source_connection(
        data_source_connection)

    # create an indexer
    indexer = SearchIndexer(name="async-sample-indexer",
                            data_source_name="async-indexer-datasource",
                            target_index_name="indexer-hotels")
    result = await indexers_client.create_indexer(indexer)
    print("Create new Indexer - async-sample-indexer")
async def authentication_service_client_with_api_key_credential_async():
    # [START create_search_service_with_key_async]
    from azure.core.credentials import AzureKeyCredential
    from azure.search.documents.indexes.aio import SearchIndexClient
    service_endpoint = os.getenv("AZURE_SEARCH_SERVICE_ENDPOINT")
    key = os.getenv("AZURE_SEARCH_API_KEY")

    client = SearchIndexClient(service_endpoint, AzureKeyCredential(key))
 async def test_delete_synonym_map(self, api_key, endpoint, index_name, **kwargs):
     client = SearchIndexClient(endpoint, AzureKeyCredential(api_key))
     result = await client.create_synonym_map("test-syn-map", [
         "USA, United States, United States of America",
         "Washington, Wash. => WA",
     ])
     assert len(await client.get_synonym_maps()) == 1
     await client.delete_synonym_map("test-syn-map")
     assert len(await client.get_synonym_maps()) == 0
Exemple #12
0
 async def test_synonym_map(self, endpoint, api_key):
     client = SearchIndexClient(endpoint, api_key)
     async with client:
         await self._test_create_synonym_map(client)
         await self._test_delete_synonym_map(client)
         await self._test_delete_synonym_map_if_unchanged(client)
         await self._test_get_synonym_map(client)
         await self._test_get_synonym_maps(client)
         await self._test_create_or_update_synonym_map(client)
 async def test_get_synonym_maps(self, api_key, endpoint, index_name, **kwargs):
     client = SearchIndexClient(endpoint, AzureKeyCredential(api_key))
     await client.create_synonym_map("test-syn-map-1", [
         "USA, United States, United States of America",
     ])
     await client.create_synonym_map("test-syn-map-2", [
         "Washington, Wash. => WA",
     ])
     result = await client.get_synonym_maps()
     assert isinstance(result, list)
     assert all(isinstance(x, SynonymMap) for x in result)
     assert set(x.name for x in result) == {"test-syn-map-1", "test-syn-map-2"}
Exemple #14
0
 def test_index_credential_roll(self):
     credential = AzureKeyCredential(key="old_api_key")
     client = SearchIndexClient("endpoint", credential)
     assert client._headers == {
         "api-key": "old_api_key",
         "Accept": "application/json;odata.metadata=minimal",
     }
     credential.update("new_api_key")
     assert client._headers == {
         "api-key": "new_api_key",
         "Accept": "application/json;odata.metadata=minimal",
     }
 async def test_create_synonym_map(self, api_key, endpoint, index_name, **kwargs):
     client = SearchIndexClient(endpoint, AzureKeyCredential(api_key))
     result = await client.create_synonym_map("test-syn-map", [
         "USA, United States, United States of America",
         "Washington, Wash. => WA",
     ])
     assert isinstance(result, SynonymMap)
     assert result.name == "test-syn-map"
     assert result.synonyms == [
         "USA, United States, United States of America",
         "Washington, Wash. => WA",
     ]
     assert len(await client.get_synonym_maps()) == 1
async def simple_analyze_text():
    # [START simple_analyze_text_async]
    from azure.core.credentials import AzureKeyCredential
    from azure.search.documents.indexes.aio import SearchIndexClient
    from azure.search.documents.indexes.models import AnalyzeTextOptions

    client = SearchIndexClient(service_endpoint, AzureKeyCredential(key))

    analyze_request = AnalyzeTextOptions(text="One's <two/>",
                                         analyzer_name="standard.lucene")

    async with client:
        result = await client.analyze_text(index_name, analyze_request)
        print(result.as_dict())
Exemple #17
0
 async def test_search_index_client(self, api_key, endpoint, index_name):
     client = SearchIndexClient(endpoint, api_key)
     index_name = "hotels"
     async with client:
         await self._test_get_service_statistics(client)
         await self._test_list_indexes_empty(client)
         await self._test_create_index(client, index_name)
         await self._test_list_indexes(client, index_name)
         await self._test_get_index(client, index_name)
         await self._test_get_index_statistics(client, index_name)
         await self._test_delete_indexes_if_unchanged(client)
         await self._test_create_or_update_index(client)
         await self._test_create_or_update_indexes_if_unchanged(client)
         await self._test_analyze_text(client, index_name)
         await self._test_delete_indexes(client)
Exemple #18
0
    async def test_list_indexes_empty(self, api_key, endpoint, **kwargs):
        client = SearchIndexClient(endpoint, AzureKeyCredential(api_key))
        result = client.list_indexes()

        with pytest.raises(StopAsyncIteration):
            await result.__anext__()
Exemple #19
0
 def test_get_search_client(self):
     credential = AzureKeyCredential(key="old_api_key")
     client = SearchIndexClient("endpoint", credential)
     search_client = client.get_search_client('index')
     assert isinstance(search_client, SearchClient)
Exemple #20
0
service_endpoint = os.getenv("AZURE_SEARCH_SERVICE_ENDPOINT")
key = os.getenv("AZURE_SEARCH_API_KEY")

from azure.core.credentials import AzureKeyCredential
from azure.search.documents.indexes.aio import SearchIndexClient
from azure.search.documents.indexes.models import (
    ComplexField,
    CorsOptions,
    SearchIndex,
    ScoringProfile,
    SearchFieldDataType,
    SimpleField,
    SearchableField
)

client = SearchIndexClient(service_endpoint, AzureKeyCredential(key))

async def create_index():
    # [START create_index_async]
    name = "hotels"
    fields = [
        SimpleField(name="hotelId", type=SearchFieldDataType.String, key=True),
        SimpleField(name="baseRate", type=SearchFieldDataType.Double),
        SearchableField(name="description", type=SearchFieldDataType.String, collection=True),
        ComplexField(name="address", fields=[
            SimpleField(name="streetAddress", type=SearchFieldDataType.String),
            SimpleField(name="city", type=SearchFieldDataType.String),
        ], collection=True)
    ]

    cors_options = CorsOptions(allowed_origins=["*"], max_age_in_seconds=60)
Exemple #21
0
 async def test_analyze_text(self, api_key, endpoint, index_name, **kwargs):
     client = SearchIndexClient(endpoint, AzureKeyCredential(api_key))
     analyze_request = AnalyzeTextOptions(text="One's <two/>",
                                          analyzer_name="standard.lucene")
     result = await client.analyze_text(index_name, analyze_request)
     assert len(result.tokens) == 2
Exemple #22
0
 async def test_get_service_statistics(self, api_key, endpoint, **kwargs):
     client = SearchIndexClient(endpoint, AzureKeyCredential(api_key))
     result = await client.get_service_statistics()
     assert isinstance(result, dict)
     assert set(result.keys()) == {"counters", "limits"}
Exemple #23
0
 def test_index_init(self):
     client = SearchIndexClient("endpoint", CREDENTIAL)
     assert client._headers == {
         "api-key": "test_api_key",
         "Accept": "application/json;odata.metadata=minimal",
     }
Exemple #24
0
 async def test_get_index_statistics(self, api_key, endpoint, index_name,
                                     **kwargs):
     client = SearchIndexClient(endpoint, AzureKeyCredential(api_key))
     result = await client.get_index_statistics(index_name)
     assert set(result.keys()) == {'document_count', 'storage_size'}
Exemple #25
0
 async def test_get_index(self, api_key, endpoint, index_name, **kwargs):
     client = SearchIndexClient(endpoint, AzureKeyCredential(api_key))
     result = await client.get_index(index_name)
     assert result.name == index_name