protected override void ProcessRecord()
 {
     base.ProcessRecord();
     client?.Dispose();
     client = new VaultsClient(AuthProvider, new Oci.Common.ClientConfiguration
     {
         RetryConfiguration = retryConfig,
         TimeoutMillis      = TimeOutInMillis,
         ClientUserAgent    = PSUserAgent
     });
     try
     {
         string region = GetPreferredRegion();
         if (region != null)
         {
             WriteDebug("Choosing Region:" + region);
             client.SetRegion(region);
         }
         if (Endpoint != null)
         {
             WriteDebug("Choosing Endpoint:" + Endpoint);
             client.SetEndpoint(Endpoint);
         }
     }
     catch (Exception ex)
     {
         TerminatingErrorDuringExecution(ex);
     }
 }
        public async Task KeyVaultManagementListDeletedVaults()
        {
            int           n             = 3;
            List <string> resourceIds   = new List <string>();
            List <string> vaultNameList = new List <string>();
            var           parameters    = new VaultCreateOrUpdateParameters(Location, VaultProperties)
            {
                Tags = Tags
            };

            for (int i = 0; i < n; i++)
            {
                string vaultName       = Recording.GenerateAssetName("sdktestvault");
                var    createdRawVault = await VaultsClient.StartCreateOrUpdateAsync(
                    resourceGroupName : ResGroupName,
                    vaultName : vaultName,
                    parameters : parameters
                    );

                var createdVault = (await WaitForCompletionAsync(createdRawVault)).Value;

                Assert.NotNull(createdVault);
                Assert.NotNull(createdVault.Id);
                resourceIds.Add(createdVault.Id);
                vaultNameList.Add(createdVault.Name);

                await VaultsClient.DeleteAsync(resourceGroupName : ResGroupName, vaultName : vaultName);

                var deletedVault = await VaultsClient.GetDeletedAsync(vaultName, Location);

                deletedVault.Value.IsEqual(createdVault);
            }

            var deletedVaults = VaultsClient.ListDeletedAsync();

            Assert.NotNull(deletedVaults);

            await foreach (var v in deletedVaults)
            {
                var exists = resourceIds.Remove(v.Properties.VaultId);

                if (exists)
                {
                    // Purge vault
                    var purgeOperation = await VaultsClient.StartPurgeDeletedAsync(v.Name, Location);
                    await WaitForCompletionAsync(purgeOperation);

                    Assert.ThrowsAsync <RequestFailedException>(async() => await VaultsClient.GetDeletedAsync(v.Name, Location));
                }
                if (resourceIds.Count == 0)
                {
                    break;
                }
            }

            Assert.True(resourceIds.Count == 0);
        }
Esempio n. 3
0
        public async Task KeyVaultManagementListVaults()
        {
            int n   = 3;
            int top = 2;

            VaultProperties.EnableSoftDelete = null;

            List <string> resourceIds   = new List <string>();
            List <string> vaultNameList = new List <string>();

            for (int i = 0; i < n; i++)
            {
                string vaultName  = Recording.GenerateAssetName("sdktestvault");
                var    parameters = new VaultCreateOrUpdateParameters(Location, VaultProperties);
                parameters.Tags.InitializeFrom(Tags);
                var createdVault = await VaultsClient.StartCreateOrUpdateAsync(
                    resourceGroupName : ResGroupName,
                    vaultName : vaultName,
                    parameters : parameters
                    );

                var vaultResponse = await WaitForCompletionAsync(createdVault);

                var vaultValue = vaultResponse.Value;

                Assert.NotNull(vaultValue);
                Assert.NotNull(vaultValue.Id);
                resourceIds.Add(vaultValue.Id);
                vaultNameList.Add(vaultValue.Name);
            }

            var vaults = VaultsClient.ListByResourceGroupAsync(ResGroupName, top);

            await foreach (var v in vaults)
            {
                Assert.True(resourceIds.Remove(v.Id));
            }

            Assert.True(resourceIds.Count == 0);

            var allVaults = VaultsClient.ListAsync(top);

            Assert.NotNull(vaults);

            // Delete
            foreach (var v in vaultNameList)
            {
                await VaultsClient.DeleteAsync(resourceGroupName : ResGroupName, vaultName : v);
            }
        }
