Skip to content

Commit

Permalink
[Form recognizer] Update tests for better pipeline results (Azure#36279)
Browse files Browse the repository at this point in the history
  • Loading branch information
samvaity authored Aug 15, 2023
1 parent 7e2c981 commit 007bd06
Show file tree
Hide file tree
Showing 20 changed files with 534 additions and 703 deletions.
2 changes: 1 addition & 1 deletion sdk/formrecognizer/azure-ai-formrecognizer/assets.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
"AssetsRepo": "Azure/azure-sdk-assets",
"AssetsRepoPrefixPath": "java",
"TagPrefix": "java/formrecognizer/azure-ai-formrecognizer",
"Tag": "java/formrecognizer/azure-ai-formrecognizer_d50ed33064"
"Tag": "java/formrecognizer/azure-ai-formrecognizer_d20d343709"
}
Original file line number Diff line number Diff line change
Expand Up @@ -492,8 +492,10 @@ private static DocumentKeyValueElement toDocumentKeyValueElement(
private static Map<String, DocumentField> toDocumentFields(
Map<String, com.azure.ai.formrecognizer.documentanalysis.implementation.models.DocumentField> innerFields) {
Map<String, DocumentField> documentFieldMap = new HashMap<>();
innerFields.forEach((key, innerDocumentField) ->
documentFieldMap.put(key, toDocumentField(innerDocumentField)));
if (!CoreUtils.isNullOrEmpty(innerFields)) {
innerFields.forEach((key, innerDocumentField) ->
documentFieldMap.put(key, toDocumentField(innerDocumentField)));
}
return documentFieldMap;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,18 +99,6 @@ public void recognizeReceiptData(HttpClient httpClient, FormRecognizerServiceVer
}, RECEIPT_CONTOSO_JPG);
}

/**
* Verifies an exception thrown for a document using null data value.
*/
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
public void recognizeReceiptDataNullData(HttpClient httpClient,
FormRecognizerServiceVersion serviceVersion) {
client = getFormRecognizerAsyncClient(httpClient, serviceVersion);
assertThrows(NullPointerException.class,
() -> client.beginRecognizeReceipts(null, 0).getSyncPoller());
}

/**
* Verifies content type will be auto detected when using custom form API with input stream data overload.
*/
Expand Down Expand Up @@ -254,7 +242,6 @@ public void recognizeReceiptSourceUrl(HttpClient httpClient, FormRecognizerServi
*/
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
@Disabled("https://github.com/Azure/azure-sdk-for-java/issues/21687")
public void recognizeReceiptFromUrlWithEncodedBlankSpaceSourceUrl(HttpClient httpClient,
FormRecognizerServiceVersion serviceVersion) {
client = getFormRecognizerAsyncClient(httpClient, serviceVersion);
Expand Down Expand Up @@ -336,6 +323,7 @@ public void recognizeReceiptFromUrlMultiPage(HttpClient httpClient, FormRecogniz
= client.beginRecognizeReceiptsFromUrl(fileUrl).setPollInterval(durationTestMode).getSyncPoller();
syncPoller.waitForCompletion();
validateMultipageReceiptData(syncPoller.getFinalResult());
// validate from service team, receipt size returned 2 for 3 pages?
}, MULTIPAGE_INVOICE_PDF);
}

Expand Down Expand Up @@ -363,16 +351,6 @@ public void recognizeContent(HttpClient httpClient, FormRecognizerServiceVersion
}, CONTENT_FORM_JPG);
}

/**
* Verifies an exception thrown for a document using null data value.
*/
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
public void recognizeContentResultWithNullData(HttpClient httpClient, FormRecognizerServiceVersion serviceVersion) {
assertThrows(NullPointerException.class,
() -> client.beginRecognizeContent(null, 0).setPollInterval(durationTestMode).getSyncPoller());
}

/**
* Verifies content type will be auto detected when using content/layout API with input stream data overload.
*/
Expand Down Expand Up @@ -565,7 +543,6 @@ public void recognizeContentFromUrl(HttpClient httpClient, FormRecognizerService
*/
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
@Disabled("https://github.com/Azure/azure-sdk-for-java/issues/21687")
public void recognizeContentFromUrlWithEncodedBlankSpaceSourceUrl(HttpClient httpClient,
FormRecognizerServiceVersion serviceVersion) {
client = getFormRecognizerAsyncClient(httpClient, serviceVersion);
Expand Down Expand Up @@ -825,52 +802,6 @@ public void recognizeCustomFormLabeledDataWithNullFormData(HttpClient httpClient
}), INVOICE_6_PDF);
}

