public void DisableAutoSaveWhenSettingFileBreaks()
        {
            string faker = Path.Combine(Directory.GetParent(profileBasePath).ToString(), "faker");

            faker = Path.Combine(faker, Resources.AzureDirectoryName);
            var backupPath = HookSettingFile(faker);

            try
            {
                AzureSessionInitializer.CreateOrReplaceSession(dataStore);
                TestMockSupport.RunningMocked = true;
                var cmdlet = new ConnectAzureRmAccountCommand();
                cmdlet.OnImport();
                Assert.Equal(ContextSaveMode.Process, AzureSession.Instance.ARMContextSaveMode);
                Assert.Equal(typeof(ResourceManagerProfileProvider), AzureRmProfileProvider.Instance.GetType());
                var afterModified = dataStore.ReadFileAsText(settingsPath);
                var newSetting    = JsonConvert.DeserializeObject <ContextAutosaveSettings>(afterModified) as ContextAutosaveSettings;
                Assert.NotNull(newSetting);
                Assert.Equal(ContextSaveMode.CurrentUser, newSetting.Mode);
                //Assert.Equal(typeof(AzureTokenCache), AzureSession.Instance.TokenCache.GetType());
            }
            finally
            {
                RestoreSetting(backupPath);
            }
        }
예제 #2
0
        public void LoginWithCredentialParameterAndMSA()
        {
            var cmdlt = new ConnectAzureRmAccountCommand();

            // Setup
            cmdlt.CommandRuntime = commandRuntimeMock;

            // Example of environment variable: TEST_AZURE_CREDENTIALS=<subscription-id-value>;<*****@*****.**>;<email-password>"
            string credsEnvironmentVariable = Environment.GetEnvironmentVariable("TEST_AZURE_CREDENTIALS");

            string[] creds = credsEnvironmentVariable.Split(';');

            string userName = creds[1];
            string password = creds[2];

            var securePassword = new SecureString();

            Array.ForEach(password.ToCharArray(), securePassword.AppendChar);

            cmdlt.Credential = new PSCredential(userName, securePassword);
            cmdlt.SetParameterSet("UserWithSubscriptionId");

            // Act
            try
            {
                cmdlt.InvokeBeginProcessing();
                cmdlt.ExecuteCmdlet();
                cmdlt.InvokeEndProcessing();
            }
            catch (AuthenticationFailedException ex)
            {
                Assert.NotNull(ex);
                Assert.Contains("UsernamePasswordCredential authentication failed", ex.Message);
            }
        }
예제 #3
0
        public void LoginWithRbacSPNAndCertificateOnly()
        {
            var cmdlt = new ConnectAzureRmAccountCommand();

            // Setup
            // NOTE: Use rbac SPN credentials for this test case
            cmdlt.CommandRuntime        = commandRuntimeMock;
            cmdlt.ServicePrincipal      = true;
            cmdlt.TenantId              = "54826b22-38d6-4fb2-bad9-b7b93a3e9c5a";
            cmdlt.ApplicationId         = "99edf981-74c0-4284-bddf-3e9d092ba4e2";
            cmdlt.CertificateThumbprint = "F064B7C7EACC942D10662A5115E047E94FA18498";
            cmdlt.SetParameterSet("ServicePrincipalCertificateWithSubscriptionId");

            // Act
            cmdlt.InvokeBeginProcessing();
            cmdlt.ExecuteCmdlet();
            cmdlt.InvokeEndProcessing();

            Assert.NotNull(AzureRmProfileProvider.Instance.Profile.DefaultContext);
            Assert.Equal(cmdlt.TenantId, AzureRmProfileProvider.Instance.Profile.DefaultContext.Tenant.Id.ToString());
            Assert.Equal(cmdlt.ApplicationId, AzureRmProfileProvider.Instance.Profile.DefaultContext.Account.Id.ToString());
            Assert.NotNull(AzureRmProfileProvider.Instance.Profile.DefaultContext.Subscription);
            Assert.Equal(
                cmdlt.CertificateThumbprint,
                AzureRmProfileProvider.Instance.Profile.DefaultContext.Account.GetProperty(AzureAccount.Property.CertificateThumbprint));
        }
