Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[formrecognizer] close client session in async tests #12656

Merged
merged 2 commits into from
Jul 23, 2020
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
151 changes: 85 additions & 66 deletions sdk/formrecognizer/azure-ai-formrecognizer/tests/test_content_async.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,85 +29,94 @@ async def test_content_bad_endpoint(self, resource_group, location, form_recogni
myfile = fd.read()
with self.assertRaises(ServiceRequestError):
client = FormRecognizerClient("http://notreal.azure.com", AzureKeyCredential(form_recognizer_account_key))
poller = await client.begin_recognize_content(myfile)
result = await poller.result()
async with client:
poller = await client.begin_recognize_content(myfile)
result = await poller.result()

@GlobalFormRecognizerAccountPreparer()
@GlobalClientPreparer()
async def test_content_authentication_successful_key(self, client):
with open(self.invoice_pdf, "rb") as fd:
myfile = fd.read()
poller = await client.begin_recognize_content(myfile)
result = await poller.result()
async with client:
poller = await client.begin_recognize_content(myfile)
result = await poller.result()

@GlobalFormRecognizerAccountPreparer()
async def test_content_authentication_bad_key(self, resource_group, location, form_recognizer_account, form_recognizer_account_key):
client = FormRecognizerClient(form_recognizer_account, AzureKeyCredential("xxxx"))
with self.assertRaises(ClientAuthenticationError):
poller = await client.begin_recognize_content(b"xxx", content_type="application/pdf")
result = await poller.result()
async with client:
poller = await client.begin_recognize_content(b"xxx", content_type="application/pdf")
result = await poller.result()

@GlobalFormRecognizerAccountPreparer()
@GlobalClientPreparer()
async def test_passing_enum_content_type(self, client):
with open(self.invoice_pdf, "rb") as fd:
myfile = fd.read()
poller = await client.begin_recognize_content(
myfile,
content_type=FormContentType.APPLICATION_PDF
)
result = await poller.result()
async with client:
poller = await client.begin_recognize_content(
myfile,
content_type=FormContentType.APPLICATION_PDF
)
result = await poller.result()
self.assertIsNotNone(result)

@GlobalFormRecognizerAccountPreparer()
@GlobalClientPreparer()
async def test_damaged_file_passed_as_bytes(self, client):
damaged_pdf = b"\x25\x50\x44\x46\x55\x55\x55" # still has correct bytes to be recognized as PDF
with self.assertRaises(HttpResponseError):
poller = await client.begin_recognize_content(
damaged_pdf,
)
result = await poller.result()
async with client:
poller = await client.begin_recognize_content(
damaged_pdf,
)
result = await poller.result()

@GlobalFormRecognizerAccountPreparer()
@GlobalClientPreparer()
async def test_damaged_file_bytes_fails_autodetect_content_type(self, client):
damaged_pdf = b"\x50\x44\x46\x55\x55\x55" # doesn't match any magic file numbers
with self.assertRaises(ValueError):
poller = await client.begin_recognize_content(
damaged_pdf,
)
result = await poller.result()
async with client:
poller = await client.begin_recognize_content(
damaged_pdf,
)
result = await poller.result()

@GlobalFormRecognizerAccountPreparer()
@GlobalClientPreparer()
async def test_damaged_file_passed_as_bytes_io(self, client):
damaged_pdf = BytesIO(b"\x25\x50\x44\x46\x55\x55\x55") # still has correct bytes to be recognized as PDF
with self.assertRaises(HttpResponseError):
poller = await client.begin_recognize_content(
damaged_pdf,
)
result = await poller.result()
async with client:
poller = await client.begin_recognize_content(
damaged_pdf,
)
result = await poller.result()

@GlobalFormRecognizerAccountPreparer()
@GlobalClientPreparer()
async def test_damaged_file_bytes_io_fails_autodetect(self, client):
damaged_pdf = BytesIO(b"\x50\x44\x46\x55\x55\x55") # doesn't match any magic file numbers
with self.assertRaises(ValueError):
poller = await client.begin_recognize_content(
damaged_pdf,
)
result = await poller.result()
async with client:
poller = await client.begin_recognize_content(
damaged_pdf,
)
result = await poller.result()

@GlobalFormRecognizerAccountPreparer()
@GlobalClientPreparer()
async def test_blank_page(self, client):
with open(self.blank_pdf, "rb") as fd:
blank = fd.read()
poller = await client.begin_recognize_content(
blank,
)
result = await poller.result()
async with client:
poller = await client.begin_recognize_content(
blank,
)
result = await poller.result()
self.assertIsNotNone(result)

@GlobalFormRecognizerAccountPreparer()
Expand All @@ -116,18 +125,20 @@ async def test_passing_bad_content_type_param_passed(self, client):
with open(self.invoice_pdf, "rb") as fd:
myfile = fd.read()
with self.assertRaises(ValueError):
poller = await client.begin_recognize_content(
myfile,
content_type="application/jpeg"
)
result = await poller.result()
async with client:
poller = await client.begin_recognize_content(
myfile,
content_type="application/jpeg"
)
result = await poller.result()

@GlobalFormRecognizerAccountPreparer()
@GlobalClientPreparer()
async def test_content_stream_passing_url(self, client):
with self.assertRaises(TypeError):
poller = await client.begin_recognize_content("https://badurl.jpg", content_type="application/json")
result = await poller.result()
async with client:
poller = await client.begin_recognize_content("https://badurl.jpg", content_type="application/json")
result = await poller.result()

@GlobalFormRecognizerAccountPreparer()
@GlobalClientPreparer()
Expand All @@ -136,10 +147,11 @@ async def test_auto_detect_unsupported_stream_content(self, client):
myfile = fd.read()

with self.assertRaises(ValueError):
poller = await client.begin_recognize_content(
myfile
)
result = await poller.result()
async with client:
poller = await client.begin_recognize_content(
myfile
)
result = await poller.result()

@GlobalFormRecognizerAccountPreparer()
@GlobalClientPreparer()
Expand All @@ -155,8 +167,9 @@ def callback(raw_response, _, headers):
responses.append(analyze_result)
responses.append(extracted_layout)

poller = await client.begin_recognize_content(myform, cls=callback)
result = await poller.result()
async with client:
poller = await client.begin_recognize_content(myform, cls=callback)
result = await poller.result()
raw_response = responses[0]
layout = responses[1]
page_results = raw_response.analyze_result.page_results
Expand All @@ -171,8 +184,9 @@ async def test_content_stream_pdf(self, client):
with open(self.invoice_pdf, "rb") as fd:
myform = fd.read()

poller = await client.begin_recognize_content(myform)
result = await poller.result()
async with client:
poller = await client.begin_recognize_content(myform)
result = await poller.result()
self.assertEqual(len(result), 1)
layout = result[0]
self.assertEqual(layout.page_number, 1)
Expand All @@ -195,8 +209,9 @@ def callback(raw_response, _, headers):
responses.append(analyze_result)
responses.append(extracted_layout)

poller = await client.begin_recognize_content(myform, cls=callback)
result = await poller.result()
async with client:
poller = await client.begin_recognize_content(myform, cls=callback)
result = await poller.result()
raw_response = responses[0]
layout = responses[1]
page_results = raw_response.analyze_result.page_results
Expand All @@ -211,8 +226,9 @@ async def test_content_stream_jpg(self, client):
with open(self.form_jpg, "rb") as fd:
myform = fd.read()

poller = await client.begin_recognize_content(myform)
result = await poller.result()
async with client:
poller = await client.begin_recognize_content(myform)
result = await poller.result()
self.assertEqual(len(result), 1)
layout = result[0]
self.assertEqual(layout.page_number, 1)
Expand All @@ -229,8 +245,9 @@ async def test_content_stream_jpg(self, client):
async def test_content_multipage(self, client):
with open(self.multipage_invoice_pdf, "rb") as fd:
invoice = fd.read()
poller = await client.begin_recognize_content(invoice)
result = await poller.result()
async with client:
poller = await client.begin_recognize_content(invoice)
result = await poller.result()

self.assertEqual(len(result), 3)
self.assertFormPagesHasValues(result)
Expand All @@ -249,8 +266,9 @@ def callback(raw_response, _, headers):
responses.append(analyze_result)
responses.append(extracted_layout)

poller = await client.begin_recognize_content(myform, cls=callback)
result = await poller.result()
async with client:
poller = await client.begin_recognize_content(myform, cls=callback)
result = await poller.result()
raw_response = responses[0]
layout = responses[1]
page_results = raw_response.analyze_result.page_results
Expand All @@ -265,22 +283,23 @@ def callback(raw_response, _, headers):
async def test_content_continuation_token(self, client):
with open(self.form_jpg, "rb") as fd:
myfile = fd.read()
initial_poller = await client.begin_recognize_content(myfile)
cont_token = initial_poller.continuation_token()

poller = await client.begin_recognize_content(myfile, continuation_token=cont_token)
result = await poller.result()
self.assertIsNotNone(result)
await initial_poller.wait() # necessary so azure-devtools doesn't throw assertion error
async with client:
initial_poller = await client.begin_recognize_content(myfile)
cont_token = initial_poller.continuation_token()
poller = await client.begin_recognize_content(myfile, continuation_token=cont_token)
result = await poller.result()
self.assertIsNotNone(result)
await initial_poller.wait() # necessary so azure-devtools doesn't throw assertion error


@GlobalFormRecognizerAccountPreparer()
@GlobalClientPreparer()
async def test_content_multipage_table_span_pdf(self, client):
with open(self.multipage_table_pdf, "rb") as fd:
myfile = fd.read()
poller = await client.begin_recognize_content(myfile)
result = await poller.result()
async with client:
poller = await client.begin_recognize_content(myfile)
result = await poller.result()
self.assertEqual(len(result), 2)
layout = result[0]
self.assertEqual(layout.page_number, 1)
Expand Down Expand Up @@ -312,9 +331,9 @@ def callback(raw_response, _, headers):
extracted_layout = prepare_content_result(analyze_result)
responses.append(analyze_result)
responses.append(extracted_layout)

poller = await client.begin_recognize_content(myform, cls=callback)
result = await poller.result()
async with client:
poller = await client.begin_recognize_content(myform, cls=callback)
result = await poller.result()
raw_response = responses[0]
layout = responses[1]
page_results = raw_response.analyze_result.page_results
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ class TestContentFromUrl(FormRecognizerTest):
@GlobalFormRecognizerAccountPreparer()
@GlobalClientPreparer()
def test_content_encoded_url(self, client):
try:
with pytest.raises(HttpResponseError) as e:
poller = client.begin_recognize_content_from_url("https://fakeuri.com/blank%20space")
except HttpResponseError as e:
self.assertIn("https://fakeuri.com/blank%20space", e.response.request.body)
client.close()
self.assertIn("https://fakeuri.com/blank%20space", e.value.response.request.body)

@GlobalFormRecognizerAccountPreparer()
def test_content_url_bad_endpoint(self, resource_group, location, form_recognizer_account, form_recognizer_account_key):
Expand Down
Loading