diff --git a/sdk/storage/Azure.Storage.DataMovement.Blobs/src/Azure.Storage.DataMovement.Blobs.csproj b/sdk/storage/Azure.Storage.DataMovement.Blobs/src/Azure.Storage.DataMovement.Blobs.csproj index 7307e2e85bb5..b4fdfe379725 100644 --- a/sdk/storage/Azure.Storage.DataMovement.Blobs/src/Azure.Storage.DataMovement.Blobs.csproj +++ b/sdk/storage/Azure.Storage.DataMovement.Blobs/src/Azure.Storage.DataMovement.Blobs.csproj @@ -49,6 +49,7 @@ + diff --git a/sdk/storage/Azure.Storage.DataMovement.Blobs/src/BlobStorageResourceContainer.cs b/sdk/storage/Azure.Storage.DataMovement.Blobs/src/BlobStorageResourceContainer.cs index 7928187f30e6..5d12996b35e4 100644 --- a/sdk/storage/Azure.Storage.DataMovement.Blobs/src/BlobStorageResourceContainer.cs +++ b/sdk/storage/Azure.Storage.DataMovement.Blobs/src/BlobStorageResourceContainer.cs @@ -15,7 +15,7 @@ namespace Azure.Storage.DataMovement.Blobs /// /// The Storage Resource class for the Blob Client. Supports blob prefix directories as well as the root container. /// - internal class BlobStorageResourceContainer : StorageResourceContainer + internal class BlobStorageResourceContainer : StorageResourceContainerInternal { internal BlobContainerClient BlobContainerClient { get; } internal string DirectoryPrefix { get; } diff --git a/sdk/storage/Azure.Storage.DataMovement.Files.Shares/src/Azure.Storage.DataMovement.Files.Shares.csproj b/sdk/storage/Azure.Storage.DataMovement.Files.Shares/src/Azure.Storage.DataMovement.Files.Shares.csproj index a2e444e50928..239be80bfc73 100644 --- a/sdk/storage/Azure.Storage.DataMovement.Files.Shares/src/Azure.Storage.DataMovement.Files.Shares.csproj +++ b/sdk/storage/Azure.Storage.DataMovement.Files.Shares/src/Azure.Storage.DataMovement.Files.Shares.csproj @@ -31,6 +31,9 @@ + + + diff --git a/sdk/storage/Azure.Storage.DataMovement.Files.Shares/src/ShareDirectoryStorageResourceContainer.cs b/sdk/storage/Azure.Storage.DataMovement.Files.Shares/src/ShareDirectoryStorageResourceContainer.cs index b9ef8b908b43..af427815b399 100644 --- a/sdk/storage/Azure.Storage.DataMovement.Files.Shares/src/ShareDirectoryStorageResourceContainer.cs +++ b/sdk/storage/Azure.Storage.DataMovement.Files.Shares/src/ShareDirectoryStorageResourceContainer.cs @@ -11,7 +11,7 @@ namespace Azure.Storage.DataMovement.Files.Shares { - internal class ShareDirectoryStorageResourceContainer : StorageResourceContainer + internal class ShareDirectoryStorageResourceContainer : StorageResourceContainerInternal { internal ShareFileStorageResourceOptions ResourceOptions { get; set; } internal PathScanner PathScanner { get; set; } @@ -47,20 +47,5 @@ protected override async IAsyncEnumerable GetStorageResourcesAs yield return new ShareFileStorageResourceItem(client, ResourceOptions); } } - - #region Protected Hooks - // Internal func to access protected member for testing. - internal async IAsyncEnumerable GetStorageResourcesInternal( - [EnumeratorCancellation] CancellationToken cancellationToken = default) - { - await foreach (StorageResource resource in GetStorageResourcesAsync(cancellationToken).ConfigureAwait(false)) - { - yield return resource; - } - } - - internal StorageResourceItem GetStorageResourceReferenceInternal(string path) - => GetStorageResourceReference(path); - #endregion } } diff --git a/sdk/storage/Azure.Storage.DataMovement.Files.Shares/tests/ShareDirectoryStorageResourceContainerTests.cs b/sdk/storage/Azure.Storage.DataMovement.Files.Shares/tests/ShareDirectoryStorageResourceContainerTests.cs index c69f7fb5d429..ddd8c483a04b 100644 --- a/sdk/storage/Azure.Storage.DataMovement.Files.Shares/tests/ShareDirectoryStorageResourceContainerTests.cs +++ b/sdk/storage/Azure.Storage.DataMovement.Files.Shares/tests/ShareDirectoryStorageResourceContainerTests.cs @@ -49,7 +49,7 @@ public async Task GetStorageResourcesCallsPathScannerCorrectly() // Verify StorageResourceContainer correctly invokes path scanner and returns the given files List results = new(); - await foreach (StorageResource res in resource.GetStorageResourcesInternal()) + await foreach (StorageResource res in resource.GetStorageResourcesInternalAsync()) { Assert.That(res, Is.TypeOf(typeof(ShareFileStorageResourceItem))); results.Add((res as ShareFileStorageResourceItem).ShareFileClient); diff --git a/sdk/storage/Azure.Storage.DataMovement/src/Shared/StorageResourceContainerInternal.cs b/sdk/storage/Azure.Storage.DataMovement/src/Shared/StorageResourceContainerInternal.cs new file mode 100644 index 000000000000..9aeb4e0d5b90 --- /dev/null +++ b/sdk/storage/Azure.Storage.DataMovement/src/Shared/StorageResourceContainerInternal.cs @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System.Collections.Generic; +using System.Threading; + +namespace Azure.Storage.DataMovement +{ + /// + /// Middle class between the public type and implementation class. + /// Gives internal hook methods to protected methods of + /// , allowing for internal + /// package use as well as testing access. + /// + internal abstract class StorageResourceContainerInternal : StorageResourceContainer + { + internal IAsyncEnumerable GetStorageResourcesInternalAsync( + CancellationToken cancellationToken = default) + => GetStorageResourcesAsync(cancellationToken); + + internal StorageResourceItem GetStorageResourceReferenceInternal(string path) + => GetStorageResourceReference(path); + } +}