예제 #4
0
        //Verify https://github.com/Azure/azure-powershell/issues/13419
        public void LoginWithNoSubscriptionAndNoTenantAndFirstPortNotAvailable()
        {
            var listener = new TcpListener(IPAddress.Loopback, 8400);

            try
            {
                listener.Start();

                var cmdlt = new ConnectAzureRmAccountCommand();
                // Setup
                cmdlt.CommandRuntime = commandRuntimeMock;
                cmdlt.SetParameterSet("UserWithSubscriptionId");

                // Act
                cmdlt.InvokeBeginProcessing();
                cmdlt.ExecuteCmdlet();
                cmdlt.InvokeEndProcessing();

                Assert.NotNull(AzureRmProfileProvider.Instance.Profile.DefaultContext);
            }
            finally
            {
                listener.Stop();
            }
        }
예제 #5
0
        public void ThrowOnUnknownEnvironment()
        {
            var cmdlt = new ConnectAzureRmAccountCommand();

            // Setup
            cmdlt.CommandRuntime = commandRuntimeMock;
            cmdlt.Environment    = "unknown";
            var testPassed = false;

            cmdlt.SetBoundParameters(new Dictionary <string, object>()
            {
                { "Environment", "unknown" }
            });
            cmdlt.SetParameterSet("UserWithSubscriptionId");

            // Act
            try
            {
                cmdlt.InvokeBeginProcessing();
            }
            catch (TargetInvocationException ex)
            {
                Assert.NotNull(ex);
                Assert.NotNull(ex.InnerException);
                Assert.Equal("Unable to find environment with name 'unknown'", ex.InnerException.Message);
                testPassed = true;
            }

            Assert.True(testPassed);
        }
예제 #6
0
        public void LoginUsingSkipValidation()
        {
            var cmdlt = new ConnectAzureRmAccountCommand();

            // Setup
            cmdlt.CommandRuntime = commandRuntimeMock;

            cmdlt.AccessToken    = "test";
            cmdlt.AccessToken    = "*****@*****.**";
            cmdlt.SkipValidation = true;
            cmdlt.TenantId       = Guid.NewGuid().ToString();
            cmdlt.Subscription   = Guid.NewGuid().ToString();
            cmdlt.SetBoundParameters(new Dictionary <string, object>()
            {
                { "Subscription", cmdlt.Subscription }
            });
            cmdlt.SetParameterSet("AccessTokenWithSubscriptionId");

            cmdlt.InvokeBeginProcessing();
            cmdlt.ExecuteCmdlet();
            cmdlt.InvokeEndProcessing();

            Assert.NotNull(AzureRmProfileProvider.Instance.Profile.DefaultContext);
            Assert.Equal(AzureRmProfileProvider.Instance.Profile.DefaultContext.Subscription.Id, cmdlt.Subscription);
            Assert.Equal(AzureRmProfileProvider.Instance.Profile.DefaultContext.Tenant.Id, cmdlt.TenantId);
        }
