Skip to content

Commit d87ba7f

Browse files
authored
Use static storage account for Form Recognizer live tests (Azure#10649)
1 parent a7a986e commit d87ba7f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+587
-12351
lines changed

sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
# Release History
22

3-
## 1.0.0-beta.2 (Unreleased)
3+
## 1.0.0-beta.2 (2020-05-06)
4+
- Fixed Receipt type bug to select the valueString field via fieldValue.
45

6+
This package's
7+
[documentation](https://github.com/Azure/azure-sdk-for-java/blob/azure-ai-formrecognizer_1.0.0-beta.2/sdk/formrecognizer/azure-ai-formrecognizer/README.md)
8+
and
9+
[samples](https://github.com/Azure/azure-sdk-for-java/blob/azure-ai-formrecognizer_1.0.0-beta.2/sdk/formrecognizer/azure-ai-formrecognizer/src/samples)
10+
demonstrate the new API.
511

612
## 1.0.0-beta.1 (2020-04-23)
713
Version 1.0.0-beta.1 is a preview of our efforts in creating a Azure Form Recognizer client library that is developer-friendly

sdk/formrecognizer/azure-ai-formrecognizer/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ from form documents. It includes the following main functionalities:
1616
- [Cognitive Services or Form Recognizer account][form_recognizer_account] to use this package.
1717

1818
### Include the Package
19+
**Note:** This beta version targets Azure Form Recognizer service API version v2.0-preview.
1920

2021
[//]: # ({x-version-update-start;com.azure:azure-ai-formrecognizer;current})
2122
```xml

sdk/formrecognizer/azure-ai-formrecognizer/pom.xml

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -63,17 +63,5 @@
6363
<version>5.4.2</version> <!-- {x-version-update;org.junit.jupiter:junit-jupiter-engine;external_dependency} -->
6464
<scope>test</scope>
6565
</dependency>
66-
<dependency>
67-
<groupId>com.azure</groupId>
68-
<artifactId>azure-storage-common</artifactId>
69-
<version>12.6.0</version> <!-- {x-version-update;com.azure:azure-storage-common;dependency} -->
70-
<scope>test</scope>
71-
</dependency>
72-
<dependency>
73-
<groupId>com.azure</groupId>
74-
<artifactId>azure-storage-blob</artifactId>
75-
<version>12.6.0</version> <!-- {x-version-update;com.azure:azure-storage-blob;dependency} -->
76-
<scope>test</scope>
77-
</dependency>
7866
</dependencies>
7967
</project>

sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/Transforms.java

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -228,15 +228,22 @@ private static Map<String, FormField<?>> getUnlabeledFieldMap(DocumentResult doc
228228
Map<String, FormField<?>> extractedFieldMap = new TreeMap<>();
229229
// add receipt fields
230230
documentResultItem.getFields().forEach((key, fieldValue) -> {
231-
FieldText labelText = new FieldText(key, null, fieldValue.getPage(), null);
232-
Integer pageNumber = fieldValue.getPage();
233-
IterableStream<FormContent> formContentList = null;
234-
if (includeTextDetails) {
235-
formContentList = setReferenceElements(fieldValue.getElements(), readResults, pageNumber);
231+
if (fieldValue != null) {
232+
Integer pageNumber = fieldValue.getPage();
233+
FieldText labelText = new FieldText(key, null, pageNumber, null);
234+
IterableStream<FormContent> formContentList = null;
235+
if (includeTextDetails) {
236+
formContentList = setReferenceElements(fieldValue.getElements(), readResults, pageNumber);
237+
}
238+
FieldText valueText = new FieldText(fieldValue.getText(), toBoundingBox(fieldValue.getBoundingBox()),
239+
pageNumber, formContentList);
240+
extractedFieldMap.put(key, setFormField(labelText, key, fieldValue, valueText, pageNumber,
241+
readResults));
242+
} else {
243+
FieldText labelText = new FieldText(key, null, null, null);
244+
extractedFieldMap.put(key, new FormField<>(DEFAULT_CONFIDENCE_VALUE, labelText,
245+
key, null, null, null));
236246
}
237-
FieldText valueText = new FieldText(fieldValue.getText(), toBoundingBox(fieldValue.getBoundingBox()),
238-
pageNumber, formContentList);
239-
extractedFieldMap.put(key, setFormField(labelText, key, fieldValue, valueText, pageNumber, readResults));
240247
});
241248
return extractedFieldMap;
242249
}

sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClientTest.java

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
package com.azure.ai.formrecognizer;
55

6-
import com.azure.ai.formrecognizer.implementation.models.AnalyzeResult;
76
import com.azure.ai.formrecognizer.models.CustomFormModel;
87
import com.azure.ai.formrecognizer.models.ErrorResponseException;
98
import com.azure.ai.formrecognizer.models.FormContentType;
@@ -20,17 +19,14 @@
2019

2120
import java.time.Duration;
2221

23-
import static com.azure.ai.formrecognizer.TestUtils.CUSTOM_FORM_DATA;
2422
import static com.azure.ai.formrecognizer.TestUtils.CUSTOM_FORM_FILE_LENGTH;
25-
import static com.azure.ai.formrecognizer.TestUtils.CUSTOM_FORM_LABELED_DATA;
23+
import static com.azure.ai.formrecognizer.TestUtils.FORM_LOCAL_URL;
2624
import static com.azure.ai.formrecognizer.TestUtils.INVALID_SOURCE_URL_ERROR;
2725
import static com.azure.ai.formrecognizer.TestUtils.INVALID_URL;
2826
import static com.azure.ai.formrecognizer.TestUtils.LAYOUT_FILE_LENGTH;
29-
import static com.azure.ai.formrecognizer.TestUtils.LAYOUT_FORM_DATA;
27+
import static com.azure.ai.formrecognizer.TestUtils.LAYOUT_LOCAL_URL;
3028
import static com.azure.ai.formrecognizer.TestUtils.RECEIPT_FILE_LENGTH;
31-
import static com.azure.ai.formrecognizer.TestUtils.RECEIPT_FORM_DATA;
3229
import static com.azure.ai.formrecognizer.TestUtils.RECEIPT_LOCAL_URL;
33-
import static com.azure.ai.formrecognizer.TestUtils.getAnalyzeRawResponse;
3430
import static com.azure.ai.formrecognizer.TestUtils.getReplayableBufferData;
3531
import static com.azure.ai.formrecognizer.implementation.Utility.toFluxByteBuffer;
3632
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -67,7 +63,7 @@ void recognizeReceiptSourceUrl() {
6763
SyncPoller<OperationResult, IterableStream<RecognizedReceipt>> syncPoller =
6864
client.beginRecognizeReceiptsFromUrl(sourceUrl).getSyncPoller();
6965
syncPoller.waitForCompletion();
70-
validateReceiptResultData(syncPoller.getFinalResult(), getAnalyzeRawResponse(RECEIPT_FORM_DATA).getAnalyzeResult(), false);
66+
validateReceiptResultData(syncPoller.getFinalResult(), false);
7167
});
7268
}
7369

@@ -81,7 +77,7 @@ void recognizeReceiptSourceUrlTextDetails() {
8177
SyncPoller<OperationResult, IterableStream<RecognizedReceipt>> syncPoller =
8278
client.beginRecognizeReceiptsFromUrl(sourceUrl, includeTextDetails, null).getSyncPoller();
8379
syncPoller.waitForCompletion();
84-
validateReceiptResultData(syncPoller.getFinalResult(), getAnalyzeRawResponse(RECEIPT_FORM_DATA).getAnalyzeResult(), includeTextDetails);
80+
validateReceiptResultData(syncPoller.getFinalResult(), includeTextDetails);
8581
});
8682
}
8783

@@ -96,7 +92,7 @@ void recognizeReceiptData() {
9692
FormContentType.IMAGE_JPEG, false,
9793
null).getSyncPoller();
9894
syncPoller.waitForCompletion();
99-
validateReceiptResultData(syncPoller.getFinalResult(), getAnalyzeRawResponse(RECEIPT_FORM_DATA).getAnalyzeResult(), false);
95+
validateReceiptResultData(syncPoller.getFinalResult(), false);
10096
});
10197
}
10298

@@ -120,7 +116,7 @@ void recognizeReceiptDataWithContentTypeAutoDetection() {
120116
client.beginRecognizeReceipts(getReplayableBufferData(RECEIPT_LOCAL_URL), RECEIPT_FILE_LENGTH, null,
121117
false, null).getSyncPoller();
122118
syncPoller.waitForCompletion();
123-
validateReceiptResultData(syncPoller.getFinalResult(), getAnalyzeRawResponse(RECEIPT_FORM_DATA).getAnalyzeResult(), false);
119+
validateReceiptResultData(syncPoller.getFinalResult(), false);
124120
}
125121

126122
/**
@@ -134,7 +130,7 @@ void recognizeReceiptDataTextDetails() {
134130
FormContentType.IMAGE_JPEG, includeTextDetails,
135131
null).getSyncPoller();
136132
syncPoller.waitForCompletion();
137-
validateReceiptResultData(syncPoller.getFinalResult(), getAnalyzeRawResponse(RECEIPT_FORM_DATA).getAnalyzeResult(), true);
133+
validateReceiptResultData(syncPoller.getFinalResult(), true);
138134
});
139135
}
140136

@@ -160,7 +156,7 @@ void recognizeReceiptAsUSReceipt() {
160156
syncPoller.waitForCompletion();
161157
syncPoller.getFinalResult().forEach(recognizedReceipt ->
162158
validateUSReceiptData(ReceiptExtensions.asUSReceipt(recognizedReceipt),
163-
getAnalyzeRawResponse(RECEIPT_FORM_DATA).getAnalyzeResult(), includeTextDetails));
159+
includeTextDetails));
164160
});
165161
}
166162

@@ -174,8 +170,7 @@ void recognizeLayoutData() {
174170
= client.beginRecognizeContent(toFluxByteBuffer(data),
175171
LAYOUT_FILE_LENGTH, FormContentType.IMAGE_JPEG, null).getSyncPoller();
176172
syncPoller.waitForCompletion();
177-
final AnalyzeResult rawResponse = getAnalyzeRawResponse(LAYOUT_FORM_DATA).getAnalyzeResult();
178-
validateLayoutDataResults(syncPoller.getFinalResult(), rawResponse.getReadResults(), rawResponse.getPageResults(), false);
173+
validateLayoutDataResults(syncPoller.getFinalResult(), false);
179174
});
180175
}
181176

@@ -204,11 +199,10 @@ void recognizeLayoutDataWithNullData() {
204199
void recognizeLayoutDataWithContentTypeAutoDetection() {
205200
layoutDataRunner((data) -> {
206201
SyncPoller<OperationResult, IterableStream<FormPage>> syncPoller
207-
= client.beginRecognizeContent(toFluxByteBuffer(data),
202+
= client.beginRecognizeContent(getReplayableBufferData(LAYOUT_LOCAL_URL),
208203
LAYOUT_FILE_LENGTH, null, null).getSyncPoller();
209204
syncPoller.waitForCompletion();
210-
final AnalyzeResult rawResponse = getAnalyzeRawResponse(LAYOUT_FORM_DATA).getAnalyzeResult();
211-
validateLayoutDataResults(syncPoller.getFinalResult(), rawResponse.getReadResults(), rawResponse.getPageResults(), false);
205+
validateLayoutDataResults(syncPoller.getFinalResult(), false);
212206
});
213207
}
214208

@@ -221,8 +215,7 @@ void recognizeLayoutSourceUrl() {
221215
SyncPoller<OperationResult, IterableStream<FormPage>> syncPoller
222216
= client.beginRecognizeContentFromUrl(sourceUrl).getSyncPoller();
223217
syncPoller.waitForCompletion();
224-
final AnalyzeResult rawResponse = getAnalyzeRawResponse(LAYOUT_FORM_DATA).getAnalyzeResult();
225-
validateLayoutDataResults(syncPoller.getFinalResult(), rawResponse.getReadResults(), rawResponse.getPageResults(), false);
218+
validateLayoutDataResults(syncPoller.getFinalResult(), false);
226219
});
227220
}
228221

@@ -269,7 +262,7 @@ void recognizeCustomFormLabeledData() {
269262
.getSyncPoller();
270263
syncPoller.waitForCompletion();
271264
validateRecognizedResult(syncPoller.getFinalResult(),
272-
getAnalyzeRawResponse(CUSTOM_FORM_LABELED_DATA).getAnalyzeResult(), true, true);
265+
true, true);
273266
}));
274267
}
275268

@@ -309,13 +302,13 @@ void recognizeCustomFormLabeledDataWithContentTypeAutoDetection() {
309302
trainingPoller.waitForCompletion();
310303

311304
SyncPoller<OperationResult, IterableStream<RecognizedForm>> syncPoller
312-
= client.beginRecognizeCustomForms(toFluxByteBuffer(data),
305+
= client.beginRecognizeCustomForms(getReplayableBufferData(FORM_LOCAL_URL),
313306
trainingPoller.getFinalResult().getModelId(),
314307
CUSTOM_FORM_FILE_LENGTH, null, true, null)
315308
.getSyncPoller();
316309
syncPoller.waitForCompletion();
317310
validateRecognizedResult(syncPoller.getFinalResult(),
318-
getAnalyzeRawResponse(CUSTOM_FORM_LABELED_DATA).getAnalyzeResult(), true, true);
311+
true, true);
319312
}));
320313
}
321314

@@ -337,7 +330,7 @@ void recognizeCustomFormUnlabeledData() {
337330
.getSyncPoller();
338331
syncPoller.waitForCompletion();
339332
validateRecognizedResult(syncPoller.getFinalResult(),
340-
getAnalyzeRawResponse(CUSTOM_FORM_DATA).getAnalyzeResult(), false, false);
333+
false, false);
341334
}));
342335
}
343336
}

sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerClientBuilderTest.java

Lines changed: 13 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
package com.azure.ai.formrecognizer;
55

6-
import com.azure.ai.formrecognizer.implementation.models.AnalyzeResult;
76
import com.azure.ai.formrecognizer.models.ErrorResponseException;
87
import com.azure.core.credential.AzureKeyCredential;
98
import com.azure.core.http.netty.NettyAsyncHttpClientBuilder;
@@ -18,19 +17,17 @@
1817
import java.util.function.Consumer;
1918
import java.util.function.Function;
2019

21-
import static com.azure.ai.formrecognizer.FormRecognizerClientTestBase.validateLayoutDataResults;
22-
import static com.azure.ai.formrecognizer.TestUtils.LAYOUT_FORM_DATA;
23-
import static com.azure.ai.formrecognizer.TestUtils.LAYOUT_URL;
24-
import static com.azure.ai.formrecognizer.TestUtils.getAnalyzeRawResponse;
20+
import static com.azure.ai.formrecognizer.FormTrainingClientTestBase.AZURE_FORM_RECOGNIZER_API_KEY;
21+
import static com.azure.ai.formrecognizer.FormTrainingClientTestBase.validateAccountProperties;
22+
import static com.azure.ai.formrecognizer.TestUtils.INVALID_KEY;
23+
import static com.azure.ai.formrecognizer.TestUtils.VALID_URL;
24+
import static com.azure.ai.formrecognizer.TestUtils.getExpectedAccountProperties;
2525
import static org.junit.jupiter.api.Assertions.assertThrows;
2626

2727
/**
2828
* Tests for Form Recognizer client builder
2929
*/
3030
public class FormRecognizerClientBuilderTest extends TestBase {
31-
private static final String AZURE_FORM_RECOGNIZER_API_KEY = "AZURE_FORM_RECOGNIZER_API_KEY";
32-
private static final String INVALID_KEY = "invalid key";
33-
3431
/**
3532
* Test client builder with invalid API key
3633
*/
@@ -45,10 +42,8 @@ public void clientBuilderWithInvalidApiKeyCredential() {
4542
*/
4643
@Test
4744
public void clientBuilderWithRotateToValidKey() {
48-
final AnalyzeResult rawResponse = getAnalyzeRawResponse(LAYOUT_FORM_DATA).getAnalyzeResult();
4945
clientBuilderWithRotateToValidKeyRunner(clientBuilder -> (input) ->
50-
validateLayoutDataResults(clientBuilder.buildClient().beginRecognizeContentFromUrl(input).getFinalResult(),
51-
rawResponse.getReadResults(), rawResponse.getPageResults(), false));
46+
validateAccountProperties(getExpectedAccountProperties(), clientBuilder.buildClient().getFormTrainingClient().getAccountProperties()));
5247
}
5348

5449
/**
@@ -65,29 +60,25 @@ public void clientBuilderWithRotateToInvalidKey() {
6560
*/
6661
@Test
6762
public void clientBuilderWithNullServiceVersion() {
68-
final AnalyzeResult rawResponse = getAnalyzeRawResponse(LAYOUT_FORM_DATA).getAnalyzeResult();
6963
clientBuilderWithNullServiceVersionRunner(clientBuilder -> (input) ->
70-
validateLayoutDataResults(clientBuilder.buildClient().beginRecognizeContentFromUrl(input).getFinalResult(),
71-
rawResponse.getReadResults(), rawResponse.getPageResults(), false));
64+
validateAccountProperties(getExpectedAccountProperties(), clientBuilder.buildClient().getFormTrainingClient().getAccountProperties()));
7265
}
7366

7467
/**
7568
* Test for default pipeline in client builder
7669
*/
7770
@Test
7871
public void clientBuilderWithDefaultPipeline() {
79-
final AnalyzeResult rawResponse = getAnalyzeRawResponse(LAYOUT_FORM_DATA).getAnalyzeResult();
8072
clientBuilderWithDefaultPipelineRunner(clientBuilder -> (input) ->
81-
validateLayoutDataResults(clientBuilder.buildClient().beginRecognizeContentFromUrl(input).getFinalResult(),
82-
rawResponse.getReadResults(), rawResponse.getPageResults(), false));
73+
validateAccountProperties(getExpectedAccountProperties(), clientBuilder.buildClient().getFormTrainingClient().getAccountProperties()));
8374
}
8475

8576
// Client builder runner
8677
void clientBuilderWithInvalidApiKeyCredentialRunner(
8778
Function<FormRecognizerClientBuilder, BiConsumer<String, ErrorResponseException>> testRunner) {
8879
final FormRecognizerClientBuilder clientBuilder = createClientBuilder(getEndpoint(),
8980
new AzureKeyCredential(INVALID_KEY));
90-
testRunner.apply(clientBuilder).accept(LAYOUT_URL, new ErrorResponseException("", null));
81+
testRunner.apply(clientBuilder).accept(VALID_URL, new ErrorResponseException("", null));
9182
}
9283

9384
void clientBuilderWithRotateToInvalidKeyRunner(
@@ -96,7 +87,7 @@ void clientBuilderWithRotateToInvalidKeyRunner(
9687
final FormRecognizerClientBuilder clientBuilder = createClientBuilder(getEndpoint(), credential);
9788
// Update to invalid key
9889
credential.update(INVALID_KEY);
99-
testRunner.apply(clientBuilder).accept(LAYOUT_URL, new ErrorResponseException("", null));
90+
testRunner.apply(clientBuilder).accept(VALID_URL, new ErrorResponseException("", null));
10091
}
10192

10293
void clientBuilderWithRotateToValidKeyRunner(
@@ -105,7 +96,7 @@ void clientBuilderWithRotateToValidKeyRunner(
10596
final FormRecognizerClientBuilder clientBuilder = createClientBuilder(getEndpoint(), credential);
10697
// Update to valid key
10798
credential.update(getApiKey());
108-
testRunner.apply(clientBuilder).accept(LAYOUT_URL);
99+
testRunner.apply(clientBuilder).accept(VALID_URL);
109100
}
110101

111102
void clientBuilderWithNullServiceVersionRunner(
@@ -114,7 +105,7 @@ void clientBuilderWithNullServiceVersionRunner(
114105
createClientBuilder(getEndpoint(), new AzureKeyCredential(getApiKey()))
115106
.retryPolicy(new RetryPolicy())
116107
.serviceVersion(null);
117-
testRunner.apply(clientBuilder).accept(LAYOUT_URL);
108+
testRunner.apply(clientBuilder).accept(VALID_URL);
118109
}
119110

120111
void clientBuilderWithDefaultPipelineRunner(
@@ -123,7 +114,7 @@ void clientBuilderWithDefaultPipelineRunner(
123114
createClientBuilder(getEndpoint(), new AzureKeyCredential(getApiKey()))
124115
.configuration(Configuration.getGlobalConfiguration())
125116
.httpLogOptions(new HttpLogOptions().setLogLevel(HttpLogDetailLevel.BODY_AND_HEADERS));
126-
testRunner.apply(clientBuilder).accept(LAYOUT_URL);
117+
testRunner.apply(clientBuilder).accept(VALID_URL);
127118
}
128119

129120
String getEndpoint() {

0 commit comments

Comments
 (0)