From 9d69f8df2bb412d6f082cea60f482311f53d885e Mon Sep 17 00:00:00 2001 From: tg-msft Date: Tue, 27 Apr 2021 08:34:41 -0700 Subject: [PATCH 1/2] Add basic multi-version support to FR --- .../src/FormRecognizerClient.cs | 4 +- .../src/FormTrainingClient.cs | 4 +- .../src/Generated/FormRecognizerRestClient.cs | 95 +++++++++++++------ .../Azure.AI.FormRecognizer/src/autorest.md | 19 ++++ 4 files changed, 88 insertions(+), 34 deletions(-) diff --git a/sdk/formrecognizer/Azure.AI.FormRecognizer/src/FormRecognizerClient.cs b/sdk/formrecognizer/Azure.AI.FormRecognizer/src/FormRecognizerClient.cs index 5a54c72ef9390..fe5676461e8bb 100644 --- a/sdk/formrecognizer/Azure.AI.FormRecognizer/src/FormRecognizerClient.cs +++ b/sdk/formrecognizer/Azure.AI.FormRecognizer/src/FormRecognizerClient.cs @@ -58,7 +58,7 @@ public FormRecognizerClient(Uri endpoint, AzureKeyCredential credential, FormRec Diagnostics = new ClientDiagnostics(options); var pipeline = HttpPipelineBuilder.Build(options, new AzureKeyCredentialPolicy(credential, Constants.AuthorizationHeader)); - ServiceClient = new FormRecognizerRestClient(Diagnostics, pipeline, endpoint.AbsoluteUri); + ServiceClient = new FormRecognizerRestClient(Diagnostics, pipeline, endpoint.AbsoluteUri, FormRecognizerClientOptions.GetVersionString(options.Version)); } /// @@ -93,7 +93,7 @@ public FormRecognizerClient(Uri endpoint, TokenCredential credential, FormRecogn Diagnostics = new ClientDiagnostics(options); var pipeline = HttpPipelineBuilder.Build(options, new BearerTokenAuthenticationPolicy(credential, Constants.DefaultCognitiveScope)); - ServiceClient = new FormRecognizerRestClient(Diagnostics, pipeline, endpoint.AbsoluteUri); + ServiceClient = new FormRecognizerRestClient(Diagnostics, pipeline, endpoint.AbsoluteUri, FormRecognizerClientOptions.GetVersionString(options.Version)); } /// diff --git a/sdk/formrecognizer/Azure.AI.FormRecognizer/src/FormTrainingClient.cs b/sdk/formrecognizer/Azure.AI.FormRecognizer/src/FormTrainingClient.cs index ad0bce1fd753f..cedbcebed1d1a 100644 --- a/sdk/formrecognizer/Azure.AI.FormRecognizer/src/FormTrainingClient.cs +++ b/sdk/formrecognizer/Azure.AI.FormRecognizer/src/FormTrainingClient.cs @@ -66,7 +66,7 @@ public FormTrainingClient(Uri endpoint, AzureKeyCredential credential, FormRecog Diagnostics = new ClientDiagnostics(options); HttpPipeline pipeline = HttpPipelineBuilder.Build(options, new AzureKeyCredentialPolicy(credential, Constants.AuthorizationHeader)); - ServiceClient = new FormRecognizerRestClient(Diagnostics, pipeline, endpoint.AbsoluteUri); + ServiceClient = new FormRecognizerRestClient(Diagnostics, pipeline, endpoint.AbsoluteUri, FormRecognizerClientOptions.GetVersionString(options.Version)); } /// @@ -101,7 +101,7 @@ public FormTrainingClient(Uri endpoint, TokenCredential credential, FormRecogniz Diagnostics = new ClientDiagnostics(options); var pipeline = HttpPipelineBuilder.Build(options, new BearerTokenAuthenticationPolicy(credential, Constants.DefaultCognitiveScope)); - ServiceClient = new FormRecognizerRestClient(Diagnostics, pipeline, endpoint.AbsoluteUri); + ServiceClient = new FormRecognizerRestClient(Diagnostics, pipeline, endpoint.AbsoluteUri, FormRecognizerClientOptions.GetVersionString(options.Version)); } #region Training diff --git a/sdk/formrecognizer/Azure.AI.FormRecognizer/src/Generated/FormRecognizerRestClient.cs b/sdk/formrecognizer/Azure.AI.FormRecognizer/src/Generated/FormRecognizerRestClient.cs index 56833f3d1fe55..58c81e361d337 100644 --- a/sdk/formrecognizer/Azure.AI.FormRecognizer/src/Generated/FormRecognizerRestClient.cs +++ b/sdk/formrecognizer/Azure.AI.FormRecognizer/src/Generated/FormRecognizerRestClient.cs @@ -21,6 +21,7 @@ namespace Azure.AI.FormRecognizer internal partial class FormRecognizerRestClient { private string endpoint; + private string apiVersion; private ClientDiagnostics _clientDiagnostics; private HttpPipeline _pipeline; @@ -28,15 +29,21 @@ internal partial class FormRecognizerRestClient /// The handler for diagnostic messaging in the client. /// The HTTP pipeline for sending and receiving REST requests and responses. /// Supported Cognitive Services endpoints (protocol and hostname, for example: https://westus2.api.cognitive.microsoft.com). - /// is null. - public FormRecognizerRestClient(ClientDiagnostics clientDiagnostics, HttpPipeline pipeline, string endpoint) + /// Form Recognizer API version (for example: v2.0). + /// or is null. + public FormRecognizerRestClient(ClientDiagnostics clientDiagnostics, HttpPipeline pipeline, string endpoint, string apiVersion) { if (endpoint == null) { throw new ArgumentNullException(nameof(endpoint)); } + if (apiVersion == null) + { + throw new ArgumentNullException(nameof(apiVersion)); + } this.endpoint = endpoint; + this.apiVersion = apiVersion; _clientDiagnostics = clientDiagnostics; _pipeline = pipeline; } @@ -48,7 +55,8 @@ internal HttpMessage CreateTrainCustomModelAsyncRequest(TrainRequest trainReques request.Method = RequestMethod.Post; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendRaw("/formrecognizer/v2.1-preview.3", false); + uri.AppendRaw("/formrecognizer/", false); + uri.AppendRaw(apiVersion, false); uri.AppendPath("/custom/models", false); request.Uri = uri; request.Headers.Add("Accept", "application/json"); @@ -112,7 +120,8 @@ internal HttpMessage CreateGetCustomModelRequest(Guid modelId, bool? includeKeys request.Method = RequestMethod.Get; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendRaw("/formrecognizer/v2.1-preview.3", false); + uri.AppendRaw("/formrecognizer/", false); + uri.AppendRaw(apiVersion, false); uri.AppendPath("/custom/models/", false); uri.AppendPath(modelId, true); if (includeKeys != null) @@ -175,7 +184,8 @@ internal HttpMessage CreateDeleteCustomModelRequest(Guid modelId) request.Method = RequestMethod.Delete; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendRaw("/formrecognizer/v2.1-preview.3", false); + uri.AppendRaw("/formrecognizer/", false); + uri.AppendRaw(apiVersion, false); uri.AppendPath("/custom/models/", false); uri.AppendPath(modelId, true); request.Uri = uri; @@ -222,7 +232,8 @@ internal HttpMessage CreateAnalyzeWithCustomModelRequest(Guid modelId, FormConte request.Method = RequestMethod.Post; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendRaw("/formrecognizer/v2.1-preview.3", false); + uri.AppendRaw("/formrecognizer/", false); + uri.AppendRaw(apiVersion, false); uri.AppendPath("/custom/models/", false); uri.AppendPath(modelId, true); uri.AppendPath("/analyze", false); @@ -293,7 +304,8 @@ internal HttpMessage CreateAnalyzeWithCustomModelRequest(Guid modelId, bool? inc request.Method = RequestMethod.Post; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendRaw("/formrecognizer/v2.1-preview.3", false); + uri.AppendRaw("/formrecognizer/", false); + uri.AppendRaw(apiVersion, false); uri.AppendPath("/custom/models/", false); uri.AppendPath(modelId, true); uri.AppendPath("/analyze", false); @@ -364,7 +376,8 @@ internal HttpMessage CreateGetAnalyzeFormResultRequest(Guid modelId, Guid result request.Method = RequestMethod.Get; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendRaw("/formrecognizer/v2.1-preview.3", false); + uri.AppendRaw("/formrecognizer/", false); + uri.AppendRaw(apiVersion, false); uri.AppendPath("/custom/models/", false); uri.AppendPath(modelId, true); uri.AppendPath("/analyzeResults/", false); @@ -425,7 +438,8 @@ internal HttpMessage CreateCopyCustomModelRequest(Guid modelId, CopyRequest copy request.Method = RequestMethod.Post; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendRaw("/formrecognizer/v2.1-preview.3", false); + uri.AppendRaw("/formrecognizer/", false); + uri.AppendRaw(apiVersion, false); uri.AppendPath("/custom/models/", false); uri.AppendPath(modelId, true); uri.AppendPath("/copy", false); @@ -493,7 +507,8 @@ internal HttpMessage CreateGetCustomModelCopyResultRequest(Guid modelId, Guid re request.Method = RequestMethod.Get; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendRaw("/formrecognizer/v2.1-preview.3", false); + uri.AppendRaw("/formrecognizer/", false); + uri.AppendRaw(apiVersion, false); uri.AppendPath("/custom/models/", false); uri.AppendPath(modelId, true); uri.AppendPath("/copyResults/", false); @@ -554,7 +569,8 @@ internal HttpMessage CreateGenerateModelCopyAuthorizationRequest() request.Method = RequestMethod.Post; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendRaw("/formrecognizer/v2.1-preview.3", false); + uri.AppendRaw("/formrecognizer/", false); + uri.AppendRaw(apiVersion, false); uri.AppendPath("/custom/models/copyAuthorization", false); request.Uri = uri; request.Headers.Add("Accept", "application/json"); @@ -610,7 +626,8 @@ internal HttpMessage CreateComposeCustomModelsAsyncRequest(ComposeRequest compos request.Method = RequestMethod.Post; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendRaw("/formrecognizer/v2.1-preview.3", false); + uri.AppendRaw("/formrecognizer/", false); + uri.AppendRaw(apiVersion, false); uri.AppendPath("/custom/models/compose", false); request.Uri = uri; request.Headers.Add("Accept", "application/json, text/json"); @@ -686,7 +703,8 @@ internal HttpMessage CreateAnalyzeBusinessCardAsyncRequest(FormContentType conte request.Method = RequestMethod.Post; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendRaw("/formrecognizer/v2.1-preview.3", false); + uri.AppendRaw("/formrecognizer/", false); + uri.AppendRaw(apiVersion, false); uri.AppendPath("/prebuilt/businessCard/analyze", false); if (includeTextDetails != null) { @@ -759,7 +777,8 @@ internal HttpMessage CreateAnalyzeBusinessCardAsyncRequest(bool? includeTextDeta request.Method = RequestMethod.Post; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendRaw("/formrecognizer/v2.1-preview.3", false); + uri.AppendRaw("/formrecognizer/", false); + uri.AppendRaw(apiVersion, false); uri.AppendPath("/prebuilt/businessCard/analyze", false); if (includeTextDetails != null) { @@ -832,7 +851,8 @@ internal HttpMessage CreateGetAnalyzeBusinessCardResultRequest(Guid resultId) request.Method = RequestMethod.Get; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendRaw("/formrecognizer/v2.1-preview.3", false); + uri.AppendRaw("/formrecognizer/", false); + uri.AppendRaw(apiVersion, false); uri.AppendPath("/prebuilt/businessCard/analyzeResults/", false); uri.AppendPath(resultId, true); request.Uri = uri; @@ -889,7 +909,8 @@ internal HttpMessage CreateAnalyzeInvoiceAsyncRequest(FormContentType contentTyp request.Method = RequestMethod.Post; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendRaw("/formrecognizer/v2.1-preview.3", false); + uri.AppendRaw("/formrecognizer/", false); + uri.AppendRaw(apiVersion, false); uri.AppendPath("/prebuilt/invoice/analyze", false); if (includeTextDetails != null) { @@ -962,7 +983,8 @@ internal HttpMessage CreateAnalyzeInvoiceAsyncRequest(bool? includeTextDetails, request.Method = RequestMethod.Post; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendRaw("/formrecognizer/v2.1-preview.3", false); + uri.AppendRaw("/formrecognizer/", false); + uri.AppendRaw(apiVersion, false); uri.AppendPath("/prebuilt/invoice/analyze", false); if (includeTextDetails != null) { @@ -1035,7 +1057,8 @@ internal HttpMessage CreateGetAnalyzeInvoiceResultRequest(Guid resultId) request.Method = RequestMethod.Get; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendRaw("/formrecognizer/v2.1-preview.3", false); + uri.AppendRaw("/formrecognizer/", false); + uri.AppendRaw(apiVersion, false); uri.AppendPath("/prebuilt/invoice/analyzeResults/", false); uri.AppendPath(resultId, true); request.Uri = uri; @@ -1092,7 +1115,8 @@ internal HttpMessage CreateAnalyzeIdDocumentAsyncRequest(FormContentType content request.Method = RequestMethod.Post; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendRaw("/formrecognizer/v2.1-preview.3", false); + uri.AppendRaw("/formrecognizer/", false); + uri.AppendRaw(apiVersion, false); uri.AppendPath("/prebuilt/idDocument/analyze", false); if (includeTextDetails != null) { @@ -1159,7 +1183,8 @@ internal HttpMessage CreateAnalyzeIdDocumentAsyncRequest(bool? includeTextDetail request.Method = RequestMethod.Post; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendRaw("/formrecognizer/v2.1-preview.3", false); + uri.AppendRaw("/formrecognizer/", false); + uri.AppendRaw(apiVersion, false); uri.AppendPath("/prebuilt/idDocument/analyze", false); if (includeTextDetails != null) { @@ -1226,7 +1251,8 @@ internal HttpMessage CreateGetAnalyzeIdDocumentResultRequest(Guid resultId) request.Method = RequestMethod.Get; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendRaw("/formrecognizer/v2.1-preview.3", false); + uri.AppendRaw("/formrecognizer/", false); + uri.AppendRaw(apiVersion, false); uri.AppendPath("/prebuilt/idDocument/analyzeResults/", false); uri.AppendPath(resultId, true); request.Uri = uri; @@ -1283,7 +1309,8 @@ internal HttpMessage CreateAnalyzeReceiptAsyncRequest(FormContentType contentTyp request.Method = RequestMethod.Post; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendRaw("/formrecognizer/v2.1-preview.3", false); + uri.AppendRaw("/formrecognizer/", false); + uri.AppendRaw(apiVersion, false); uri.AppendPath("/prebuilt/receipt/analyze", false); if (includeTextDetails != null) { @@ -1356,7 +1383,8 @@ internal HttpMessage CreateAnalyzeReceiptAsyncRequest(bool? includeTextDetails, request.Method = RequestMethod.Post; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendRaw("/formrecognizer/v2.1-preview.3", false); + uri.AppendRaw("/formrecognizer/", false); + uri.AppendRaw(apiVersion, false); uri.AppendPath("/prebuilt/receipt/analyze", false); if (includeTextDetails != null) { @@ -1429,7 +1457,8 @@ internal HttpMessage CreateGetAnalyzeReceiptResultRequest(Guid resultId) request.Method = RequestMethod.Get; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendRaw("/formrecognizer/v2.1-preview.3", false); + uri.AppendRaw("/formrecognizer/", false); + uri.AppendRaw(apiVersion, false); uri.AppendPath("/prebuilt/receipt/analyzeResults/", false); uri.AppendPath(resultId, true); request.Uri = uri; @@ -1486,7 +1515,8 @@ internal HttpMessage CreateAnalyzeLayoutAsyncRequest(FormContentType contentType request.Method = RequestMethod.Post; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendRaw("/formrecognizer/v2.1-preview.3", false); + uri.AppendRaw("/formrecognizer/", false); + uri.AppendRaw(apiVersion, false); uri.AppendPath("/layout/analyze", false); if (pages != null) { @@ -1559,7 +1589,8 @@ internal HttpMessage CreateAnalyzeLayoutAsyncRequest(IEnumerable pages, request.Method = RequestMethod.Post; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendRaw("/formrecognizer/v2.1-preview.3", false); + uri.AppendRaw("/formrecognizer/", false); + uri.AppendRaw(apiVersion, false); uri.AppendPath("/layout/analyze", false); if (pages != null) { @@ -1632,7 +1663,8 @@ internal HttpMessage CreateGetAnalyzeLayoutResultRequest(Guid resultId) request.Method = RequestMethod.Get; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendRaw("/formrecognizer/v2.1-preview.3", false); + uri.AppendRaw("/formrecognizer/", false); + uri.AppendRaw(apiVersion, false); uri.AppendPath("/layout/analyzeResults/", false); uri.AppendPath(resultId, true); request.Uri = uri; @@ -1689,7 +1721,8 @@ internal HttpMessage CreateListCustomModelsRequest() request.Method = RequestMethod.Get; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendRaw("/formrecognizer/v2.1-preview.3", false); + uri.AppendRaw("/formrecognizer/", false); + uri.AppendRaw(apiVersion, false); uri.AppendPath("/custom/models", false); uri.AppendQuery("op", "full", true); request.Uri = uri; @@ -1744,7 +1777,8 @@ internal HttpMessage CreateGetCustomModelsRequest() request.Method = RequestMethod.Get; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendRaw("/formrecognizer/v2.1-preview.3", false); + uri.AppendRaw("/formrecognizer/", false); + uri.AppendRaw(apiVersion, false); uri.AppendPath("/custom/models", false); uri.AppendQuery("op", "summary", true); request.Uri = uri; @@ -1799,7 +1833,8 @@ internal HttpMessage CreateListCustomModelsNextPageRequest(string nextLink) request.Method = RequestMethod.Get; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendRaw("/formrecognizer/v2.1-preview.3", false); + uri.AppendRaw("/formrecognizer/", false); + uri.AppendRaw(apiVersion, false); uri.AppendRawNextLink(nextLink, false); request.Uri = uri; request.Headers.Add("Accept", "application/json"); diff --git a/sdk/formrecognizer/Azure.AI.FormRecognizer/src/autorest.md b/sdk/formrecognizer/Azure.AI.FormRecognizer/src/autorest.md index 3d62ee2d66670..ba271afc76336 100644 --- a/sdk/formrecognizer/Azure.AI.FormRecognizer/src/autorest.md +++ b/sdk/formrecognizer/Azure.AI.FormRecognizer/src/autorest.md @@ -11,6 +11,25 @@ require: - https://github.com/Azure/azure-rest-api-specs/blob/5a260d47021d8278c26dd6f946f4e6b97e0cd023/specification/cognitiveservices/data-plane/FormRecognizer/readme.md ``` +### Make the API version parameterized so we generate a multi-versioned API + +This should be fixed in the swagger, but we're working around it locally for now. +``` yaml +directive: +- from: swagger-document + where: $["x-ms-parameterized-host"] + transform: > + $.hostTemplate = "{endpoint}/formrecognizer/{apiVersion}"; + $.parameters.push({ + "name": "apiVersion", + "description": "Form Recognizer API version (for example: v2.0).", + "x-ms-parameter-location": "client", + "required": true, + "type": "string", + "in": "path", + "x-ms-skip-url-encoding": true + }); +``` ### Make AnalyzeResult.readResult optional This is a temporary work-around From df1c95605eff362bae9eb31f5fced0a5bfceb26c Mon Sep 17 00:00:00 2001 From: Mariana Rios Flores Date: Tue, 27 Apr 2021 20:22:48 -0700 Subject: [PATCH 2/2] enable multi-api testing with mostly 2.1p3 --- .../FormRecognizerClientLiveTests.cs | 77 ++++++++++++++++++- .../FormTrainingClientLiveTests.cs | 13 +++- .../FormRecognizerLiveTestBase.cs | 16 +++- .../tests/Models/OperationsLiveTests.cs | 7 +- 4 files changed, 104 insertions(+), 9 deletions(-) diff --git a/sdk/formrecognizer/Azure.AI.FormRecognizer/tests/FormRecognizerClient/FormRecognizerClientLiveTests.cs b/sdk/formrecognizer/Azure.AI.FormRecognizer/tests/FormRecognizerClient/FormRecognizerClientLiveTests.cs index e5510654a3306..5e534c44251d2 100644 --- a/sdk/formrecognizer/Azure.AI.FormRecognizer/tests/FormRecognizerClient/FormRecognizerClientLiveTests.cs +++ b/sdk/formrecognizer/Azure.AI.FormRecognizer/tests/FormRecognizerClient/FormRecognizerClientLiveTests.cs @@ -25,12 +25,13 @@ public class FormRecognizerClientLiveTests : FormRecognizerLiveTestBase /// Initializes a new instance of the class. /// /// A flag used by the Azure Core Test Framework to differentiate between tests for asynchronous and synchronous methods. - public FormRecognizerClientLiveTests(bool isAsync) - : base(isAsync) + public FormRecognizerClientLiveTests(bool isAsync, FormRecognizerClientOptions.ServiceVersion serviceVersion) + : base(isAsync, serviceVersion) { } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public void FormRecognizerClientCannotAuthenticateWithFakeApiKey() { var client = CreateFormRecognizerClient(apiKey: "fakeKey"); @@ -45,6 +46,7 @@ public void FormRecognizerClientCannotAuthenticateWithFakeApiKey() #region StartRecognizeContent [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeContentCanAuthenticateWithTokenCredential() { var client = CreateFormRecognizerClient(useTokenCredential: true); @@ -72,6 +74,7 @@ public async Task StartRecognizeContentCanAuthenticateWithTokenCredential() [RecordedTest] [TestCase(true)] [TestCase(false)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeContentPopulatesFormPagePdf(bool useStream) { var client = CreateFormRecognizerClient(); @@ -179,6 +182,7 @@ public async Task StartRecognizeContentPopulatesFormPagePdf(bool useStream) [RecordedTest] [TestCase(true)] [TestCase(false)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeContentPopulatesFormPageJpg(bool useStream) { var client = CreateFormRecognizerClient(); @@ -292,6 +296,7 @@ public async Task StartRecognizeContentPopulatesFormPageJpg(bool useStream) [RecordedTest] [TestCase(true)] [TestCase(false)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeContentCanParseMultipageForm(bool useStream) { var client = CreateFormRecognizerClient(); @@ -331,6 +336,7 @@ public async Task StartRecognizeContentCanParseMultipageForm(bool useStream) } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeContentCanParseBlankPage() { var client = CreateFormRecognizerClient(); @@ -354,6 +360,7 @@ public async Task StartRecognizeContentCanParseBlankPage() } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeContentCanParseMultipageFormWithBlankPage() { var client = CreateFormRecognizerClient(); @@ -393,6 +400,7 @@ public async Task StartRecognizeContentCanParseMultipageFormWithBlankPage() } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public void StartRecognizeContentThrowsForDamagedFile() { var client = CreateFormRecognizerClient(); @@ -411,6 +419,7 @@ public void StartRecognizeContentThrowsForDamagedFile() /// Recognizer cognitive service and handle returned errors. /// [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public void StartRecognizeContentFromUriThrowsForNonExistingContent() { var client = CreateFormRecognizerClient(); @@ -423,6 +432,7 @@ public void StartRecognizeContentFromUriThrowsForNonExistingContent() [RecordedTest] [TestCase(true)] [TestCase(false)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeContentWithSelectionMarks(bool useStream) { var client = CreateFormRecognizerClient(); @@ -453,6 +463,7 @@ public async Task StartRecognizeContentWithSelectionMarks(bool useStream) [RecordedTest] [TestCase("1", 1)] [TestCase("1-2", 2)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeContentWithOnePageArgument(string pages, int expected) { var client = CreateFormRecognizerClient(); @@ -472,6 +483,7 @@ public async Task StartRecognizeContentWithOnePageArgument(string pages, int exp [RecordedTest] [TestCase("1", "3", 2)] [TestCase("1-2", "3", 3)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeContentWithMultiplePageArgument(string page1, string page2, int expected) { var client = CreateFormRecognizerClient(); @@ -489,6 +501,7 @@ public async Task StartRecognizeContentWithMultiplePageArgument(string page1, st } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeContentWithLanguage() { var client = CreateFormRecognizerClient(); @@ -506,6 +519,7 @@ public async Task StartRecognizeContentWithLanguage() } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public void StartRecognizeContentWithNoSupporttedLanguage() { var client = CreateFormRecognizerClient(); @@ -516,6 +530,7 @@ public void StartRecognizeContentWithNoSupporttedLanguage() } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeContentWithReadingOrder() { var client = CreateFormRecognizerClient(); @@ -549,6 +564,7 @@ public async Task StartRecognizeContentWithReadingOrder() #region StartRecognizeReceipts [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeReceiptsCanAuthenticateWithTokenCredential() { var client = CreateFormRecognizerClient(useTokenCredential: true); @@ -581,6 +597,7 @@ public async Task StartRecognizeReceiptsCanAuthenticateWithTokenCredential() [RecordedTest] [TestCase(true)] [TestCase(false)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeReceiptsPopulatesExtractedReceiptJpg(bool useStream) { var client = CreateFormRecognizerClient(); @@ -692,6 +709,7 @@ public async Task StartRecognizeReceiptsPopulatesExtractedReceiptJpg(bool useStr [RecordedTest] [TestCase(true)] [TestCase(false)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeReceiptsPopulatesExtractedReceiptPng(bool useStream) { var client = CreateFormRecognizerClient(); @@ -806,6 +824,7 @@ public async Task StartRecognizeReceiptsPopulatesExtractedReceiptPng(bool useStr [RecordedTest] [TestCase(true)] [TestCase(false)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeReceiptsCanParseMultipageForm(bool useStream) { var client = CreateFormRecognizerClient(); @@ -860,6 +879,7 @@ public async Task StartRecognizeReceiptsCanParseMultipageForm(bool useStream) } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeReceiptsCanParseBlankPage() { var client = CreateFormRecognizerClient(); @@ -891,6 +911,7 @@ public async Task StartRecognizeReceiptsCanParseBlankPage() } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeReceiptsCanParseMultipageFormWithBlankPage() { var client = CreateFormRecognizerClient(); @@ -943,6 +964,7 @@ public async Task StartRecognizeReceiptsCanParseMultipageFormWithBlankPage() } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public void StartRecognizeReceiptsThrowsForDamagedFile() { var client = CreateFormRecognizerClient(); @@ -961,6 +983,7 @@ public void StartRecognizeReceiptsThrowsForDamagedFile() /// Recognizer cognitive service and handle returned errors. /// [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public void StartRecognizeReceiptsFromUriThrowsForNonExistingContent() { var client = CreateFormRecognizerClient(); @@ -971,6 +994,7 @@ public void StartRecognizeReceiptsFromUriThrowsForNonExistingContent() } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeReceiptsWithSupportedLocale() { var client = CreateFormRecognizerClient(); @@ -1007,6 +1031,7 @@ public async Task StartRecognizeReceiptsWithSupportedLocale() } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public void StartRecognizeReceiptsWithWrongLocale() { var client = CreateFormRecognizerClient(); @@ -1024,6 +1049,7 @@ public void StartRecognizeReceiptsWithWrongLocale() [RecordedTest] [TestCase("1", 1)] [TestCase("1-2", 2)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeReceiptsWithOnePageArgument(string pages, int expected) { var client = CreateFormRecognizerClient(); @@ -1043,6 +1069,7 @@ public async Task StartRecognizeReceiptsWithOnePageArgument(string pages, int ex [RecordedTest] [TestCase("1", "3", 2)] [TestCase("1-2", "3", 3)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeReceiptsWithMultiplePageArgument(string page1, string page2, int expected) { var client = CreateFormRecognizerClient(); @@ -1064,6 +1091,7 @@ public async Task StartRecognizeReceiptsWithMultiplePageArgument(string page1, s #region StartRecognizeBusinessCards [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeBusinessCardsCanAuthenticateWithTokenCredential() { var client = CreateFormRecognizerClient(useTokenCredential: true); @@ -1092,6 +1120,7 @@ public async Task StartRecognizeBusinessCardsCanAuthenticateWithTokenCredential( [RecordedTest] [TestCase(true)] [TestCase(false)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeBusinessCardsPopulatesExtractedJpg(bool useStream) { var client = CreateFormRecognizerClient(); @@ -1199,6 +1228,7 @@ public async Task StartRecognizeBusinessCardsPopulatesExtractedJpg(bool useStrea [RecordedTest] [TestCase(true)] [TestCase(false)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeBusinessCardsPopulatesExtractedPng(bool useStream) { var client = CreateFormRecognizerClient(); @@ -1304,6 +1334,7 @@ public async Task StartRecognizeBusinessCardsPopulatesExtractedPng(bool useStrea } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeBusinessCardsIncludeFieldElements() { var client = CreateFormRecognizerClient(); @@ -1328,6 +1359,7 @@ public async Task StartRecognizeBusinessCardsIncludeFieldElements() } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeBusinessCardsCanParseBlankPage() { var client = CreateFormRecognizerClient(); @@ -1360,6 +1392,7 @@ public async Task StartRecognizeBusinessCardsCanParseBlankPage() } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public void StartRecognizeBusinessCardsThrowsForDamagedFile() { var client = CreateFormRecognizerClient(); @@ -1378,6 +1411,7 @@ public void StartRecognizeBusinessCardsThrowsForDamagedFile() /// Recognizer cognitive service and handle returned errors. /// [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public void StartRecognizeBusinessCardsFromUriThrowsForNonExistingContent() { var client = CreateFormRecognizerClient(); @@ -1390,6 +1424,7 @@ public void StartRecognizeBusinessCardsFromUriThrowsForNonExistingContent() [RecordedTest] [TestCase(true)] [TestCase(false)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeBusinessCardsCanParseMultipageForm(bool useStream) { var client = CreateFormRecognizerClient(); @@ -1450,6 +1485,7 @@ public async Task StartRecognizeBusinessCardsCanParseMultipageForm(bool useStrea } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeBusinessCardsWithSupportedLocale() { var client = CreateFormRecognizerClient(); @@ -1486,6 +1522,7 @@ public async Task StartRecognizeBusinessCardsWithSupportedLocale() } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public void StartRecognizeBusinessCardsWithWrongLocale() { var client = CreateFormRecognizerClient(); @@ -1503,6 +1540,7 @@ public void StartRecognizeBusinessCardsWithWrongLocale() [RecordedTest] [TestCase("1", 1)] [TestCase("1-2", 2)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeBusinessCardsWithOnePageArgument(string pages, int expected) { var client = CreateFormRecognizerClient(); @@ -1522,6 +1560,7 @@ public async Task StartRecognizeBusinessCardsWithOnePageArgument(string pages, i [RecordedTest] [TestCase("1", "3", 2)] [TestCase("1-2", "3", 3)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeBusinessCardsWithMultiplePageArgument(string page1, string page2, int expected) { var client = CreateFormRecognizerClient(); @@ -1543,6 +1582,7 @@ public async Task StartRecognizeBusinessCardsWithMultiplePageArgument(string pag #region StartRecognizeInvoices [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeInvoicesCanAuthenticateWithTokenCredential() { var client = CreateFormRecognizerClient(useTokenCredential: true); @@ -1571,6 +1611,7 @@ public async Task StartRecognizeInvoicesCanAuthenticateWithTokenCredential() [RecordedTest] [TestCase(true)] [TestCase(false)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeInvoicesPopulatesExtractedJpg(bool useStream) { var client = CreateFormRecognizerClient(); @@ -1729,6 +1770,7 @@ public async Task StartRecognizeInvoicesPopulatesExtractedJpg(bool useStream) } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeInvoicesIncludeFieldElements() { var client = CreateFormRecognizerClient(); @@ -1753,6 +1795,7 @@ public async Task StartRecognizeInvoicesIncludeFieldElements() } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeInvoicesCanParseBlankPage() { var client = CreateFormRecognizerClient(); @@ -1786,6 +1829,7 @@ public async Task StartRecognizeInvoicesCanParseBlankPage() [RecordedTest] [TestCase(true)] [TestCase(false)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeInvoicesCanParseMultipageForm(bool useStream) { var client = CreateFormRecognizerClient(); @@ -1845,6 +1889,7 @@ public async Task StartRecognizeInvoicesCanParseMultipageForm(bool useStream) } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public void StartRecognizeInvoicesThrowsForDamagedFile() { var client = CreateFormRecognizerClient(); @@ -1863,6 +1908,7 @@ public void StartRecognizeInvoicesThrowsForDamagedFile() /// Recognizer cognitive service and handle returned errors. /// [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public void StartRecognizeInvoicesFromUriThrowsForNonExistingContent() { var client = CreateFormRecognizerClient(); @@ -1873,6 +1919,7 @@ public void StartRecognizeInvoicesFromUriThrowsForNonExistingContent() } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeInvoicesWithSupportedLocale() { var client = CreateFormRecognizerClient(); @@ -1909,6 +1956,7 @@ public async Task StartRecognizeInvoicesWithSupportedLocale() } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public void StartRecognizeInvoicesWithWrongLocale() { var client = CreateFormRecognizerClient(); @@ -1926,6 +1974,7 @@ public void StartRecognizeInvoicesWithWrongLocale() [RecordedTest] [TestCase("1", 1)] [TestCase("1-2", 2)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeInvoicesWithOnePageArgument(string pages, int expected) { var client = CreateFormRecognizerClient(); @@ -1946,6 +1995,7 @@ public async Task StartRecognizeInvoicesWithOnePageArgument(string pages, int ex [RecordedTest] [TestCase("1", "3", 2)] [TestCase("1-2", "3", 3)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeInvoicesWithMultiplePageArgument(string page1, string page2, int expected) { var client = CreateFormRecognizerClient(); @@ -1968,6 +2018,7 @@ public async Task StartRecognizeInvoicesWithMultiplePageArgument(string page1, s #region StartRecognizeIdDocuments [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeIdDocumentsCanAuthenticateWithTokenCredential() { var client = CreateFormRecognizerClient(useTokenCredential: true); @@ -1996,6 +2047,7 @@ public async Task StartRecognizeIdDocumentsCanAuthenticateWithTokenCredential() [RecordedTest] [TestCase(true)] [TestCase(false)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeIdDocumentsPopulatesExtractedIdDocumentJpg(bool useStream) { var client = CreateFormRecognizerClient(); @@ -2063,6 +2115,7 @@ public async Task StartRecognizeIdDocumentsPopulatesExtractedIdDocumentJpg(bool } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeIdDocumentsIncludeFieldElements() { var client = CreateFormRecognizerClient(); @@ -2087,6 +2140,7 @@ public async Task StartRecognizeIdDocumentsIncludeFieldElements() } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeIdDocumentsCanParseBlankPage() { var client = CreateFormRecognizerClient(); @@ -2104,6 +2158,7 @@ public async Task StartRecognizeIdDocumentsCanParseBlankPage() } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public void StartRecognizeIdDocumentsThrowsForDamagedFile() { var client = CreateFormRecognizerClient(); @@ -2122,6 +2177,7 @@ public void StartRecognizeIdDocumentsThrowsForDamagedFile() /// Recognizer cognitive service and handle returned errors. /// [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public void StartRecognizeIdDocumentsFromUriThrowsForNonExistingContent() { var client = CreateFormRecognizerClient(); @@ -2138,6 +2194,7 @@ public void StartRecognizeIdDocumentsFromUriThrowsForNonExistingContent() [RecordedTest] [TestCase(true)] [TestCase(false)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeCustomFormsCanAuthenticateWithTokenCredential(bool useTrainingLabels) { var client = CreateFormRecognizerClient(useTokenCredential: true); @@ -2187,6 +2244,7 @@ public async Task StartRecognizeCustomFormsCanAuthenticateWithTokenCredential(bo [TestCase(true, false)] [TestCase(false, true)] [TestCase(false, false)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeCustomFormsWithLabels(bool useStream, bool includeFieldElements) { var client = CreateFormRecognizerClient(); @@ -2244,6 +2302,7 @@ public async Task StartRecognizeCustomFormsWithLabels(bool useStream, bool inclu [RecordedTest] [TestCase(true)] [TestCase(false)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeCustomFormsWithLabelsAndSelectionMarks(bool includeFieldElements) { var client = CreateFormRecognizerClient(); @@ -2287,6 +2346,7 @@ public async Task StartRecognizeCustomFormsWithLabelsAndSelectionMarks(bool incl [RecordedTest] [TestCase(true)] [TestCase(false)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeCustomFormsWithLabelsCanParseMultipageForm(bool useStream) { var client = CreateFormRecognizerClient(); @@ -2344,6 +2404,7 @@ public async Task StartRecognizeCustomFormsWithLabelsCanParseMultipageForm(bool } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeCustomFormsWithLabelsCanParseBlankPage() { var client = CreateFormRecognizerClient(); @@ -2379,6 +2440,7 @@ public async Task StartRecognizeCustomFormsWithLabelsCanParseBlankPage() [RecordedTest] [TestCase(true)] [TestCase(false)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeCustomFormsWithLabelsCanParseMultipageFormWithBlankPage(bool useStream) { var client = CreateFormRecognizerClient(); @@ -2432,6 +2494,7 @@ public async Task StartRecognizeCustomFormsWithLabelsCanParseMultipageFormWithBl } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeCustomFormsWithLabelsCanParseDifferentTypeOfForm() { var client = CreateFormRecognizerClient(); @@ -2469,6 +2532,7 @@ public async Task StartRecognizeCustomFormsWithLabelsCanParseDifferentTypeOfForm [TestCase(true, false)] [TestCase(false, true)] [TestCase(false, false)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeCustomFormsWithoutLabels(bool useStream, bool includeFieldElements) { var client = CreateFormRecognizerClient(); @@ -2529,6 +2593,7 @@ public async Task StartRecognizeCustomFormsWithoutLabels(bool useStream, bool in [RecordedTest] [TestCase(true)] [TestCase(false, Ignore = "https://github.com/Azure/azure-sdk-for-net/issues/12319")] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeCustomFormsWithoutLabelsCanParseMultipageForm(bool useStream) { var client = CreateFormRecognizerClient(); @@ -2583,6 +2648,7 @@ public async Task StartRecognizeCustomFormsWithoutLabelsCanParseMultipageForm(bo } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeCustomFormsWithoutLabelsCanParseBlankPage() { var client = CreateFormRecognizerClient(); @@ -2619,6 +2685,7 @@ public async Task StartRecognizeCustomFormsWithoutLabelsCanParseBlankPage() [RecordedTest] [TestCase(true)] [TestCase(false, Ignore = "https://github.com/Azure/azure-sdk-for-net/issues/12319")] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeCustomFormsWithoutLabelsCanParseMultipageFormWithBlankPage(bool useStream) { var client = CreateFormRecognizerClient(); @@ -2683,6 +2750,7 @@ public async Task StartRecognizeCustomFormsWithoutLabelsCanParseMultipageFormWit [RecordedTest] [TestCase(true)] [TestCase(false)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeCustomFormsThrowsForDamagedFile(bool useTrainingLabels) { var client = CreateFormRecognizerClient(); @@ -2705,6 +2773,7 @@ public async Task StartRecognizeCustomFormsThrowsForDamagedFile(bool useTraining [RecordedTest] [TestCase(true)] [TestCase(false)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeCustomFormsFromUriThrowsForNonExistingContent(bool useTrainingLabels) { var client = CreateFormRecognizerClient(); @@ -2724,6 +2793,7 @@ public async Task StartRecognizeCustomFormsFromUriThrowsForNonExistingContent(bo [RecordedTest] [TestCase("1", 1)] [TestCase("1-2", 2)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeCustomFormsWithOnePageArgument(string pages, int expected) { var client = CreateFormRecognizerClient(); @@ -2745,6 +2815,7 @@ public async Task StartRecognizeCustomFormsWithOnePageArgument(string pages, int [RecordedTest] [TestCase("1", "3", 2)] [TestCase("1-2", "3", 3)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeCustomFormsWithMultiplePageArgument(string page1, string page2, int expected) { var client = CreateFormRecognizerClient(); @@ -2764,6 +2835,7 @@ public async Task StartRecognizeCustomFormsWithMultiplePageArgument(string page1 } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeCustomFormsWithTableVariableRows() { var client = CreateFormRecognizerClient(); @@ -2791,6 +2863,7 @@ public async Task StartRecognizeCustomFormsWithTableVariableRows() } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartRecognizeCustomFormsWithTableFixedRows() { var client = CreateFormRecognizerClient(); diff --git a/sdk/formrecognizer/Azure.AI.FormRecognizer/tests/FormTrainingClient/FormTrainingClientLiveTests.cs b/sdk/formrecognizer/Azure.AI.FormRecognizer/tests/FormTrainingClient/FormTrainingClientLiveTests.cs index 352d971cb1159..e1049eff21a74 100644 --- a/sdk/formrecognizer/Azure.AI.FormRecognizer/tests/FormTrainingClient/FormTrainingClientLiveTests.cs +++ b/sdk/formrecognizer/Azure.AI.FormRecognizer/tests/FormTrainingClient/FormTrainingClientLiveTests.cs @@ -25,8 +25,8 @@ public class FormTrainingClientLiveTests : FormRecognizerLiveTestBase /// Initializes a new instance of the class. /// /// A flag used by the Azure Core Test Framework to differentiate between tests for asynchronous and synchronous methods. - public FormTrainingClientLiveTests(bool isAsync) - : base(isAsync) + public FormTrainingClientLiveTests(bool isAsync, FormRecognizerClientOptions.ServiceVersion serviceVersion) + : base(isAsync, serviceVersion) { } @@ -72,6 +72,7 @@ public async Task StartTraining(bool singlePage, bool labeled) CustomFormModel model = operation.Value; Assert.IsNotNull(model.ModelId); + Assert.IsNull(model.ModelName); Assert.IsNotNull(model.Properties); Assert.IsFalse(model.Properties.IsComposedModel); Assert.IsNotNull(model.TrainingStartedOn); @@ -108,6 +109,7 @@ public async Task StartTraining(bool singlePage, bool labeled) [RecordedTest] [TestCase(true)] [TestCase(false)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task CheckFormTypeinSubmodelAndRecognizedForm(bool labeled) { var client = CreateFormTrainingClient(); @@ -135,6 +137,7 @@ public async Task CheckFormTypeinSubmodelAndRecognizedForm(bool labeled) [RecordedTest] [TestCase(false)] [TestCase(true)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartCreateComposedModel(bool useTokenCredential) { var client = CreateFormTrainingClient(useTokenCredential); @@ -203,6 +206,7 @@ public async Task StartCreateComposedModel(bool useTokenCredential) } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartCreateComposedModelFailsWithInvalidId() { var client = CreateFormTrainingClient(); @@ -245,6 +249,7 @@ public async Task StartTrainingFailsWithInvalidPrefix() } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartTrainingWithLabelsModelName() { var client = CreateFormTrainingClient(); @@ -260,6 +265,7 @@ public async Task StartTrainingWithLabelsModelName() } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task StartTrainingWithNoLabelsModelName() { var client = CreateFormTrainingClient(); @@ -401,6 +407,7 @@ public async Task CopyModel(bool useTokenCredential) } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task CopyModelWithLabelsAndModelName() { var sourceClient = CreateFormTrainingClient(); @@ -431,6 +438,7 @@ public async Task CopyModelWithLabelsAndModelName() [RecordedTest] [TestCase(true)] [TestCase(false)] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task CopyComposedModel(bool useTokenCredential) { var sourceClient = CreateFormTrainingClient(useTokenCredential); @@ -468,6 +476,7 @@ public async Task CopyComposedModel(bool useTokenCredential) } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task CopyModelWithoutLabelsAndModelName() { var sourceClient = CreateFormTrainingClient(); diff --git a/sdk/formrecognizer/Azure.AI.FormRecognizer/tests/Infrastructure/FormRecognizerLiveTestBase.cs b/sdk/formrecognizer/Azure.AI.FormRecognizer/tests/Infrastructure/FormRecognizerLiveTestBase.cs index 4b60690fa704e..3c736bd66ffa8 100644 --- a/sdk/formrecognizer/Azure.AI.FormRecognizer/tests/Infrastructure/FormRecognizerLiveTestBase.cs +++ b/sdk/formrecognizer/Azure.AI.FormRecognizer/tests/Infrastructure/FormRecognizerLiveTestBase.cs @@ -9,11 +9,21 @@ namespace Azure.AI.FormRecognizer.Tests { + [ClientTestFixture( + FormRecognizerClientOptions.ServiceVersion.V2_0, + FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public class FormRecognizerLiveTestBase : RecordedTestBase { - public FormRecognizerLiveTestBase(bool isAsync) + /// + /// The version of the REST API to test against. This will be passed + /// to the .ctor via ClientTestFixture's values. + /// + private readonly FormRecognizerClientOptions.ServiceVersion _serviceVersion; + + public FormRecognizerLiveTestBase(bool isAsync, FormRecognizerClientOptions.ServiceVersion serviceVersion) : base(isAsync) { + _serviceVersion = serviceVersion; Sanitizer = new FormRecognizerRecordedTestSanitizer(); } @@ -39,7 +49,7 @@ public FormRecognizerLiveTestBase(bool isAsync) protected FormRecognizerClient CreateFormRecognizerClient(out FormRecognizerClient nonInstrumentedClient, bool useTokenCredential = false, string apiKey = default) { var endpoint = new Uri(TestEnvironment.Endpoint); - var options = InstrumentClientOptions(new FormRecognizerClientOptions()); + var options = InstrumentClientOptions(new FormRecognizerClientOptions(_serviceVersion)); if (useTokenCredential) { @@ -77,7 +87,7 @@ protected FormRecognizerClient CreateFormRecognizerClient(out FormRecognizerClie protected FormTrainingClient CreateFormTrainingClient(out FormTrainingClient nonInstrumentedClient, bool useTokenCredential = false, string apiKey = default) { var endpoint = new Uri(TestEnvironment.Endpoint); - var options = InstrumentClientOptions(new FormRecognizerClientOptions()); + var options = InstrumentClientOptions(new FormRecognizerClientOptions(_serviceVersion)); if (useTokenCredential) { diff --git a/sdk/formrecognizer/Azure.AI.FormRecognizer/tests/Models/OperationsLiveTests.cs b/sdk/formrecognizer/Azure.AI.FormRecognizer/tests/Models/OperationsLiveTests.cs index 9467e6f278f2d..e61c201c66d45 100644 --- a/sdk/formrecognizer/Azure.AI.FormRecognizer/tests/Models/OperationsLiveTests.cs +++ b/sdk/formrecognizer/Azure.AI.FormRecognizer/tests/Models/OperationsLiveTests.cs @@ -24,8 +24,8 @@ public class OperationsLiveTests : FormRecognizerLiveTestBase /// Initializes a new instance of the class. /// /// A flag used by the Azure Core Test Framework to differentiate between tests for asynchronous and synchronous methods. - public OperationsLiveTests(bool isAsync) - : base(isAsync) + public OperationsLiveTests(bool isAsync, FormRecognizerClientOptions.ServiceVersion serviceVersion) + : base(isAsync, serviceVersion) { } @@ -60,6 +60,7 @@ public async Task RecognizeReceiptsOperationCanPollFromNewObject() } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task RecognizeInvoicesOperationCanPollFromNewObject() { var client = CreateFormRecognizerClient(out var nonInstrumentedClient); @@ -75,6 +76,7 @@ public async Task RecognizeInvoicesOperationCanPollFromNewObject() } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task RecognizeIdDocumentsOperationCanPollFromNewObject() { var client = CreateFormRecognizerClient(out var nonInstrumentedClient); @@ -126,6 +128,7 @@ public async Task TrainingOperationCanPollFromNewObject() } [RecordedTest] + [ServiceVersion(Min = FormRecognizerClientOptions.ServiceVersion.V2_1_Preview_3)] public async Task CreateComposedModelOperationCanPollFromNewObject() { var client = CreateFormTrainingClient(out var nonInstrumentedClient);