예제 #7
0
        public void LoginWithRbacSPNAndCertificateOnly()
        {
            AzureSession.Instance.DataStore = new DiskDataStore();
            var cmdlt = new ConnectAzureRmAccountCommand();

            // Setup
            // NOTE: Use rbac SPN credentials for this test case
            cmdlt.CommandRuntime   = commandRuntimeMock;
            cmdlt.ServicePrincipal = true;
            cmdlt.Tenant           = "72f988bf-86f1-41af-91ab-2d7cd011db47";
            cmdlt.ApplicationId    = "343d1f33-e5bc-4857-9216-a50144e7da46";
            //You must have this cert installed on your machine
            cmdlt.CertificateThumbprint = "15385B6BF747423330CD8CA5B34022F7AC60B86C";
            cmdlt.SetParameterSet("ServicePrincipalCertificateWithSubscriptionId");

            // Act
            cmdlt.InvokeBeginProcessing();
            cmdlt.ExecuteCmdlet();
            cmdlt.InvokeEndProcessing();

            Assert.NotNull(AzureRmProfileProvider.Instance.Profile.DefaultContext);
            Assert.Equal(cmdlt.Tenant, AzureRmProfileProvider.Instance.Profile.DefaultContext.Tenant.Id.ToString());
            Assert.Equal(cmdlt.ApplicationId, AzureRmProfileProvider.Instance.Profile.DefaultContext.Account.Id.ToString());
            Assert.NotNull(AzureRmProfileProvider.Instance.Profile.DefaultContext.Subscription);
            Assert.Equal(
                cmdlt.CertificateThumbprint,
                AzureRmProfileProvider.Instance.Profile.DefaultContext.Account.GetProperty(AzureAccount.Property.CertificateThumbprint));
        }
예제 #8
0
        public void LoginWithNoSubscriptionAndNoTenant()
        {
            var cmdlt = new ConnectAzureRmAccountCommand();

            // Setup
            cmdlt.CommandRuntime = commandRuntimeMock;
            cmdlt.SetParameterSet("UserWithSubscriptionId");

            // Act
            cmdlt.InvokeBeginProcessing();
            cmdlt.ExecuteCmdlet();
            cmdlt.InvokeEndProcessing();

            Assert.NotNull(AzureRmProfileProvider.Instance.Profile.DefaultContext);
        }
예제 #9
0
        public void LoginWithInvalidSubscriptionAndTenantThrowsCloudException()
        {
            var cmdlt = new ConnectAzureRmAccountCommand();

            // Setup
            cmdlt.CommandRuntime = commandRuntimeMock;
            cmdlt.Subscription   = "2c224e7e-3ef5-431d-a57b-e71f4662e3a5";
            cmdlt.TenantId       = "72f988bf-86f1-41af-91ab-2d7cd011db47";
            cmdlt.SetParameterSet("UserWithSubscriptionId");

            // Act
            cmdlt.InvokeBeginProcessing();
            Assert.Throws <PSInvalidOperationException>(() => cmdlt.ExecuteCmdlet());
            cmdlt.InvokeEndProcessing();
        }
예제 #10
0
        public void PersistenceCheckReturnFalse()
        {
            // Setup
            var cmdlt       = new ConnectAzureRmAccountCommand();
            var mockChecker = new Mock <TokenCachePersistenceChecker>();

            mockChecker.Setup(f => f.Verify()).Returns(false);
            cmdlt.TokenCachePersistenceChecker = mockChecker.Object;

            // Act
            cmdlt.OnImport();

            //Verify
            Assert.Equal(AzureSession.Instance.ARMContextSaveMode, ContextSaveMode.Process);
        }
예제 #11
0
        //Verify no error happens if user profile path is inaccessible
        public void UserProfilePathInAccessible()
        {
            var cmdlt = new ConnectAzureRmAccountCommand();

            // Setup
            var mockChecker = new Mock <TokenCachePersistenceChecker>();

            mockChecker.Setup(c => c.Verify()).Throws(new FileNotFoundException());
            cmdlt.TokenCachePersistenceChecker = mockChecker.Object;

            // Act
            cmdlt.OnImport();

            //Verify
            Assert.Equal(AzureSession.Instance.ARMContextSaveMode, ContextSaveMode.Process);
        }
예제 #12
0
        private void Login(string subscriptionId, string tenantId)
        {
            var cmdlt = new ConnectAzureRmAccountCommand();

            // Setup
            cmdlt.CommandRuntime = commandRuntimeMock;
            cmdlt.Subscription   = subscriptionId;
            cmdlt.TenantId       = tenantId;

            // Act
            cmdlt.InvokeBeginProcessing();
            cmdlt.ExecuteCmdlet();
            cmdlt.InvokeEndProcessing();

            Assert.NotNull(AzureRmProfileProvider.Instance.Profile.DefaultContext);
        }
