Skip to content
Merged
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
2 changes: 1 addition & 1 deletion sdk/formrecognizer/azure-ai-formrecognizer/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@
},
python_requires=">=3.8",
install_requires=[
"azure-core>=1.23.0",
"azure-core>=1.30.0",
"msrest>=0.6.21",
'azure-common>=1.1',
"typing-extensions>=4.0.1",
Expand Down
71 changes: 48 additions & 23 deletions sdk/formrecognizer/azure-ai-formrecognizer/tests/preparers.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

import os
import functools
from devtools_testutils import PowerShellPreparer, AzureMgmtPreparer
from devtools_testutils import PowerShellPreparer, AzureMgmtPreparer, is_live, get_credential
from azure.core.credentials import AzureKeyCredential

ENABLE_LOGGER = os.getenv('ENABLE_LOGGER', "False")
Expand All @@ -19,7 +19,6 @@
PowerShellPreparer,
'formrecognizer',
formrecognizer_test_endpoint="https://fakeendpoint.cognitiveservices.azure.com",
formrecognizer_test_api_key="fakeZmFrZV9hY29jdW50X2tleQ==",
formrecognizer_storage_container_sas_url="https://blob_sas_url",
formrecognizer_testing_data_container_sas_url="https://blob_sas_url",
formrecognizer_multipage_storage_container_sas_url="https://blob_sas_url",
Expand All @@ -38,32 +37,58 @@
formrecognizer_region="region"
)