Esempio n. 4
0
        public async Task CreateKeyVaultDisableSoftDelete()
        {
            this.AccessPolicy.ApplicationId       = Guid.Parse(TestEnvironment.ClientId);
            this.VaultProperties.EnableSoftDelete = false;

            var parameters = new VaultCreateOrUpdateParameters(Location, VaultProperties);

            parameters.Tags.InitializeFrom(Tags);
            var vault = await VaultsClient.StartCreateOrUpdateAsync(
                resourceGroupName : this.ResGroupName,
                vaultName : this.VaultName,
                parameters : parameters
                );

            var vaultValue = await WaitForCompletionAsync(vault);

            Assert.False(vaultValue.Value.Properties.EnableSoftDelete);

            await VaultsClient.DeleteAsync(ResGroupName, VaultName);
        }
Esempio n. 5
0
        public async Task KeyVaultManagementVaultCreateUpdateDelete()
        {
            VaultProperties.EnableSoftDelete = null;

            var parameters = new VaultCreateOrUpdateParameters(Location, VaultProperties);

            parameters.Tags.InitializeFrom(Tags);

            var rawVault = await VaultsClient.StartCreateOrUpdateAsync(
                ResGroupName,
                VaultName,
                parameters);

            var createdVault = (await WaitForCompletionAsync(rawVault)).Value;

            ValidateVault(createdVault,
                          VaultName,
                          ResGroupName,
                          TestEnvironment.SubscriptionId,
                          TenantIdGuid,
                          Location,
                          "A",
                          SkuName.Standard,
                          true,
                          true,
                          true,
                          true, // enableSoftDelete defaults to true
                          new[] { AccessPolicy },
                          VaultProperties.NetworkAcls,
                          Tags);

            //Update
            AccessPolicy.Permissions.Secrets.Clear();
            AccessPolicy.Permissions.Secrets.Add(SecretPermissions.Get);
            AccessPolicy.Permissions.Secrets.Add(SecretPermissions.Set);
            (AccessPolicy.Permissions.Keys as ChangeTrackingList <KeyPermissions>).Reset();

            AccessPolicy.Permissions.Storage.Clear();
            AccessPolicy.Permissions.Storage.Add(StoragePermissions.Get);
            AccessPolicy.Permissions.Storage.Add(StoragePermissions.Regeneratekey);

            createdVault.Properties.AccessPolicies.Clear();
            createdVault.Properties.AccessPolicies.Add(AccessPolicy);
            createdVault.Properties.Sku.Name = SkuName.Premium;

            parameters = new VaultCreateOrUpdateParameters(Location, createdVault.Properties);
            parameters.Tags.InitializeFrom(Tags);
            var rawUpdateVault = await VaultsClient.StartCreateOrUpdateAsync(
                resourceGroupName : ResGroupName,
                vaultName : VaultName,
                parameters : parameters
                );

            var updateVault = (await WaitForCompletionAsync(rawUpdateVault)).Value;

            ValidateVault(updateVault,
                          VaultName,
                          ResGroupName,
                          TestEnvironment.SubscriptionId,
                          TenantIdGuid,
                          Location,
                          "A",
                          SkuName.Premium,
                          true,
                          true,
                          true,
                          true,
                          new[] { AccessPolicy },
                          VaultProperties.NetworkAcls,
                          Tags);

            var rawRetrievedVault = await VaultsClient.GetAsync(
                resourceGroupName : ResGroupName,
                vaultName : VaultName);

            var retrievedVault = rawRetrievedVault.Value;

            ValidateVault(retrievedVault,
                          VaultName,
                          ResGroupName,
                          TestEnvironment.SubscriptionId,
                          TenantIdGuid,
                          Location,
                          "A",
                          SkuName.Premium,
                          true,
                          true,
                          true,
                          true,
                          new[] { AccessPolicy },
                          VaultProperties.NetworkAcls,
                          Tags);

            // Delete
            await VaultsClient.DeleteAsync(
                resourceGroupName : ResGroupName,
                vaultName : VaultName);

            Assert.ThrowsAsync <RequestFailedException>(async() =>
            {
                await VaultsClient.GetAsync(
                    resourceGroupName: ResGroupName,
                    vaultName: VaultName);
            });
        }