예제 #13
0
        public void LoginWithNoSubscriptionAndTenant()
        {
            var cmdlt = new ConnectAzureRmAccountCommand();

            // Setup
            cmdlt.CommandRuntime = commandRuntimeMock;
            cmdlt.TenantId       = "72f988bf-86f1-41af-91ab-2d7cd011db47";
            cmdlt.SetParameterSet("UserWithSubscriptionId");

            // Act
            cmdlt.InvokeBeginProcessing();
            cmdlt.ExecuteCmdlet();
            cmdlt.InvokeEndProcessing();

            Assert.NotNull(AzureRmProfileProvider.Instance.Profile.DefaultContext);
            Assert.Equal("microsoft.com", AzureRmProfileProvider.Instance.Profile.DefaultContext.Tenant.Directory);
        }
예제 #14
0
        public void LoginWithSubscriptionAndNoTenant()
        {
            var cmdlt = new ConnectAzureRmAccountCommand();

            // Setup
            cmdlt.CommandRuntime = commandRuntimeMock;
            cmdlt.Subscription   = "2c224e7e-3ef5-431d-a57b-e71f4662e3a6";
            cmdlt.SetParameterSet("UserWithSubscriptionId");

            // Act
            cmdlt.InvokeBeginProcessing();
            cmdlt.ExecuteCmdlet();
            cmdlt.InvokeEndProcessing();

            Assert.NotNull(AzureRmProfileProvider.Instance.Profile.DefaultContext);
            Assert.Equal("microsoft.com", AzureRmProfileProvider.Instance.Profile.DefaultContext.Tenant.Directory);
        }
예제 #15
0
        public void LoginWithSubscriptionAndTenant()
        {
            var cmdlt = new ConnectAzureRmAccountCommand();

            // Setup
            cmdlt.CommandRuntime = commandRuntimeMock;
            cmdlt.Subscription   = "2c224e7e-3ef5-431d-a57b-e71f4662e3a6";
            cmdlt.Tenant         = "72f988bf-86f1-41af-91ab-2d7cd011db47";
            cmdlt.SetParameterSet("UserWithSubscriptionId");

            // Act
            cmdlt.InvokeBeginProcessing();
            cmdlt.ExecuteCmdlet();
            cmdlt.InvokeEndProcessing();

            Assert.NotNull(AzureRmProfileProvider.Instance.Profile.DefaultContext);
        }
예제 #16
0
        public void LoginWithEnvironementName()
        {
            var cmdlt = new ConnectAzureRmAccountCommand();

            // Setup
            cmdlt.CommandRuntime = commandRuntimeMock;
            cmdlt.Environment    = "AzureUSGovernment";
            cmdlt.SetParameterSet("UserWithSubscriptionId");

            // Act
            cmdlt.InvokeBeginProcessing();
            cmdlt.ExecuteCmdlet();
            cmdlt.InvokeEndProcessing();

            Assert.NotNull(AzureRmProfileProvider.Instance.Profile.DefaultContext);
            Assert.NotNull(AzureRmProfileProvider.Instance.Profile.DefaultContext.Environment);
            Assert.Equal("AzureUSGovernment", AzureRmProfileProvider.Instance.Profile.DefaultContext.Environment.Name);
        }
예제 #17
0
        public void LoginWithSubscriptionAndNoTenant()
        {
            var cmdlt = new ConnectAzureRmAccountCommand();

            // Setup
            cmdlt.CommandRuntime = commandRuntimeMock;
            var subscriptionId = "9e223dbe-3399-4e19-88eb-0975f02ac87f";

            cmdlt.Subscription = subscriptionId;
            cmdlt.MyInvocation.BoundParameters.Add(nameof(cmdlt.Subscription), subscriptionId);
            cmdlt.SetParameterSet("UserWithSubscriptionId");

            // Act
            cmdlt.InvokeBeginProcessing();
            cmdlt.ExecuteCmdlet();
            cmdlt.InvokeEndProcessing();

            Assert.NotNull(AzureRmProfileProvider.Instance.Profile.DefaultContext);
        }