/**
* Verifies an exception thrown for a document using null model id.
*/
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
public void recognizeCustomFormLabeledDataWithNullModelId(HttpClient httpClient,
FormRecognizerServiceVersion serviceVersion) {
client = getFormRecognizerAsyncClient(httpClient, serviceVersion);
dataRunner((data, dataLength) -> {
Exception ex = assertThrows(RuntimeException.class,
() -> client.beginRecognizeCustomForms(
null,
toFluxByteBuffer(data),
dataLength,
new RecognizeCustomFormsOptions()
.setContentType(FormContentType.APPLICATION_PDF)
.setFieldElementsIncluded(true))
.setPollInterval(durationTestMode)
.getSyncPoller());
assertEquals(MODEL_ID_IS_REQUIRED_EXCEPTION_MESSAGE, ex.getMessage());
}, INVOICE_6_PDF);
}

/**
* Verifies an exception thrown for an empty model id when recognizing custom form from URL.
*/
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
public void recognizeCustomFormLabeledDataWithEmptyModelId(HttpClient httpClient,
FormRecognizerServiceVersion serviceVersion) {
client = getFormRecognizerAsyncClient(httpClient, serviceVersion);
dataRunner((data, dataLength) -> {
Exception ex = assertThrows(RuntimeException.class,
() -> client.beginRecognizeCustomForms(
"",
toFluxByteBuffer(data),
dataLength,
new RecognizeCustomFormsOptions()
.setContentType(FormContentType.APPLICATION_PDF)
.setFieldElementsIncluded(true))
.setPollInterval(durationTestMode)
.getSyncPoller());
assertEquals(INVALID_UUID_EXCEPTION_MESSAGE, ex.getMessage());
}, INVOICE_6_PDF);
}

@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
public void recognizeCustomFormInvalidStatus(HttpClient httpClient, FormRecognizerServiceVersion serviceVersion) {
Expand Down Expand Up @@ -1256,38 +1187,6 @@ public void recognizeCustomFormInvalidSourceUrl(HttpClient httpClient,
});
}

/**
* Verifies an exception thrown for a null model id when recognizing custom form from URL.
*/
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
public void recognizeCustomFormFromUrlLabeledDataWithNullModelId(HttpClient httpClient,
FormRecognizerServiceVersion serviceVersion) {
client = getFormRecognizerAsyncClient(httpClient, serviceVersion);
urlRunner(fileUrl -> {
Exception ex = assertThrows(RuntimeException.class,
() -> client.beginRecognizeCustomFormsFromUrl(null, fileUrl)
.setPollInterval(durationTestMode).getSyncPoller());
assertEquals(MODEL_ID_IS_REQUIRED_EXCEPTION_MESSAGE, ex.getMessage());
}, MULTIPAGE_INVOICE_PDF);
}

/**
* Verifies an exception thrown for an empty model id for recognizing custom forms from URL.
*/
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
public void recognizeCustomFormFromUrlLabeledDataWithEmptyModelId(HttpClient httpClient,
FormRecognizerServiceVersion serviceVersion) {
client = getFormRecognizerAsyncClient(httpClient, serviceVersion);
urlRunner(fileUrl -> {
IllegalArgumentException ex = assertThrows(IllegalArgumentException.class,
() -> client.beginRecognizeCustomFormsFromUrl("", fileUrl)
.setPollInterval(durationTestMode).getSyncPoller());
assertEquals(INVALID_UUID_EXCEPTION_MESSAGE, ex.getMessage());
}, MULTIPAGE_INVOICE_PDF);
}

/**
* Verifies custom form data for an URL document data with labeled data
*/
Expand Down Expand Up @@ -1373,7 +1272,6 @@ modelId, fileUrl, new RecognizeCustomFormsOptions().setPollInterval(durationTest
*/
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
@Disabled("https://github.com/Azure/azure-sdk-for-java/issues/21687")
public void recognizeCustomFormFromUrlWithEncodedBlankSpaceSourceUrl(HttpClient httpClient,
FormRecognizerServiceVersion serviceVersion) {
client = getFormRecognizerAsyncClient(httpClient, serviceVersion);
Expand Down Expand Up @@ -1513,18 +1411,6 @@ public void recognizeBusinessCardData(HttpClient httpClient, FormRecognizerServi
}, BUSINESS_CARD_JPG);
}

/**
* Verifies an exception thrown for a document using null data value.
*/
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
public void recognizeBusinessCardDataNullData(HttpClient httpClient,
FormRecognizerServiceVersion serviceVersion) {
client = getFormRecognizerAsyncClient(httpClient, serviceVersion);
assertThrows(NullPointerException.class,
() -> client.beginRecognizeBusinessCards(null, 0).getSyncPoller());
}

