public async Task GetEncryptionKeyVersionsTest()

in DeviceBridgeTests/Providers/SecretsProviderTests.cs [97:139]


        public async Task GetEncryptionKeyVersionsTest()
        {
            // Test to make sure GetEncryptionKeyVersions gets all pages
            using (ShimsContext.Create())
            {
                Microsoft.Azure.KeyVault.Models.Fakes.ShimSecretItem.AllInstances.IdentifierGet = (@this) => new SecretIdentifier(TestConstants.KeyvaultUrl, "name", "version" + new Random().Next());
                Microsoft.Azure.KeyVault.Fakes.ShimKeyVaultClientExtensions.GetSecretAsyncIKeyVaultClientStringStringStringCancellationToken = (IKeyVaultClient kvc, string keyVaultUrl, string secretName, string version, CancellationToken c) =>
                {
                    var result = new SecretBundle();
                    return Task.FromResult(result);
                };

                Microsoft.Azure.KeyVault.Fakes.ShimKeyVaultClientExtensions.GetSecretVersionsAsyncIKeyVaultClientStringStringNullableOfInt32CancellationToken = (IKeyVaultClient kvc, string kvUrl, string secret, int? maxResults, CancellationToken token) =>
                {
                    var secretItem = new SecretItem();
                    var page = new PageWithNextPageLinkSetter<SecretItem>(new List<SecretItem>() { secretItem }.GetEnumerator());
                    page.NextPageLink = "test";

                    return Task.FromResult<IPage<SecretItem>>(page);
                };

                // Check to make sure that while there is a next page link, GetSecretsNext is called.
                var nextCount = 2;
                Microsoft.Azure.KeyVault.Fakes.ShimKeyVaultClientExtensions.GetSecretVersionsNextAsyncIKeyVaultClientStringCancellationToken = (IKeyVaultClient kvc, string nextUrl, CancellationToken token) =>
                {
                    var secretItem = new SecretItem();
                    var page = new PageWithNextPageLinkSetter<SecretItem>(new List<SecretItem>() { secretItem }.GetEnumerator());

                    nextCount--;
                    if (nextCount != 0)
                    {
                        page.NextPageLink = "test";
                    }

                    return Task.FromResult<IPage<SecretItem>>(page);
                };

                var versions = await sp.GetEncryptionKeyVersions(logger);

                Assert.AreEqual(0, nextCount);
                Assert.AreEqual(3, versions.Count);
            }
        }