Microsoft.Azure.Commands.Profile.SetAzureRMEnvironmentCommand.ExecuteCmdlet C# (CSharp) Method

ExecuteCmdlet() public method

public ExecuteCmdlet ( ) : void
return void
        public override void ExecuteCmdlet()
        {
            ConfirmAction("updating environment", Name,
                () =>
                {
                    var profileClient = new RMProfileClient(AzureRmProfileProvider.Instance.Profile);

                    foreach (var key in AzureEnvironment.PublicEnvironments.Keys)
                    {
                        if (string.Equals(Name, key, StringComparison.OrdinalIgnoreCase))
                        {
                            throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture,
                                "Cannot change built-in environment {0}.", key));
                        }
                    }

                    var newEnvironment = new AzureEnvironment { Name = Name, OnPremise = EnableAdfsAuthentication };
                    if (AzureRmProfileProvider.Instance.Profile.Environments.ContainsKey(Name))
                    {
                        newEnvironment = AzureRmProfileProvider.Instance.Profile.Environments[Name];
                    }

                    SetEndpointIfProvided(newEnvironment, AzureEnvironment.Endpoint.PublishSettingsFileUrl,
                        PublishSettingsFileUrl);
                    SetEndpointIfProvided(newEnvironment, AzureEnvironment.Endpoint.ServiceManagement, ServiceEndpoint);
                    SetEndpointIfProvided(newEnvironment, AzureEnvironment.Endpoint.ResourceManager,
                        ResourceManagerEndpoint);
                    SetEndpointIfProvided(newEnvironment, AzureEnvironment.Endpoint.ManagementPortalUrl,
                        ManagementPortalUrl);
                    SetEndpointIfProvided(newEnvironment, AzureEnvironment.Endpoint.StorageEndpointSuffix,
                        StorageEndpoint);
                    SetEndpointIfProvided(newEnvironment, AzureEnvironment.Endpoint.ActiveDirectory,
                        ActiveDirectoryEndpoint);
                    SetEndpointIfProvided(newEnvironment,
                        AzureEnvironment.Endpoint.ActiveDirectoryServiceEndpointResourceId,
                        ActiveDirectoryServiceEndpointResourceId);
                    SetEndpointIfProvided(newEnvironment, AzureEnvironment.Endpoint.Gallery, GalleryEndpoint);
                    SetEndpointIfProvided(newEnvironment, AzureEnvironment.Endpoint.Graph, GraphEndpoint);
                    SetEndpointIfProvided(newEnvironment, AzureEnvironment.Endpoint.AzureKeyVaultDnsSuffix,
                        AzureKeyVaultDnsSuffix);
                    SetEndpointIfProvided(newEnvironment,
                        AzureEnvironment.Endpoint.AzureKeyVaultServiceEndpointResourceId,
                        AzureKeyVaultServiceEndpointResourceId);
                    SetEndpointIfProvided(newEnvironment, AzureEnvironment.Endpoint.TrafficManagerDnsSuffix,
                        TrafficManagerDnsSuffix);
                    SetEndpointIfProvided(newEnvironment, AzureEnvironment.Endpoint.SqlDatabaseDnsSuffix,
                        SqlDatabaseDnsSuffix);
                    SetEndpointIfProvided(newEnvironment,
                        AzureEnvironment.Endpoint.AzureDataLakeAnalyticsCatalogAndJobEndpointSuffix,
                        AzureDataLakeAnalyticsCatalogAndJobEndpointSuffix);
                    SetEndpointIfProvided(newEnvironment,
                        AzureEnvironment.Endpoint.AzureDataLakeStoreFileSystemEndpointSuffix,
                        AzureDataLakeStoreFileSystemEndpointSuffix);
                    SetEndpointIfProvided(newEnvironment, AzureEnvironment.Endpoint.AdTenant, AdTenant);
                    SetEndpointIfProvided(newEnvironment, AzureEnvironment.Endpoint.GraphEndpointResourceId,
                        GraphAudience);
                    profileClient.AddOrSetEnvironment(newEnvironment);

                    WriteObject((PSAzureEnvironment)newEnvironment);
                });
        }

Usage Example

        public void ThrowsWhenSettingPublicEnvironment()
        {
            Mock<ICommandRuntime> commandRuntimeMock = new Mock<ICommandRuntime>();

            foreach (string name in AzureEnvironment.PublicEnvironments.Keys)
            {
                var cmdlet = new SetAzureRMEnvironmentCommand()
                {
                    CommandRuntime = commandRuntimeMock.Object,
                    Name = name,
                    PublishSettingsFileUrl = "http://microsoft.com"
                };
                var savedValue = AzureEnvironment.PublicEnvironments[name].GetEndpoint(AzureEnvironment.Endpoint.PublishSettingsFileUrl);
                cmdlet.InvokeBeginProcessing();
                Assert.Throws<InvalidOperationException>(() => cmdlet.ExecuteCmdlet());
                var newValue = AzureRmProfileProvider.Instance.Profile.Environments[name].GetEndpoint(AzureEnvironment.Endpoint.PublishSettingsFileUrl);
                Assert.Equal(savedValue, newValue);
                Assert.NotEqual(cmdlet.PublishSettingsFileUrl, newValue);
            }
        }