Esempio n. 6
0
        public async Task KeyVaultManagementRecoverDeletedVault()
        {
            var parameters = new VaultCreateOrUpdateParameters(Location, VaultProperties);

            parameters.Tags.InitializeFrom(Tags);
            var createdVault = await VaultsClient.StartCreateOrUpdateAsync(
                resourceGroupName : ResGroupName,
                vaultName : VaultName,
                parameters : parameters
                );

            var vaultValue = await WaitForCompletionAsync(createdVault);

            // Delete
            await VaultsClient.DeleteAsync(
                resourceGroupName : ResGroupName,
                vaultName : VaultName);

            // Get deleted vault
            Assert.ThrowsAsync <RequestFailedException>(async() =>
            {
                await VaultsClient.GetAsync(
                    resourceGroupName: ResGroupName,
                    vaultName: VaultName);
            });

            parameters = new VaultCreateOrUpdateParameters(Location, VaultProperties);
            parameters.Tags.InitializeFrom(Tags);
            // Recover in default mode
            var recoveredRawVault = await VaultsClient.StartCreateOrUpdateAsync(
                resourceGroupName : ResGroupName,
                vaultName : VaultName,
                parameters : parameters
                );

            var recoveredVault = await WaitForCompletionAsync(recoveredRawVault);

            Assert.True(recoveredVault.Value.IsEqual(vaultValue.Value));

            // Get recovered vault
            await VaultsClient.GetAsync(
                resourceGroupName : ResGroupName,
                vaultName : VaultName);

            // Delete
            await VaultsClient.DeleteAsync(
                resourceGroupName : ResGroupName,
                vaultName : VaultName);

            VaultProperties.CreateMode = CreateMode.Recover;
            parameters = new VaultCreateOrUpdateParameters(Location, VaultProperties);

            // Recover in recover mode
            var recoveredRawVault2 = await VaultsClient.StartCreateOrUpdateAsync(
                resourceGroupName : ResGroupName,
                vaultName : VaultName,
                parameters : parameters
                );

            var recoveredVault2 = await WaitForCompletionAsync(recoveredRawVault);

            Assert.True(recoveredVault2.Value.IsEqual(vaultValue.Value));

            // Get recovered vault
            await VaultsClient.GetAsync(
                resourceGroupName : ResGroupName,
                vaultName : VaultName);

            // Delete
            await VaultsClient.DeleteAsync(
                resourceGroupName : ResGroupName,
                vaultName : VaultName);
        }
Esempio n. 7
0
        public async Task KeyVaultManagementVaultTestCompoundIdentityAccessControlPolicy()
        {
            AccessPolicy.ApplicationId       = Guid.Parse(TestEnvironment.ClientId);
            VaultProperties.EnableSoftDelete = null;

            var parameters = new VaultCreateOrUpdateParameters(Location, VaultProperties);

            parameters.Tags.InitializeFrom(Tags);

            var createVault = await VaultsClient.StartCreateOrUpdateAsync(
                resourceGroupName : ResGroupName,
                vaultName : VaultName,
                parameters : parameters
                );

            var vaultResponse = await WaitForCompletionAsync(createVault);

            ValidateVault(vaultResponse.Value,
                          VaultName,
                          ResGroupName,
                          TestEnvironment.SubscriptionId,
                          TenantIdGuid,
                          Location,
                          "A",
                          SkuName.Standard,
                          true,
                          true,
                          true,
                          true,
                          new[] { AccessPolicy },
                          Tags);

            // Get
            var retrievedVault = await VaultsClient.GetAsync(
                resourceGroupName : ResGroupName,
                vaultName : VaultName);

            ValidateVault(retrievedVault.Value,
                          VaultName,
                          ResGroupName,
                          TestEnvironment.SubscriptionId,
                          TenantIdGuid,
                          Location,
                          "A",
                          SkuName.Standard,
                          true,
                          true,
                          true,
                          true,
                          new[] { AccessPolicy },
                          Tags);


            // Delete
            await VaultsClient.DeleteAsync(
                resourceGroupName : ResGroupName,
                vaultName : VaultName);

            Assert.ThrowsAsync <RequestFailedException>(async() =>
            {
                await VaultsClient.GetAsync(
                    resourceGroupName: ResGroupName,
                    vaultName: VaultName);
            });
        }