diff --git a/src/Storage/Storage.Management.Test/ScenarioTests/StorageBlobTests.cs b/src/Storage/Storage.Management.Test/ScenarioTests/StorageBlobTests.cs index 349d945ea14b..cba33c1ec6e0 100644 --- a/src/Storage/Storage.Management.Test/ScenarioTests/StorageBlobTests.cs +++ b/src/Storage/Storage.Management.Test/ScenarioTests/StorageBlobTests.cs @@ -12,107 +12,101 @@ // limitations under the License. // ---------------------------------------------------------------------------------- - -using Microsoft.Azure.ServiceManagement.Common.Models; using Microsoft.WindowsAzure.Commands.ScenarioTest; -using Microsoft.WindowsAzure.Commands.Test.Utilities.Common; using Xunit; using Xunit.Abstractions; namespace Microsoft.Azure.Commands.Management.Storage.Test.ScenarioTests { - public class StorageBlobTests : RMTestBase + public class StorageBlobTests : StorageTestRunner { - public XunitTracingInterceptor _logger; - public StorageBlobTests(ITestOutputHelper output) + : base(output) { - _logger = new XunitTracingInterceptor(output); - XunitTracingInterceptor.AddToContext(_logger); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestStorageBlobIsVersioningEnabled() { - TestController.NewInstance.RunPsTest(_logger, "Test-StorageBlobIsVersioningEnabled"); + TestRunner.RunTestScript("Test-StorageBlobIsVersioningEnabled"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestStorageBlobContainer() { - TestController.NewInstance.RunPsTest(_logger, "Test-StorageBlobContainer"); + TestRunner.RunTestScript("Test-StorageBlobContainer"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestStorageBlobContainerEncryptionScope() { - TestController.NewInstance.RunPsTest(_logger, "Test-StorageBlobContainerEncryptionScope"); - } + TestRunner.RunTestScript("Test-StorageBlobContainerEncryptionScope"); + } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestStorageBlobContainerLegalHold() { - TestController.NewInstance.RunPsTest(_logger, "Test-StorageBlobContainerLegalHold"); + TestRunner.RunTestScript("Test-StorageBlobContainerLegalHold"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestStorageBlobContainerImmutabilityPolicy() { - TestController.NewInstance.RunPsTest(_logger, "Test-StorageBlobContainerImmutabilityPolicy"); + TestRunner.RunTestScript("Test-StorageBlobContainerImmutabilityPolicy"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestStorageBlobServiceProperties() { - TestController.NewInstance.RunPsTest(_logger, "Test-StorageBlobServiceProperties"); - } + TestRunner.RunTestScript("Test-StorageBlobServiceProperties"); + } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestStorageBlobORS() { - TestController.NewInstance.RunPsTest(_logger, "Test-StorageBlobORS"); + TestRunner.RunTestScript("Test-StorageBlobORS"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestStorageBlobRestore() { - TestController.NewInstance.RunPsTest(_logger, "Test-StorageBlobRestore"); + TestRunner.RunTestScript("Test-StorageBlobRestore"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestStorageBlobChangeFeed() { - TestController.NewInstance.RunPsTest(_logger, "Test-StorageBlobChangeFeed"); + TestRunner.RunTestScript("Test-StorageBlobChangeFeed"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestStorageBlobContainerSoftDelete() { - TestController.NewInstance.RunPsTest(_logger, "Test-StorageBlobContainerSoftDelete"); + TestRunner.RunTestScript("Test-StorageBlobContainerSoftDelete"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestStorageBlobLastAccessTimeTracking() { - TestController.NewInstance.RunPsTest(_logger, "Test-StorageBlobLastAccessTimeTracking"); + TestRunner.RunTestScript("Test-StorageBlobLastAccessTimeTracking"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestStorageBlobContainerVLW() { - TestController.NewInstance.RunPsTest(_logger, "Test-StorageBlobContainerVLW"); + TestRunner.RunTestScript("Test-StorageBlobContainerVLW"); } } } diff --git a/src/Storage/Storage.Management.Test/ScenarioTests/StorageDataPlaneTests.cs b/src/Storage/Storage.Management.Test/ScenarioTests/StorageDataPlaneTests.cs index 25d6621cdee2..11a70125499d 100644 --- a/src/Storage/Storage.Management.Test/ScenarioTests/StorageDataPlaneTests.cs +++ b/src/Storage/Storage.Management.Test/ScenarioTests/StorageDataPlaneTests.cs @@ -12,83 +12,72 @@ // limitations under the License. // ---------------------------------------------------------------------------------- -using System; -using System.Collections; -using System.Collections.ObjectModel; -using System.Management.Automation; using Xunit; using Xunit.Abstractions; -using System.Diagnostics; -using Microsoft.Azure.ServiceManagement.Common.Models; using Microsoft.WindowsAzure.Commands.ScenarioTest; -using Microsoft.WindowsAzure.Commands.Test.Utilities.Common; -using Microsoft.Azure.Management.Internal.Resources; -using Microsoft.Azure.Management.Storage; using Microsoft.Rest.ClientRuntime.Azure.TestFramework; namespace Microsoft.Azure.Commands.Management.Storage.Test.ScenarioTests { - public class StorageDataPlaneTests : RMTestBase + public class StorageDataPlaneTests : StorageTestRunner { - public XunitTracingInterceptor _logger; private string resourceGroupName; private string storageAccountName; public StorageDataPlaneTests(ITestOutputHelper output) + : base(output) { resourceGroupName = TestUtilities.GenerateName(); storageAccountName = "sto" + resourceGroupName; - _logger = new XunitTracingInterceptor(output); - XunitTracingInterceptor.AddToContext(_logger); } [Fact] [Trait(Category.RunType, Category.LiveOnly)] public void TestBlob() { - TestController.NewInstance.RunPsTest(_logger, $"Test-Blob -ResourceGroupName \"{resourceGroupName}\" -StorageAccountName \"{storageAccountName}\""); + TestRunner.RunTestScript($"Test-Blob -ResourceGroupName \"{resourceGroupName}\" -StorageAccountName \"{storageAccountName}\""); } [Fact] [Trait(Category.RunType, Category.LiveOnly)] public void TestFile() { - TestController.NewInstance.RunPsTest(_logger, $"Test-File -ResourceGroupName \"{resourceGroupName}\" -StorageAccountName \"{storageAccountName}\""); + TestRunner.RunTestScript($"Test-File -ResourceGroupName \"{resourceGroupName}\" -StorageAccountName \"{storageAccountName}\""); } [Fact] [Trait(Category.RunType, Category.LiveOnly)] public void TestBlobFileCopy() { - TestController.NewInstance.RunPsTest(_logger, $"Test-BlobFileCopy -ResourceGroupName \"{resourceGroupName}\" -StorageAccountName \"{storageAccountName}\""); + TestRunner.RunTestScript($"Test-BlobFileCopy -ResourceGroupName \"{resourceGroupName}\" -StorageAccountName \"{storageAccountName}\""); } [Fact] [Trait(Category.RunType, Category.LiveOnly)] public void TestTable() { - TestController.NewInstance.RunPsTest(_logger, $"Test-Table -ResourceGroupName \"{resourceGroupName}\" -StorageAccountName \"{storageAccountName}\""); + TestRunner.RunTestScript($"Test-Table -ResourceGroupName \"{resourceGroupName}\" -StorageAccountName \"{storageAccountName}\""); } [Fact] [Trait(Category.RunType, Category.LiveOnly)] public void TestQueue() { - TestController.NewInstance.RunPsTest(_logger, $"Test-Queue -ResourceGroupName \"{resourceGroupName}\" -StorageAccountName \"{storageAccountName}\""); + TestRunner.RunTestScript($"Test-Queue -ResourceGroupName \"{resourceGroupName}\" -StorageAccountName \"{storageAccountName}\""); } [Fact] [Trait(Category.RunType, Category.LiveOnly)] public void TestCommon() { - TestController.NewInstance.RunPsTest(_logger, $"Test-Common -ResourceGroupName \"{resourceGroupName}\" -StorageAccountName \"{storageAccountName}\""); + TestRunner.RunTestScript($"Test-Common -ResourceGroupName \"{resourceGroupName}\" -StorageAccountName \"{storageAccountName}\""); } [Fact] [Trait(Category.RunType, Category.LiveOnly)] public void TestDatalakeGen2() { - TestController.NewInstance.RunPsTest(_logger, $"Test-DatalakeGen2 -ResourceGroupName \"{resourceGroupName}\" -StorageAccountName \"{storageAccountName}\""); + TestRunner.RunTestScript($"Test-DatalakeGen2 -ResourceGroupName \"{resourceGroupName}\" -StorageAccountName \"{storageAccountName}\""); } } } diff --git a/src/Storage/Storage.Management.Test/ScenarioTests/StorageFileTests.cs b/src/Storage/Storage.Management.Test/ScenarioTests/StorageFileTests.cs index 3ec4a81bff94..2c5f80c9f29b 100644 --- a/src/Storage/Storage.Management.Test/ScenarioTests/StorageFileTests.cs +++ b/src/Storage/Storage.Management.Test/ScenarioTests/StorageFileTests.cs @@ -12,65 +12,59 @@ // limitations under the License. // ---------------------------------------------------------------------------------- - -using Microsoft.Azure.ServiceManagement.Common.Models; using Microsoft.WindowsAzure.Commands.ScenarioTest; -using Microsoft.WindowsAzure.Commands.Test.Utilities.Common; using Xunit; using Xunit.Abstractions; namespace Microsoft.Azure.Commands.Management.Storage.Test.ScenarioTests { - public class StorageFileTests : RMTestBase + public class StorageFileTests : StorageTestRunner { - public XunitTracingInterceptor _logger; - public StorageFileTests(ITestOutputHelper output) + : base(output) { - _logger = new XunitTracingInterceptor(output); - XunitTracingInterceptor.AddToContext(_logger); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestStorageFileShare() { - TestController.NewInstance.RunPsTest(_logger, "Test-StorageFileShare"); + TestRunner.RunTestScript("Test-StorageFileShare"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestStorageFileShareGetUsage() { - TestController.NewInstance.RunPsTest(_logger, "Test-StorageFileShareGetUsage"); + TestRunner.RunTestScript("Test-StorageFileShareGetUsage"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestShareSoftDeletee() { - TestController.NewInstance.RunPsTest(_logger, "Test-ShareSoftDelete"); + TestRunner.RunTestScript("Test-ShareSoftDelete"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestShareSnapshot() { - TestController.NewInstance.RunPsTest(_logger, "Test-ShareSnapshot"); + TestRunner.RunTestScript("Test-ShareSnapshot"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestFileServiceProperties() { - TestController.NewInstance.RunPsTest(_logger, "Test-FileServiceProperties"); + TestRunner.RunTestScript("Test-FileServiceProperties"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestAzureStorageShareNFS() { - TestController.NewInstance.RunPsTest(_logger, "Test-AzureStorageShareNFS"); - } + TestRunner.RunTestScript("Test-AzureStorageShareNFS"); + } } } diff --git a/src/Storage/Storage.Management.Test/ScenarioTests/StorageTestRunner.cs b/src/Storage/Storage.Management.Test/ScenarioTests/StorageTestRunner.cs index a444bee9af49..a0b7d8e353c3 100644 --- a/src/Storage/Storage.Management.Test/ScenarioTests/StorageTestRunner.cs +++ b/src/Storage/Storage.Management.Test/ScenarioTests/StorageTestRunner.cs @@ -13,6 +13,7 @@ // ---------------------------------------------------------------------------------- using Microsoft.Azure.Commands.TestFx; +using System.Collections.Generic; using Xunit.Abstractions; namespace Microsoft.Azure.Commands.Management.Storage.Test @@ -28,13 +29,26 @@ protected StorageTestRunner(ITestOutputHelper output) .WithProjectSubfolderForTests("ScenarioTests") .WithCommonPsScripts(new[] { - @"Common.ps1", @"../AzureRM.Resources.ps1" + @"Common.ps1", + @"../AzureRM.Resources.ps1" }) .WithNewRmModules(helper => new[] { helper.RMProfileModule, helper.RMStorageModule }) + .WithNewRecordMatcherArguments( + userAgentsToIgnore: new Dictionary + { + {"Microsoft.Azure.Management.Resources.ResourceManagementClient", "2016-02-01"} + }, + resourceProviders: new Dictionary + { + {"Microsoft.Resources", null}, + {"Microsoft.Features", null}, + {"Microsoft.Authorization", null} + } + ) .Build(); } } diff --git a/src/Storage/Storage.Management.Test/TestController.cs b/src/Storage/Storage.Management.Test/TestController.cs deleted file mode 100644 index 1c15ab78b345..000000000000 --- a/src/Storage/Storage.Management.Test/TestController.cs +++ /dev/null @@ -1,130 +0,0 @@ -// ---------------------------------------------------------------------------------- -// -// Copyright Microsoft Corporation -// 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. -// See the License for the specific language governing permissions and -// limitations under the License. -// ---------------------------------------------------------------------------------- - -using Microsoft.Azure.Commands.Common.Authentication; -using Microsoft.Azure.Management.Storage; -using Microsoft.Azure.Test.HttpRecorder; -using Microsoft.Rest.ClientRuntime.Azure.TestFramework; -using Microsoft.WindowsAzure.Commands.ScenarioTest; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Linq; -using Microsoft.Azure.Management.Internal.Resources; -using Microsoft.Azure.ServiceManagement.Common.Models; - -namespace Microsoft.Azure.Commands.Management.Storage.Test.ScenarioTests -{ - public class TestController - { - private readonly EnvironmentSetupHelper _helper; - - public ResourceManagementClient ResourceManagementClient { get; private set; } - - public StorageManagementClient StorageClient { get; private set; } - - - public static TestController NewInstance => new TestController(); - - public TestController() - { - _helper = new EnvironmentSetupHelper(); - } - - public void RunPsTest(XunitTracingInterceptor logger, params string[] scripts) - { - var sf = new StackTrace().GetFrame(1); - var callingClassType = sf.GetMethod().ReflectedType?.ToString(); - var mockName = sf.GetMethod().Name; - - _helper.TracingInterceptor = logger; - - RunPsTestWorkflow( - () => scripts, - // no custom cleanup - null, - callingClassType, - mockName); - } - - public void RunPsTestWorkflow( - Func scriptBuilder, - Action cleanup, - string callingClassType, - string mockName) - { - 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); - - var callingClassName = callingClassType.Split(new[] { "." }, StringSplitOptions.RemoveEmptyEntries).Last(); - _helper.SetupModules(AzureModule.AzureResourceManager, - _helper.RMProfileModule, - _helper.RMStorageModule, - "ScenarioTests\\Common.ps1", - "ScenarioTests\\" + callingClassName + ".ps1", - "AzureRM.Resources.ps1"); - - try - { - var psScripts = scriptBuilder?.Invoke(); - if (psScripts != null) - { - _helper.RunPowerShellTest(psScripts); - } - } - finally - { - cleanup?.Invoke(); - } - } - } - - private void SetupManagementClients(MockContext context) - { - ResourceManagementClient = GetResourceManagementClient(context); - StorageClient = GetStorageManagementClient(context); - - _helper.SetupManagementClients( - ResourceManagementClient, - StorageClient); - } - - private static ResourceManagementClient GetResourceManagementClient(MockContext context) - { - return context.GetServiceClient(TestEnvironmentFactory.GetTestEnvironment()); - } - - private static StorageManagementClient GetStorageManagementClient(MockContext context) - { - return context.GetServiceClient(TestEnvironmentFactory.GetTestEnvironment()); - } - } -}