/**
* Verifies content type will be auto detected when using custom form API with input stream data overload.
*/
Expand Down Expand Up @@ -1682,7 +1568,6 @@ public void recognizeBusinessCardSourceUrl(HttpClient httpClient, FormRecognizer
*/
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
@Disabled("https://github.com/Azure/azure-sdk-for-java/issues/21687")
public void recognizeBusinessCardFromUrlWithEncodedBlankSpaceSourceUrl(HttpClient httpClient,
FormRecognizerServiceVersion serviceVersion) {
client = getFormRecognizerAsyncClient(httpClient, serviceVersion);
Expand Down Expand Up @@ -2004,7 +1889,6 @@ public void recognizeInvoiceSourceUrl(HttpClient httpClient, FormRecognizerServi
*/
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
@Disabled("https://github.com/Azure/azure-sdk-for-java/issues/21687")
public void recognizeInvoiceFromUrlWithEncodedBlankSpaceSourceUrl(HttpClient httpClient,
FormRecognizerServiceVersion serviceVersion) {
client = getFormRecognizerAsyncClient(httpClient, serviceVersion);
Expand Down Expand Up @@ -2110,18 +1994,6 @@ public void recognizeLicenseCardData(HttpClient httpClient, FormRecognizerServic
}, LICENSE_CARD_JPG);
}

/**
* Verifies an exception thrown for a document using null data value.
*/
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
public void recognizeIDDocumentDataNullData(HttpClient httpClient,
FormRecognizerServiceVersion serviceVersion) {
client = getFormRecognizerAsyncClient(httpClient, serviceVersion);
assertThrows(NullPointerException.class,
() -> client.beginRecognizeIdentityDocuments(null, 0).getSyncPoller());
}

/**
* Verifies content type will be auto detected when using custom form API with input stream data overload.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
import java.util.function.Consumer;
import java.util.function.Function;

import static com.azure.ai.formrecognizer.FormRecognizerClientTestBase.INVALID_ENDPOINT;
import static com.azure.ai.formrecognizer.FormTrainingClientTestBase.AZURE_FORM_RECOGNIZER_API_KEY;
import static com.azure.ai.formrecognizer.FormTrainingClientTestBase.AZURE_FORM_RECOGNIZER_ENDPOINT;
import static com.azure.ai.formrecognizer.TestUtils.CONTENT_FORM_JPG;
Expand Down Expand Up @@ -98,28 +97,13 @@ public void clientBuilderWithDefaultPipeline(HttpClient httpClient, FormRecogniz
.beginRecognizeContentFromUrl(input), interceptorManager).getFinalResult()));
}

/**
* Test for invalid endpoint, which throws connection refused exception message.
*/
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
public void clientBuilderWithInvalidEndpoint(HttpClient httpClient, FormRecognizerServiceVersion serviceVersion) {
clientBuilderWithDefaultPipelineRunner(httpClient, serviceVersion, clientBuilder -> (input) -> {
assertThrows(RuntimeException.class,
() -> clientBuilder.endpoint(INVALID_ENDPOINT)
.retryPolicy(new RetryPolicy(new FixedDelay(3, Duration.ofMillis(1))))
.buildClient()
.beginRecognizeContentFromUrl(input).getFinalResult());
});
}

/**
* Test for an valid http endpoint, which throws HTTPS requirement exception message.
*/
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
public void clientBuilderWithHttpEndpoint(HttpClient httpClient, FormRecognizerServiceVersion serviceVersion) {
clientBuilderWithDefaultPipelineRunner(httpClient, serviceVersion, clientBuilder -> (input) -> {
clientBuilderWithNoRecordPipelineRunner(httpClient, serviceVersion, clientBuilder -> (input) -> {
assertThrows(RuntimeException.class, () -> clientBuilder.endpoint(VALID_HTTP_LOCALHOST)
.retryPolicy(new RetryPolicy(new FixedDelay(3, Duration.ofMillis(1))))
.buildClient()
Expand Down Expand Up @@ -235,6 +219,17 @@ void clientBuilderWithDefaultPipelineRunner(HttpClient httpClient, FormRecognize
testRunner.apply(clientBuilder).accept(URL_TEST_FILE_FORMAT + CONTENT_FORM_JPG);
}

void clientBuilderWithNoRecordPipelineRunner(HttpClient httpClient, FormRecognizerServiceVersion serviceVersion,
Function<FormRecognizerClientBuilder, Consumer<String>> testRunner) {
final FormRecognizerClientBuilder clientBuilder = new FormRecognizerClientBuilder()
.credential(new AzureKeyCredential(getApiKey()))
.endpoint(getEndpoint())
.httpClient(httpClient)
.serviceVersion(serviceVersion);

testRunner.apply(clientBuilder).accept(URL_TEST_FILE_FORMAT + CONTENT_FORM_JPG);
}

/**
* Create a client builder with endpoint and API key credential.
*
Expand Down
Loading

0 comments on commit 007bd06

Please sign in to comment.