class GlobalClientPreparer(AzureMgmtPreparer):
def __init__(self, client_cls, client_kwargs={}, **kwargs):
super(GlobalClientPreparer, self).__init__(
name_prefix='',
random_name_length=42
def get_sync_client(client_cls, **kwargs):
ENABLE_LOGGER = os.getenv('ENABLE_LOGGER', "False")
polling_interval = kwargs.pop("polling_interval", None)
if is_live():
form_recognizer_account = os.environ["FORMRECOGNIZER_TEST_ENDPOINT"]
if not polling_interval:
polling_interval = 1
else:
form_recognizer_account = "https://fakeendpoint.cognitiveservices.azure.com"
if not polling_interval:
polling_interval = 0
if "api_key" in kwargs:
api_key = kwargs.pop("api_key")
return client_cls(
form_recognizer_account,
AzureKeyCredential(api_key),
polling_interval=polling_interval,
logging_enable=True if ENABLE_LOGGER == "True" else False,
**kwargs
)
self.client_kwargs = client_kwargs
self.client_cls = client_cls
return client_cls(
form_recognizer_account,
get_credential(),
polling_interval=polling_interval,
logging_enable=True if ENABLE_LOGGER == "True" else False,
**kwargs
)

def create_resource(self, name, **kwargs):
if self.is_live:
form_recognizer_account = os.environ["FORMRECOGNIZER_TEST_ENDPOINT"]
form_recognizer_account_key = os.environ["FORMRECOGNIZER_TEST_API_KEY"]
def get_async_client(client_cls, **kwargs):
ENABLE_LOGGER = os.getenv('ENABLE_LOGGER', "False")
polling_interval = kwargs.pop("polling_interval", None)
if is_live():
form_recognizer_account = os.environ["FORMRECOGNIZER_TEST_ENDPOINT"]
if not polling_interval:
polling_interval = 1
else:
form_recognizer_account = "https://fakeendpoint.cognitiveservices.azure.com"
form_recognizer_account_key = "fakeZmFrZV9hY29jdW50X2tleQ=="
else:
form_recognizer_account = "https://fakeendpoint.cognitiveservices.azure.com"
if not polling_interval:
polling_interval = 0

client = self.client_cls(
if "api_key" in kwargs:
api_key = kwargs.pop("api_key")
return client_cls(
form_recognizer_account,
AzureKeyCredential(form_recognizer_account_key),
AzureKeyCredential(api_key),
polling_interval=polling_interval,
logging_enable=True if ENABLE_LOGGER == "True" else False,
**self.client_kwargs
**kwargs
)
kwargs.update({"client": client})
return kwargs
return client_cls(
form_recognizer_account,
get_credential(is_async=True),
polling_interval=polling_interval,
logging_enable=True if ENABLE_LOGGER == "True" else False,
**kwargs
)
Original file line number Diff line number Diff line change
Expand Up @@ -7,41 +7,36 @@
import pytest
import functools
from devtools_testutils import recorded_by_proxy, set_bodiless_matcher
from azure.core.credentials import AzureKeyCredential
from azure.ai.formrecognizer import DocumentAnalysisClient, DocumentModelAdministrationClient, AnalyzeResult
from azure.ai.formrecognizer._generated.v2023_07_31.models import AnalyzeResultOperation
from testcase import FormRecognizerTest
from preparers import GlobalClientPreparer as _GlobalClientPreparer
from preparers import FormRecognizerPreparer
from preparers import FormRecognizerPreparer, get_sync_client
from conftest import skip_flaky_test

DocumentModelAdministrationClientPreparer = functools.partial(_GlobalClientPreparer, DocumentModelAdministrationClient)
get_dma_client = functools.partial(get_sync_client, DocumentModelAdministrationClient)
get_da_client = functools.partial(get_sync_client, DocumentAnalysisClient)

class TestDACAnalyzeCustomModel(FormRecognizerTest):

@FormRecognizerPreparer()
def test_analyze_document_none_model_id(self, **kwargs):
formrecognizer_test_endpoint = kwargs.pop("formrecognizer_test_endpoint")
formrecognizer_test_api_key = kwargs.pop("formrecognizer_test_api_key")
client = DocumentAnalysisClient(formrecognizer_test_endpoint, AzureKeyCredential(formrecognizer_test_api_key))
client = get_da_client()
with pytest.raises(ValueError) as e:
client.begin_analyze_document(model_id=None, document=b"xx")
assert "model_id cannot be None or empty." in str(e.value)

@FormRecognizerPreparer()
def test_analyze_document_empty_model_id(self, **kwargs):
formrecognizer_test_endpoint = kwargs.pop("formrecognizer_test_endpoint")
formrecognizer_test_api_key = kwargs.pop("formrecognizer_test_api_key")
client = DocumentAnalysisClient(formrecognizer_test_endpoint, AzureKeyCredential(formrecognizer_test_api_key))
client = get_da_client()
with pytest.raises(ValueError) as e:
client.begin_analyze_document(model_id="", document=b"xx")
assert "model_id cannot be None or empty." in str(e.value)

@skip_flaky_test
@FormRecognizerPreparer()
@DocumentModelAdministrationClientPreparer()
@recorded_by_proxy
def test_custom_document_transform(self, client, formrecognizer_storage_container_sas_url, **kwargs):
def test_custom_document_transform(self, formrecognizer_storage_container_sas_url, **kwargs):
client = get_dma_client()
set_bodiless_matcher()
da_client = client.get_document_analysis_client()

Expand Down Expand Up @@ -85,9 +80,9 @@ def callback(raw_response, _, headers):

@skip_flaky_test
@FormRecognizerPreparer()
@DocumentModelAdministrationClientPreparer()
@recorded_by_proxy
def test_custom_document_multipage_transform(self, client, formrecognizer_multipage_storage_container_sas_url, **kwargs):
def test_custom_document_multipage_transform(self, formrecognizer_multipage_storage_container_sas_url, **kwargs):
client = get_dma_client()
set_bodiless_matcher()
da_client = client.get_document_analysis_client()

Expand Down Expand Up @@ -131,9 +126,9 @@ def callback(raw_response, _, headers):

@skip_flaky_test
@FormRecognizerPreparer()
@DocumentModelAdministrationClientPreparer()
@recorded_by_proxy
def test_custom_document_selection_mark(self, client, formrecognizer_selection_mark_storage_container_sas_url, **kwargs):
def test_custom_document_selection_mark(self, formrecognizer_selection_mark_storage_container_sas_url, **kwargs):
client = get_dma_client()
set_bodiless_matcher()
da_client = client.get_document_analysis_client()

Expand Down Expand Up @@ -177,9 +172,9 @@ def callback(raw_response, _, headers):

@skip_flaky_test
@FormRecognizerPreparer()
@DocumentModelAdministrationClientPreparer()
@recorded_by_proxy
def test_pages_kwarg_specified(self, client, formrecognizer_storage_container_sas_url, **kwargs):
def test_pages_kwarg_specified(self, formrecognizer_storage_container_sas_url, **kwargs):
client = get_dma_client()
set_bodiless_matcher()
da_client = client.get_document_analysis_client()

Expand All @@ -196,9 +191,9 @@ def test_pages_kwarg_specified(self, client, formrecognizer_storage_container_sa

@skip_flaky_test
@FormRecognizerPreparer()
@DocumentModelAdministrationClientPreparer()
@recorded_by_proxy
def test_custom_document_signature_field(self, client, formrecognizer_storage_container_sas_url, **kwargs):
def test_custom_document_signature_field(self, formrecognizer_storage_container_sas_url, **kwargs):
client = get_dma_client()
set_bodiless_matcher()
da_client = client.get_document_analysis_client()

Expand All @@ -221,9 +216,9 @@ def test_custom_document_signature_field(self, client, formrecognizer_storage_co

@skip_flaky_test
@FormRecognizerPreparer()
@DocumentModelAdministrationClientPreparer()
@recorded_by_proxy
def test_custom_document_blank_pdf(self, client, formrecognizer_storage_container_sas_url, **kwargs):
def test_custom_document_blank_pdf(self, formrecognizer_storage_container_sas_url, **kwargs):
client = get_dma_client()
set_bodiless_matcher()
da_client = client.get_document_analysis_client()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,45 +8,39 @@
import functools
from devtools_testutils.aio import recorded_by_proxy_async
from devtools_testutils import set_bodiless_matcher
from azure.core.credentials import AzureKeyCredential
from azure.ai.formrecognizer._generated.v2023_07_31.models import AnalyzeResultOperation
from azure.ai.formrecognizer.aio import DocumentAnalysisClient, DocumentModelAdministrationClient
from azure.ai.formrecognizer import AnalyzeResult
from preparers import FormRecognizerPreparer
from preparers import FormRecognizerPreparer, get_async_client
from asynctestcase import AsyncFormRecognizerTest
from preparers import GlobalClientPreparer as _GlobalClientPreparer
from conftest import skip_flaky_test


DocumentModelAdministrationClientPreparer = functools.partial(_GlobalClientPreparer, DocumentModelAdministrationClient)
get_dma_client = functools.partial(get_async_client, DocumentModelAdministrationClient)
get_da_client = functools.partial(get_async_client, DocumentAnalysisClient)

class TestDACAnalyzeCustomModelAsync(AsyncFormRecognizerTest):

@FormRecognizerPreparer()
async def test_analyze_document_none_model_id(self, **kwargs):
formrecognizer_test_endpoint = kwargs.pop("formrecognizer_test_endpoint")
formrecognizer_test_api_key = kwargs.pop("formrecognizer_test_api_key")
client = DocumentAnalysisClient(formrecognizer_test_endpoint, AzureKeyCredential(formrecognizer_test_api_key))
client = get_da_client()
with pytest.raises(ValueError) as e:
async with client:
await client.begin_analyze_document(model_id=None, document=b"xx")
assert "model_id cannot be None or empty." in str(e.value)

@FormRecognizerPreparer()
async def test_analyze_document_empty_model_id(self, **kwargs):
formrecognizer_test_endpoint = kwargs.pop("formrecognizer_test_endpoint")
formrecognizer_test_api_key = kwargs.pop("formrecognizer_test_api_key")
client = DocumentAnalysisClient(formrecognizer_test_endpoint, AzureKeyCredential(formrecognizer_test_api_key))
client = get_da_client()
with pytest.raises(ValueError) as e:
async with client:
await client.begin_analyze_document(model_id="", document=b"xx")
assert "model_id cannot be None or empty." in str(e.value)

@skip_flaky_test
@FormRecognizerPreparer()
@DocumentModelAdministrationClientPreparer()
@recorded_by_proxy_async
async def test_custom_document_transform(self, client, formrecognizer_storage_container_sas_url, **kwargs):
async def test_custom_document_transform(self, formrecognizer_storage_container_sas_url, **kwargs):
client = get_dma_client()
set_bodiless_matcher()
da_client = client.get_document_analysis_client()

Expand Down Expand Up @@ -92,9 +86,9 @@ def callback(raw_response, _, headers):

@skip_flaky_test
@FormRecognizerPreparer()
@DocumentModelAdministrationClientPreparer()
@recorded_by_proxy_async
async def test_custom_document_multipage_transform(self, client, formrecognizer_multipage_storage_container_sas_url, **kwargs):
async def test_custom_document_multipage_transform(self, formrecognizer_multipage_storage_container_sas_url, **kwargs):
client = get_dma_client()
set_bodiless_matcher()
da_client = client.get_document_analysis_client()

Expand Down Expand Up @@ -140,9 +134,9 @@ def callback(raw_response, _, headers):

@skip_flaky_test
@FormRecognizerPreparer()
@DocumentModelAdministrationClientPreparer()
@recorded_by_proxy_async
async def test_custom_document_selection_mark(self, client, formrecognizer_selection_mark_storage_container_sas_url, **kwargs):
async def test_custom_document_selection_mark(self, formrecognizer_selection_mark_storage_container_sas_url, **kwargs):
client = get_dma_client()
set_bodiless_matcher()
da_client = client.get_document_analysis_client()
with open(self.selection_form_pdf, "rb") as fd:
Expand Down Expand Up @@ -186,9 +180,9 @@ def callback(raw_response, _, headers):

@skip_flaky_test
@FormRecognizerPreparer()
@DocumentModelAdministrationClientPreparer()
@recorded_by_proxy_async
async def test_pages_kwarg_specified(self, client, formrecognizer_storage_container_sas_url, **kwargs):
async def test_pages_kwarg_specified(self, formrecognizer_storage_container_sas_url, **kwargs):
client = get_dma_client()
set_bodiless_matcher()
da_client = client.get_document_analysis_client()

Expand All @@ -207,9 +201,9 @@ async def test_pages_kwarg_specified(self, client, formrecognizer_storage_contai

@skip_flaky_test
@FormRecognizerPreparer()
@DocumentModelAdministrationClientPreparer()
@recorded_by_proxy_async
async def test_custom_document_signature_field(self, client, formrecognizer_storage_container_sas_url, **kwargs):
async def test_custom_document_signature_field(self, formrecognizer_storage_container_sas_url, **kwargs):
client = get_dma_client()
set_bodiless_matcher()
da_client = client.get_document_analysis_client()

Expand All @@ -234,9 +228,9 @@ async def test_custom_document_signature_field(self, client, formrecognizer_stor

@skip_flaky_test
@FormRecognizerPreparer()
@DocumentModelAdministrationClientPreparer()
@recorded_by_proxy_async
async def test_custom_document_blank_pdf(self, client, formrecognizer_storage_container_sas_url, **kwargs):
async def test_custom_document_blank_pdf(self, formrecognizer_storage_container_sas_url, **kwargs):
client = get_dma_client()
set_bodiless_matcher()
da_client = client.get_document_analysis_client()

Expand Down
Loading