diff --git a/src/ApiManagement/ApiManagement.ServiceManagement.Test/ScenarioTests/ApiManagementTests.cs b/src/ApiManagement/ApiManagement.ServiceManagement.Test/ScenarioTests/ApiManagementTests.cs index 3685c52c30c9..8aae044715c1 100644 --- a/src/ApiManagement/ApiManagement.ServiceManagement.Test/ScenarioTests/ApiManagementTests.cs +++ b/src/ApiManagement/ApiManagement.ServiceManagement.Test/ScenarioTests/ApiManagementTests.cs @@ -1,11 +1,11 @@ -// +// // Copyright (c) Microsoft. All rights reserved. -// +// // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -22,27 +22,48 @@ using Microsoft.WindowsAzure.Commands.ScenarioTest; using Microsoft.WindowsAzure.Commands.Test.Utilities.Common; using Xunit; +using Microsoft.Azure.Commands.TestFx; +using Xunit.Abstractions; namespace Microsoft.Azure.Commands.ApiManagement.ServiceManagement.Test.ScenarioTests { using Microsoft.Azure.ServiceManagement.Common.Models; using ApiManagementClient = Management.ApiManagement.ApiManagementClient; - public class ApiManagementTests : RMTestBase + public class ApiManagementTestRunner + { + protected readonly ITestRunner TestRunner; + + protected ApiManagementTestRunner(ITestOutputHelper output) + { + TestRunner = TestManager.CreateInstance (output) + .WithNewPsScriptFilename ($"{GetType().Name}.ps1") + .WithProjectSubfolderForTests ("ScenarioTests") + .WithCommonPsScripts (new[] + { + @"Common.ps1" + }) + .WithNewRmModules (helper => new[] + { + helper.RMProfileModule, + helper.GetRMModulePath("Az.ApiManagement.psd1") + }) + .WithManagementClients( + ApiManagementHelper.GetApiManagementClient, + ApiManagementHelper.GetResourceManagementClient + ) + .Build(); + } + } + + public class ApiManagementTests : ApiManagementTestRunner { - private readonly EnvironmentSetupHelper _helper; public string Location { get; set; } public string ResourceGroupName { get; set; } public string ApiManagementServiceName { get; set; } - public ApiManagementTests(Xunit.Abstractions.ITestOutputHelper output) + public ApiManagementTests(Xunit.Abstractions.ITestOutputHelper output) : base(output) { - _helper = new EnvironmentSetupHelper - { - TracingInterceptor = new XunitTracingInterceptor(output) - }; - XunitTracingInterceptor.AddToContext(_helper.TracingInterceptor); - using (var context = MockContext.Start("ApiManagementTests", "CreateApiManagementService")) { var resourceManagementClient = ApiManagementHelper.GetResourceManagementClient(context); @@ -60,266 +81,247 @@ public ApiManagementTests(Xunit.Abstractions.ITestOutputHelper output) } } + public string[] ConvertScriptName(params string[] scripts) + { + return scripts.Select(s => s + $" {ResourceGroupName} {ApiManagementServiceName}").ToArray(); + } + [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void ApiCrudTest() { - RunPowerShellTest("Api-CrudTest"); + TestRunner.RunTestScript(ConvertScriptName("Api-CrudTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] - public void ApiCloneCrudTest() + public void ApiCloneCrudTest() { - RunPowerShellTest("ApiClone-Test"); - } + TestRunner.RunTestScript(ConvertScriptName("ApiClone-Test")); + } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void ApiImportExportWadlTest() { - RunPowerShellTest("Api-ImportExportWadlTest"); + TestRunner.RunTestScript(ConvertScriptName("Api-ImportExportWadlTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void ApiImportExportSwaggerTest() { - RunPowerShellTest("Api-ImportExportSwaggerTest"); + TestRunner.RunTestScript(ConvertScriptName("Api-ImportExportSwaggerTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void ApiImportExportWsdlTest() { - RunPowerShellTest("Api-ImportExportWsdlTest"); + TestRunner.RunTestScript(ConvertScriptName("Api-ImportExportWsdlTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void ApiImportExportOpenApiTest() { - RunPowerShellTest("Api-ImportExportOpenApiTest"); + TestRunner.RunTestScript(ConvertScriptName("Api-ImportExportOpenApiTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void ApiImportExportOpenApiJsonTest() { - RunPowerShellTest("Api-ImportExportOpenApiJsonTest"); + TestRunner.RunTestScript(ConvertScriptName("Api-ImportExportOpenApiJsonTest")); } - + [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void ApiSchemaCrudOnSwaggerApiTest() { - RunPowerShellTest("ApiSchema-SwaggerCRUDTest"); + TestRunner.RunTestScript(ConvertScriptName("ApiSchema-SwaggerCRUDTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void ApiSchemaCrudOnWsdlApiTest() { - RunPowerShellTest("ApiSchema-WsdlCRUDTest"); + TestRunner.RunTestScript(ConvertScriptName("ApiSchema-WsdlCRUDTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void OperationsCrudTest() { - RunPowerShellTest("Operations-CrudTest"); + TestRunner.RunTestScript(ConvertScriptName("Operations-CrudTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void ProductCrudTest() { - RunPowerShellTest("Product-CrudTest"); + TestRunner.RunTestScript(ConvertScriptName("Product-CrudTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void SubscriptionOldModelCrudTest() { - RunPowerShellTest("SubscriptionOldModel-CrudTest"); + TestRunner.RunTestScript(ConvertScriptName("SubscriptionOldModel-CrudTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void SubscriptionNewModelCrudTest() { - RunPowerShellTest("SubscriptionNewModel-CrudTest"); + TestRunner.RunTestScript(ConvertScriptName("SubscriptionNewModel-CrudTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void UserCrudTest() { - RunPowerShellTest("User-CrudTest"); + TestRunner.RunTestScript(ConvertScriptName("User-CrudTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void GroupCrudTest() { - RunPowerShellTest("Group-CrudTest"); + TestRunner.RunTestScript(ConvertScriptName("Group-CrudTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void PolicyCrudTest() { - RunPowerShellTest("Policy-CrudTest"); + TestRunner.RunTestScript(ConvertScriptName("Policy-CrudTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void CertificateCrudTest() { - RunPowerShellTest("Certificate-CrudTest"); + TestRunner.RunTestScript(ConvertScriptName("Certificate-CrudTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void AuthorizationServerCrudTest() { - RunPowerShellTest("AuthorizationServer-CrudTest"); + TestRunner.RunTestScript(ConvertScriptName("AuthorizationServer-CrudTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void LoggerCrudTest() { - RunPowerShellTest("Logger-CrudTest"); + TestRunner.RunTestScript(ConvertScriptName("Logger-CrudTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void GatewayCrudTest() { - RunPowerShellTest("Gateway-CrudTest"); + TestRunner.RunTestScript(ConvertScriptName("Gateway-CrudTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void PropertiesCrudTest() { - RunPowerShellTest("Properties-CrudTest"); + TestRunner.RunTestScript(ConvertScriptName("Properties-CrudTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void OpenIdConnectProviderCrudTest() { - RunPowerShellTest("OpenIdConnectProvider-CrudTest"); + TestRunner.RunTestScript(ConvertScriptName("OpenIdConnectProvider-CrudTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void IdentityProviderAadB2CCrudTest() { - RunPowerShellTest("IdentityProvider-AadB2C-CrudTest"); + TestRunner.RunTestScript(ConvertScriptName("IdentityProvider-AadB2C-CrudTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void IdentityProviderCrudTest() { - RunPowerShellTest("IdentityProvider-CrudTest"); + TestRunner.RunTestScript(ConvertScriptName("IdentityProvider-CrudTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TenantGitConfCrudTest() { - RunPowerShellTest("TenantGitConfiguration-CrudTest"); + TestRunner.RunTestScript(ConvertScriptName("TenantGitConfiguration-CrudTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TenantAccessConfCrudTest() { - RunPowerShellTest("TenantAccessConfiguration-CrudTest"); + TestRunner.RunTestScript(ConvertScriptName("TenantAccessConfiguration-CrudTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void BackendCrudTest() { - RunPowerShellTest("Backend-CrudTest"); + TestRunner.RunTestScript(ConvertScriptName("Backend-CrudTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void BackendServiceFabricCrudTest() { - RunPowerShellTest("BackendServiceFabric-CrudTest"); + TestRunner.RunTestScript(ConvertScriptName("BackendServiceFabric-CrudTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void ApiVersionSetImportCrudTest() { - RunPowerShellTest("ApiVersionSet-ImportCrudTest"); + TestRunner.RunTestScript(ConvertScriptName("ApiVersionSet-ImportCrudTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void ApiVersionSetCrudTest() { - RunPowerShellTest("ApiVersionSet-SetCrudTest"); + TestRunner.RunTestScript(ConvertScriptName("ApiVersionSet-SetCrudTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void ApiRevisionCrudTest() { - RunPowerShellTest("ApiRevision-CrudTest"); + TestRunner.RunTestScript(ConvertScriptName("ApiRevision-CrudTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void CacheCrudTest() { - RunPowerShellTest("Cache-CrudTest"); + TestRunner.RunTestScript(ConvertScriptName("Cache-CrudTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void DiagnosticCrudTest() { - RunPowerShellTest("Diagnostic-CrudTest"); + TestRunner.RunTestScript(ConvertScriptName("Diagnostic-CrudTest")); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void ApiDiagnosticCrudTest() { - RunPowerShellTest("ApiDiagnostic-CrudTest"); - } - - private void RunPowerShellTest(params string[] scripts) - { - var sf = new StackTrace().GetFrame(1); - var callingClassType = sf.GetMethod().ReflectedType?.ToString(); - var mockName = sf.GetMethod().Name; - - HttpMockServer.RecordsDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SessionRecords"); - - using (var context = MockContext.Start(callingClassType, mockName)) - { - _helper.SetupSomeOfManagementClients(context.GetServiceClient(TestEnvironmentFactory.GetTestEnvironment())); - - _helper.SetupEnvironment(AzureModule.AzureResourceManager); - _helper.SetupModules(AzureModule.AzureResourceManager, - "ScenarioTests\\Common.ps1", - "ScenarioTests\\" + GetType().Name + ".ps1", - _helper.RMProfileModule, - _helper.GetRMModulePath(@"AzureRM.ApiManagement.psd1")); - - scripts = scripts.Select(s => s + $" {ResourceGroupName} {ApiManagementServiceName}").ToArray(); - _helper.RunPowerShellTest(scripts); - } + TestRunner.RunTestScript(ConvertScriptName("ApiDiagnostic-CrudTest")); } } } \ No newline at end of file diff --git a/src/ApiManagement/ApiManagement.Test/ScenarioTests/ApiManagementTests.cs b/src/ApiManagement/ApiManagement.Test/ScenarioTests/ApiManagementTests.cs index 10543f8df6e0..c286c771459d 100644 --- a/src/ApiManagement/ApiManagement.Test/ScenarioTests/ApiManagementTests.cs +++ b/src/ApiManagement/ApiManagement.Test/ScenarioTests/ApiManagementTests.cs @@ -26,31 +26,50 @@ using TestEnvironmentFactory = Microsoft.Rest.ClientRuntime.Azure.TestFramework.TestEnvironmentFactory; using ResourceManagementClient = Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient; using Xunit; +using Microsoft.Azure.Commands.TestFx; +using Xunit.Abstractions; namespace Microsoft.Azure.Commands.ApiManagement.Test.ScenarioTests { using ApiManagementClient = Management.ApiManagement.ApiManagementClient; - public class ApiManagementTests : RMTestBase + public class ApiManagementTestRunner { - private readonly EnvironmentSetupHelper _helper; + protected readonly ITestRunner TestRunner; - public ApiManagementTests(Xunit.Abstractions.ITestOutputHelper output) + protected ApiManagementTestRunner(ITestOutputHelper output) { - _helper = new EnvironmentSetupHelper - { - TracingInterceptor = new XunitTracingInterceptor(output) - }; - XunitTracingInterceptor.AddToContext(_helper.TracingInterceptor); - } - - protected void SetupManagementClients(MockContext context) - { - var resourceManagementClient = GetResourceManagementClient(context); - var armStorageManagementClient = GetArmStorageManagementClient(context); - var apiManagementClient = GetApiManagementManagementClient(context); - - _helper.SetupSomeOfManagementClients(resourceManagementClient, armStorageManagementClient, apiManagementClient); + TestRunner = TestManager.CreateInstance (output) + .WithNewPsScriptFilename ($"{GetType().Name}.ps1") + .WithProjectSubfolderForTests ("ScenarioTests") + .WithCommonPsScripts (new[] + { + @"Common.ps1", + @"../AzureRM.Storage.ps1", + @"../AzureRM.Resources.ps1" + }) + .WithNewRmModules (helper => new[] + { + helper.RMProfileModule, + helper.GetRMModulePath("Az.ApiManagement.psd1") + }) + .WithNewRecordMatcherArguments ( + userAgentsToIgnore: new Dictionary + { + {"Microsoft.Azure.Management.Resources.ResourceManagementClient", "2016-02-01"}, + }, + resourceProviders: new Dictionary + { + {"Microsoft.Resources", null}, + {"Microsoft.Features", null}, + {"Microsoft.Authorization", null} + } + ).WithManagementClients( + GetResourceManagementClient, + GetArmStorageManagementClient, + GetApiManagementManagementClient + ) + .Build(); } private static StorageManagementClient GetArmStorageManagementClient(MockContext context) @@ -67,12 +86,19 @@ private static ApiManagementClient GetApiManagementManagementClient(MockContext { return context.GetServiceClient(TestEnvironmentFactory.GetTestEnvironment()); } + } + + public class ApiManagementTests : ApiManagementTestRunner + { + public ApiManagementTests(Xunit.Abstractions.ITestOutputHelper output) : base(output) + { + } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestCrudApiManagement() { - RunPowerShellTest("Test-CrudApiManagement"); + TestRunner.RunTestScript("Test-CrudApiManagement"); } #if NETSTANDARD @@ -84,64 +110,28 @@ public void TestCrudApiManagement() [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestBackupRestoreApiManagement() { - RunPowerShellTest("Test-BackupRestoreApiManagement"); + TestRunner.RunTestScript("Test-BackupRestoreApiManagement"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestApiManagementHostnamesCrud() { - RunPowerShellTest("Test-ApiManagementHostnamesCRUD"); + TestRunner.RunTestScript("Test-ApiManagementHostnamesCRUD"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestCrudApiManagementWithVirtualNetwork() { - RunPowerShellTest("Test-ApiManagementVirtualNetworkCRUD"); + TestRunner.RunTestScript("Test-ApiManagementVirtualNetworkCRUD"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestCrudApiManagementWithAdditionalRegions() { - RunPowerShellTest("Test-ApiManagementWithAdditionalRegionsCRUD"); - } - - private void RunPowerShellTest(params string[] scripts) - { - var sf = new StackTrace().GetFrame(1); - var callingClassType = sf.GetMethod().ReflectedType?.ToString(); - var mockName = sf.GetMethod().Name; - - var d = new Dictionary - { - {"Microsoft.Resources", null}, - {"Microsoft.Features", null}, - {"Microsoft.Authorization", null} - }; - var providersToIgnore = new Dictionary - { - {"Microsoft.Azure.Management.Resources.ResourceManagementClient", "2016-02-01"} - }; - HttpMockServer.Matcher = new PermissiveRecordMatcherWithApiExclusion(true, d, providersToIgnore); - HttpMockServer.RecordsDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SessionRecords"); - - using (var context = MockContext.Start(callingClassType, mockName)) - { - SetupManagementClients(context); - - _helper.SetupEnvironment(AzureModule.AzureResourceManager); - _helper.SetupModules(AzureModule.AzureResourceManager, - "ScenarioTests\\Common.ps1", - "ScenarioTests\\" + GetType().Name + ".ps1", - _helper.RMProfileModule, - _helper.GetRMModulePath("AzureRM.ApiManagement.psd1"), - "AzureRM.Storage.ps1", - "AzureRM.Resources.ps1"); - - _helper.RunPowerShellTest(scripts); - } + TestRunner.RunTestScript("Test-ApiManagementWithAdditionalRegionsCRUD"); } } } \ No newline at end of file