예제 #18
0
        public void LoginWithNoSubscriptionAndTenant()
        {
            var cmdlt = new ConnectAzureRmAccountCommand();

            // Setup
            cmdlt.CommandRuntime = commandRuntimeMock;
            var tenantId = "72f988bf-86f1-41af-91ab-2d7cd011db47";

            cmdlt.Tenant = tenantId;
            cmdlt.MyInvocation.BoundParameters.Add(nameof(cmdlt.Tenant), tenantId);
            cmdlt.SetParameterSet("UserWithSubscriptionId");

            // Act
            cmdlt.InvokeBeginProcessing();
            cmdlt.ExecuteCmdlet();
            cmdlt.InvokeEndProcessing();

            Assert.NotNull(AzureRmProfileProvider.Instance.Profile.DefaultContext);
        }
예제 #19
0
        public void LoginWithRbacTenantOnly()
        {
            var cmdlt = new ConnectAzureRmAccountCommand();

            // Setup
            // NOTE: Use [email protected] credentials for this test case
            cmdlt.CommandRuntime = commandRuntimeMock;
            cmdlt.Tenant         = "1449d5b7-8a83-47db-ae4c-9b03e888bad0";
            cmdlt.SetParameterSet("UserWithSubscriptionId");

            // Act
            cmdlt.InvokeBeginProcessing();
            cmdlt.ExecuteCmdlet();
            cmdlt.InvokeEndProcessing();

            Assert.NotNull(AzureRmProfileProvider.Instance.Profile.DefaultContext);
            Assert.Equal(cmdlt.Tenant, AzureRmProfileProvider.Instance.Profile.DefaultContext.Tenant.Id.ToString());
            Assert.Null(AzureRmProfileProvider.Instance.Profile.DefaultContext.Subscription);
        }
예제 #20
0
        public void LoginWithAccessToken()
        {
            var cmdlt = new ConnectAzureRmAccountCommand();

            // Setup
            cmdlt.CommandRuntime = commandRuntimeMock;

            // Obtain an access token by using [Microsoft.Azure.Commands.Common.Authentication.AzureSession]::Instance.TokenCache.ReadItems() in powershell after logging in.
            // Ensure you are using the token with Resource: https://management.core.windows.net/
            string accessTokenEnvironmentVariable = Environment.GetEnvironmentVariable("AZURE_TEST_ACCESS_TOKEN");

            cmdlt.AccessToken = accessTokenEnvironmentVariable;
            cmdlt.AccountId   = "testAccount";
            cmdlt.SetParameterSet("AccessTokenWithSubscriptionId");

            cmdlt.InvokeBeginProcessing();
            cmdlt.ExecuteCmdlet();
            cmdlt.InvokeEndProcessing();

            Assert.NotNull(AzureRmProfileProvider.Instance.Profile.DefaultContext);
        }
예제 #21
0
        public void GetMultipleTenantsOnLogin()
        {
            var cmdlt = new ConnectAzureRmAccountCommand();

            // Setup
            // NOTE: Use account that has at exactly two tenants
            cmdlt.CommandRuntime = commandRuntimeMock;
            cmdlt.SetParameterSet("UserWithSubscriptionId");

            // Act
            cmdlt.InvokeBeginProcessing();
            cmdlt.ExecuteCmdlet();
            cmdlt.InvokeEndProcessing();

            Assert.NotNull(AzureRmProfileProvider.Instance.Profile.DefaultContext);
            Assert.NotNull(AzureRmProfileProvider.Instance.Profile.DefaultContext.Account);
            var tenants = AzureRmProfileProvider.Instance.Profile.DefaultContext.Account.GetTenants();

            Assert.NotNull(tenants);
            Assert.Equal(2, tenants.Length);
        }
예제 #22
0
        public void LoginWithCredentialParameterAndMSA()
        {
            var cmdlt = new ConnectAzureRmAccountCommand();

            // Setup
            cmdlt.CommandRuntime = commandRuntimeMock;

            // Example of environment variable: TEST_AZURE_CREDENTIALS=<subscription-id-value>;<*****@*****.**>;<email-password>"
            string credsEnvironmentVariable = Environment.GetEnvironmentVariable("TEST_AZURE_CREDENTIALS");

            string[] creds = credsEnvironmentVariable.Split(';');

            string userName = creds[1];
            string password = creds[2];

            var securePassword = new SecureString();

            Array.ForEach(password.ToCharArray(), securePassword.AppendChar);

            cmdlt.Credential = new PSCredential(userName, securePassword);
            cmdlt.SetParameterSet("UserWithSubscriptionId");

            // Act
            try
            {
                cmdlt.InvokeBeginProcessing();
                cmdlt.ExecuteCmdlet();
                cmdlt.InvokeEndProcessing();
            }
            catch (AadAuthenticationFailedException ex)
            {
                Assert.NotNull(ex);
                Assert.Equal("-Credential parameter can only be used with Organization ID credentials. " +
                             "For more information, please refer to http://go.microsoft.com/fwlink/?linkid=331007&clcid=0x409 " +
                             "for more information about the difference between an organizational account and a Microsoft account.",
                             ex.Message);
            }
        }
예제 #23
0
        public void GetPsVersionFromUserAgent()
        {
            var cmdlt = new ConnectAzureRmAccountCommand();

            int preProcessingUserAgentCount = AzureSession.Instance.ClientFactory.UserAgents.Length;

            Debug.WriteLine("UserAgents count prior to cmdLet processing = {0}", preProcessingUserAgentCount.ToString());
            foreach (ProductInfoHeaderValue hv in AzureSession.Instance.ClientFactory.UserAgents)
            {
                Debug.WriteLine("Product:{0} - Version:{1}", hv.Product.Name, hv.Product.Version);
            }

            cmdlt.CommandRuntime = commandRuntimeMock;
            cmdlt.Subscription   = "2c224e7e-3ef5-431d-a57b-e71f4662e3a6";
            cmdlt.TenantId       = "72f988bf-86f1-41af-91ab-2d7cd011db47";
            cmdlt.SetParameterSet("UserWithSubscriptionId");

            cmdlt.InvokeBeginProcessing();
            int postProcessingUserAgentCount = AzureSession.Instance.ClientFactory.UserAgents.Length;

            Debug.WriteLine("UserAgents count prior to cmdLet post processing = {0}", postProcessingUserAgentCount.ToString());
            Assert.True(AzureSession.Instance.ClientFactory.UserAgents.Length >= preProcessingUserAgentCount);
            IEnumerable <ProductInfoHeaderValue> piHv = AzureSession.Instance.ClientFactory.UserAgents;
            string psUserAgentString = string.Empty;

            foreach (ProductInfoHeaderValue hv in piHv)
            {
                if (hv.Product.Name.Equals("PSVersion") && (!string.IsNullOrEmpty(hv.Product.Version)))
                {
                    psUserAgentString = string.Format("{0}-{1}", hv.Product.Name, hv.Product.Version);
                }
            }

            Assert.NotEmpty(psUserAgentString);
            Assert.Contains("PSVersion", psUserAgentString);
        }
예제 #24
0
        public void LoginPopulatesContextList()
        {
            // Before running this test, make sure to clear the contexts on your machine by removing the following two files:
            // - %APPDATA%/Windows Azure Powershell/AzureRmContext.json
            // - %APPDATA%/Windows Azure Powershell/AzureRmContextSettings.json
            // This will clear all existing contexts on your machine so that this test can re-populate the list with a context for each subscription

            var cmdlt = new ConnectAzureRmAccountCommand();

            // Setup
            cmdlt.CommandRuntime = commandRuntimeMock;

            // Act
            cmdlt.InvokeBeginProcessing();
            cmdlt.ExecuteCmdlet();
            cmdlt.InvokeEndProcessing();

            var profile = AzureRmProfileProvider.Instance.Profile as AzureRmProfile;

            Assert.NotNull(profile);
            Assert.NotNull(profile.Contexts);
            Assert.NotNull(profile.Subscriptions);
            Assert.True(profile.Contexts.Count > 1);
            Assert.True(profile.Subscriptions.Count() > 1);
            Assert.Equal(profile.Subscriptions.Count(), profile.Contexts.Count);

            foreach (var sub in profile.Subscriptions)
            {
                var contextName = string.Format("{0} - {1}", sub.Name, sub.Id);
                Assert.True(profile.Contexts.ContainsKey(contextName));
                var context = profile.Contexts[contextName];
                Assert.NotNull(context);
                Assert.Equal(sub.Id, context.Subscription.Id);
                Assert.Equal(sub.GetTenant(), context.Tenant.Id);
            }
        }
예제 #25
0
        //Verify https://github.com/Azure/azure-powershell/issues/13340
        public void LoginUseInteractiveThruNonDesktop()
        {
            var cmdlt = new ConnectAzureRmAccountCommand();

            // Setup
            CommonUtilities commonUtilities;

            AzureSession.Instance.TryGetComponent(nameof(CommonUtilities), out commonUtilities);
            try
            {
                var mockUtilities = new Mock <CommonUtilities>();
                mockUtilities.Setup(u => u.IsDesktopSession()).Returns(false);
                AzureSession.Instance.RegisterComponent(nameof(CommonUtilities),
                                                        () => mockUtilities.Object, true);
                cmdlt.CommandRuntime = commandRuntimeMock;
                cmdlt.SetParameterSet("UserWithSubscriptionId");

                // Act
                cmdlt.InvokeBeginProcessing();
                cmdlt.ExecuteCmdlet();
                cmdlt.InvokeEndProcessing();

                //Verify
                Assert.Single(commandRuntimeMock.WarningStream);
                Assert.Equal("Interactive authentication is not supported in this session, please run cmdlet 'Connect-AzAccount -UseDeviceAuthentication'.", commandRuntimeMock.WarningStream[0]);
                Assert.Null(AzureRmProfileProvider.Instance.Profile.DefaultContext);
            }
            finally
            {
                if (commonUtilities != null)
                {
                    AzureSession.Instance.RegisterComponent(nameof(CommonUtilities),
                                                            () => commonUtilities, true);
                }
            }
        }
예제 #26
0
        public void AddEnvironmentUpdatesContext()
        {
            var cmdlet = new AddAzureRMEnvironmentCommand()
            {
                CommandRuntime         = commandRuntimeMock,
                Name                   = "Katal",
                ARMEndpoint            = "https://management.azure.com/",
                AzureKeyVaultDnsSuffix = "vault.local.azurestack.external",
                AzureKeyVaultServiceEndpointResourceId = "https://vault.local.azurestack.external"
            };
            var dict = new Dictionary <string, object>
            {
                { "ARMEndpoint", "https://management.azure.com/" },
                { "AzureKeyVaultDnsSuffix", "vault.local.azurestack.external" },
                { "AzureKeyVaultServiceEndpointResourceId", "https://vault.local.azurestack.external" }
            };

            cmdlet.SetBoundParameters(dict);
            cmdlet.SetParameterSet("ARMEndpoint");
            cmdlet.InvokeBeginProcessing();
            cmdlet.ExecuteCmdlet();
            cmdlet.InvokeEndProcessing();

            commandRuntimeMock = new MockCommandRuntime();
            var profileClient     = new RMProfileClient(AzureRmProfileProvider.Instance.GetProfile <AzureRmProfile>());
            IAzureEnvironment env = AzureRmProfileProvider.Instance.Profile.Environments.First((e) => string.Equals(e.Name, "KaTaL", StringComparison.OrdinalIgnoreCase));

            Assert.Equal(env.Name, cmdlet.Name);
            Assert.Equal(env.GetEndpoint(AzureEnvironment.Endpoint.AzureKeyVaultDnsSuffix), dict["AzureKeyVaultDnsSuffix"]);
            Assert.Equal(env.GetEndpoint(AzureEnvironment.Endpoint.AzureKeyVaultServiceEndpointResourceId), dict["AzureKeyVaultServiceEndpointResourceId"]);

            var cmdlet1 = new ConnectAzureRmAccountCommand();

            cmdlet1.CommandRuntime = commandRuntimeMock;
            cmdlet1.Environment    = "Katal";

            dict.Clear();
            dict = new Dictionary <string, object>
            {
                { "Environment", cmdlet1.Environment }
            };

            cmdlet1.SetBoundParameters(dict);
            cmdlet1.InvokeBeginProcessing();
            cmdlet1.ExecuteCmdlet();
            cmdlet1.InvokeEndProcessing();
            commandRuntimeMock = new MockCommandRuntime();

            Assert.NotNull(AzureRmProfileProvider.Instance.Profile.DefaultContext);
            Assert.Equal(AzureRmProfileProvider.Instance.Profile.DefaultContext.Environment.Name, cmdlet1.Environment);

            var cmdlet2 = new AddAzureRMEnvironmentCommand()
            {
                CommandRuntime         = commandRuntimeMock,
                Name                   = "Katal",
                ARMEndpoint            = "https://management.azure.com/",
                AzureKeyVaultDnsSuffix = "adminvault.local.azurestack.external",
                AzureKeyVaultServiceEndpointResourceId = "https://adminvault.local.azurestack.external"
            };

            dict.Clear();
            dict = new Dictionary <string, object>
            {
                { "ARMEndpoint", "https://management.azure.com/" },
                { "AzureKeyVaultDnsSuffix", "adminvault.local.azurestack.external" },
                { "AzureKeyVaultServiceEndpointResourceId", "https://adminvault.local.azurestack.external" }
            };

            cmdlet2.SetBoundParameters(dict);
            cmdlet2.SetParameterSet("ARMEndpoint");
            cmdlet2.InvokeBeginProcessing();
            cmdlet2.ExecuteCmdlet();
            cmdlet2.InvokeEndProcessing();

            profileClient = new RMProfileClient(AzureRmProfileProvider.Instance.GetProfile <AzureRmProfile>());
            env           = AzureRmProfileProvider.Instance.Profile.Environments.First((e) => string.Equals(e.Name, "KaTaL", StringComparison.OrdinalIgnoreCase));
            Assert.Equal(env.Name, cmdlet.Name);
            Assert.Equal(env.GetEndpoint(AzureEnvironment.Endpoint.AzureKeyVaultDnsSuffix), dict["AzureKeyVaultDnsSuffix"]);
            Assert.Equal(env.GetEndpoint(AzureEnvironment.Endpoint.AzureKeyVaultServiceEndpointResourceId), dict["AzureKeyVaultServiceEndpointResourceId"]);

            var context = AzureRmProfileProvider.Instance.Profile.DefaultContext;

            Assert.NotNull(context);
            Assert.NotNull(context.Environment);
            Assert.Equal(context.Environment.Name, env.Name);
            Assert.Equal(context.Environment.AzureKeyVaultDnsSuffix, env.AzureKeyVaultDnsSuffix);
            Assert.Equal(context.Environment.AzureKeyVaultServiceEndpointResourceId, env.AzureKeyVaultServiceEndpointResourceId);
        }