コード例 #1
0
        public void SetContextBySubscriptionTenantNotExist()
        {
            string tenantA = Guid.NewGuid().ToString(), tenantB = Guid.NewGuid().ToString();
            string subscriptionA = Guid.NewGuid().ToString()
            , subscriptionB      = Guid.NewGuid().ToString()
            , subscriptionC      = Guid.NewGuid().ToString()
            , subscriptionD      = Guid.NewGuid().ToString();
            var clientFactory    = new MockSubscriptionClientFactory();

            Dictionary <string, string> subscriptionListB = GetSecondTenantSubscriptionsJson(tenantB, subscriptionA, subscriptionB, subscriptionC, subscriptionD, tenantA);

            subscriptionClients.Clear();
            subscriptionClients.Enqueue(clientFactory.GetSubscriptionClientVer2019(
                                            null
                                            , null
                                            , MockSubscriptionClientFactory.CreateSubscriptionListsFromJson(subscriptionListB.Values.ToList())
                                            ));

            var mock = new AccountMockClientFactory(() =>
            {
                return(subscriptionClients.Peek());
            }, true);

            mock.MoqClients = true;
            AzureSession.Instance.ClientFactory = mock;

            var client = GetProfileClient();

            Assert.Throws <ArgumentException>(() => client.SetCurrentContext(subscriptionB, tenantB));
        }
コード例 #2
0
        public void SetContextBySubscriptionTenant()
        {
            string tenantA = Guid.NewGuid().ToString(), tenantB = Guid.NewGuid().ToString();
            string subscriptionA = Guid.NewGuid().ToString()
            , subscriptionB      = Guid.NewGuid().ToString()
            , subscriptionC      = Guid.NewGuid().ToString()
            , subscriptionD      = Guid.NewGuid().ToString();
            var clientFactory    = new MockSubscriptionClientFactory();

            Dictionary <string, string> subscriptionListA = GetFirstTenantSubscriptionsJson(tenantA, subscriptionA, subscriptionB, subscriptionC, tenantB);

            subscriptionClients.Clear();
            subscriptionClients.Enqueue(clientFactory.GetSubscriptionClientVer2019(
                                            null
                                            , null
                                            , MockSubscriptionClientFactory.CreateSubscriptionListsFromJson(subscriptionListA.Values.ToList())
                                            ));

            var mock = new AccountMockClientFactory(() =>
            {
                return(subscriptionClients.Peek());
            }, true);

            mock.MoqClients = true;
            AzureSession.Instance.ClientFactory = mock;


            var client           = GetProfileClient();
            var subscriptionName = (JObject.Parse(subscriptionListA[subscriptionB]))["displayName"];
            var context          = client.SetCurrentContext(subscriptionName.ToString(), tenantA);

            Assert.Equal("2019-06-01", client.SubscriptionAndTenantClient.ApiVersion);
            Assert.Equal(tenantA, context.Tenant.Id.ToString());
            Assert.Equal(subscriptionB, context.Subscription.Id.ToString());
        }
コード例 #3
0
        public void SetContextBySubscriptionInManagedByTenants()
        {
            string tenantA = Guid.NewGuid().ToString(), tenantB = Guid.NewGuid().ToString();
            string subscriptionA = Guid.NewGuid().ToString()
            , subscriptionB      = Guid.NewGuid().ToString()
            , subscriptionC      = Guid.NewGuid().ToString()
            , subscriptionD      = Guid.NewGuid().ToString();
            var clientFactory    = new MockSubscriptionClientFactory();

            Dictionary <string, string> subscriptionListA = GetFirstTenantSubscriptionsJson(tenantA, subscriptionA, subscriptionB, subscriptionC, tenantB);
            Dictionary <string, string> subscriptionListB = GetSecondTenantSubscriptionsJson(tenantB, subscriptionA, subscriptionB, subscriptionC, subscriptionD, tenantA);

            subscriptionClients.Clear();
            subscriptionClients.Enqueue(clientFactory.GetSubscriptionClientVer2019(
                                            MockSubscriptionClientFactory.CreateTenantListFromJson(GetTenantsJson(tenantA, tenantB).Values.ToArray())
                                            , null
                                            , MockSubscriptionClientFactory.CreateSubscriptionListsFromJson(subscriptionListA.Values.ToList(), subscriptionListB.Values.ToList())
                                            ));

            var mock = new AccountMockClientFactory(() =>
            {
                return(subscriptionClients.Peek());
            }, true);

            mock.MoqClients = true;
            AzureSession.Instance.ClientFactory = mock;

            var client  = GetProfileClient();
            var context = client.SetCurrentContext(subscriptionC.ToString(), null);

            Assert.Equal("2019-06-01", client.SubscriptionAndTenantClient.ApiVersion);
            Assert.Equal(tenantA, context.Tenant.Id.ToString());
            Assert.Equal(subscriptionC, context.Subscription.Id.ToString());
        }
コード例 #4
0
        public void LoginBySubscriptionInMultitenantsHomeSecond()
        {
            string tenantA = Guid.NewGuid().ToString(), tenantB = Guid.NewGuid().ToString();
            string subscriptionA = Guid.NewGuid().ToString()
            , subscriptionB      = Guid.NewGuid().ToString()
            , subscriptionC      = Guid.NewGuid().ToString()
            , subscriptionD      = Guid.NewGuid().ToString();
            var clientFactory    = new MockSubscriptionClientFactory();

            var tenantList        = GetTenantsJson(tenantA, tenantB);
            var subscriptionListA = GetFirstTenantSubscriptionsJson(tenantA, subscriptionA, subscriptionB, subscriptionC, tenantB);
            var subscriptionListB = GetSecondTenantSubscriptionsJson(tenantB, subscriptionA, subscriptionB, subscriptionC, subscriptionD, tenantA);

            subscriptionClients.Clear();
            subscriptionClients.Enqueue(clientFactory.GetSubscriptionClientVer2019(
                                            MockSubscriptionClientFactory.CreateTenantListFromJson(tenantList[tenantB], tenantList[tenantA])
                                            , null
                                            , MockSubscriptionClientFactory.CreateSubscriptionListsFromJson(subscriptionListB.Values.ToList(), subscriptionListA.Values.ToList())
                                            ));

            var mock = new AccountMockClientFactory(() =>
            {
                return(subscriptionClients.Peek());
            }, true);

            mock.MoqClients = true;
            AzureSession.Instance.ClientFactory = mock;

            var subscriptionName = (JObject.Parse(subscriptionListA[subscriptionA]))["displayName"];

            var client         = GetProfileClient();
            var azureRmProfile = client.Login(
                Context.Account,
                Context.Environment,
                null,
                null,
                subscriptionName.ToString(),
                null,
                false,
                null);

            Assert.Equal("2019-06-01", client.SubscriptionAndTenantClient.ApiVersion);
            Assert.Equal(tenantA, azureRmProfile.DefaultContext.Tenant.Id.ToString());
            Assert.Equal(subscriptionA, azureRmProfile.DefaultContext.Subscription.Id.ToString());
        }
コード例 #5
0
        public void LoginBySubscriptionTenant()
        {
            string tenantA = Guid.NewGuid().ToString(), tenantB = Guid.NewGuid().ToString();
            string subscriptionA = Guid.NewGuid().ToString()
            , subscriptionB      = Guid.NewGuid().ToString()
            , subscriptionC      = Guid.NewGuid().ToString()
            , subscriptionD      = Guid.NewGuid().ToString();
            var clientFactory    = new MockSubscriptionClientFactory();

            Dictionary <string, string> subscriptionListA = GetFirstTenantSubscriptionsJson(tenantA, subscriptionA, subscriptionB, subscriptionC, tenantB);

            subscriptionClients.Clear();
            subscriptionClients.Enqueue(clientFactory.GetSubscriptionClientVer2019(
                                            null
                                            , MockSubscriptionClientFactory.CreateSubscripitonsFromJson(subscriptionListA[subscriptionB])
                                            , null
                                            ));

            var mock = new AccountMockClientFactory(() =>
            {
                return(subscriptionClients.Peek());
            }, true);

            mock.MoqClients = true;
            AzureSession.Instance.ClientFactory = mock;


            var client         = GetProfileClient();
            var azureRmProfile = client.Login(
                Context.Account,
                Context.Environment,
                tenantA,
                subscriptionB,
                null,
                null,
                false,
                null);

            Assert.Equal("2019-06-01", client.SubscriptionAndTenantClient.ApiVersion);
            Assert.Equal(tenantA, azureRmProfile.DefaultContext.Tenant.Id.ToString());
            Assert.Equal(subscriptionB, azureRmProfile.DefaultContext.Subscription.Id.ToString());
        }
コード例 #6
0
        public void LoginByTenantSubscriptionNotExist()
        {
            string tenantA = Guid.NewGuid().ToString(), tenantB = Guid.NewGuid().ToString();
            string subscriptionA = Guid.NewGuid().ToString()
            , subscriptionB      = Guid.NewGuid().ToString()
            , subscriptionC      = Guid.NewGuid().ToString()
            , subscriptionD      = Guid.NewGuid().ToString();
            var clientFactory    = new MockSubscriptionClientFactory();

            Dictionary <string, string> subscriptionListA = GetFirstTenantSubscriptionsJson(tenantA, subscriptionA, subscriptionB, subscriptionC, tenantB);
            Dictionary <string, string> subscriptionListB = GetSecondTenantSubscriptionsJson(tenantB, subscriptionA, subscriptionB, subscriptionC, subscriptionD, tenantA);

            subscriptionClients.Clear();
            subscriptionClients.Enqueue(clientFactory.GetSubscriptionClientVer2019(
                                            null
                                            , MockSubscriptionClientFactory.CreateSubscripitonsFromJson(null)
                                            , null
                                            ));

            var mock = new AccountMockClientFactory(() =>
            {
                return(subscriptionClients.Peek());
            }, true);

            mock.MoqClients = true;
            AzureSession.Instance.ClientFactory = mock;


            var client = GetProfileClient();

            Assert.Throws <PSInvalidOperationException>(() =>
                                                        client.Login(
                                                            Context.Account,
                                                            Context.Environment,
                                                            tenantB,
                                                            subscriptionB,
                                                            null,
                                                            null,
                                                            false,
                                                            null));
        }
コード例 #7
0
        public void SubscriptionClientListTenantFallback()
        {
            var tenants = new List <string> {
                DefaultTenant.ToString()
            };
            var firstList = new List <string> {
                Guid.NewGuid().ToString()
            };
            var subscriptionList = new Queue <List <string> >();

            subscriptionList.Enqueue(firstList);
            var clientFactory = new MockSubscriptionClientFactory(tenants, subscriptionList);

            MockSubscriptionClientFactory.TenantListQueueVerLatest = new Queue <Func <AzureOperationResponse <IPage <TenantIdDescription> > > >();
            MockSubscriptionClientFactory.TenantListQueueVerLatest.Enqueue(() =>
            {
                var e       = new CloudException("The api-version is invalid. The supported versions are '2018-09-01,2018-08-01,2018-07-01,2018-06-01,2018-05-01,2018-02-01,2018-01-01,2017-12-01,2017-08-01,2017-06-01,2017-05-10,2017-05-01,2017-03-01,2016-09-01,2016-07-01,2016-06-01,2016-02-01,2015-11-01,2015-01-01,2014-04-01-preview,2014-04-01,2014-01-01,2013-03-01,2014-02-26,2014-04'.");
                e.Body      = new CloudError();
                e.Body.Code = "InvalidApiVersionParameter";
                throw e;
            });

            clientFactory.ListTenantQueueDequeueVerLatest = () =>
            {
                AzureOperationResponse <IPage <TenantIdDescription> > result = null;
                try
                {
                    result = MockSubscriptionClientFactory.TenantListQueueVerLatest.Dequeue().Invoke();
                }
                catch (CloudException e)
                {
                    if (e.Body != null && !string.IsNullOrEmpty(e.Body.Code) && e.Body.Code.Equals("InvalidApiVersionParameter"))
                    {
                        subscriptionClients.Dequeue();
                    }
                    throw e;
                }
                return(Task.FromResult(result));
            };

            subscriptionClients.Clear();
            subscriptionClients.Enqueue(clientFactory.GetSubscriptionClientVerLatest());
            subscriptionClients.Enqueue(clientFactory.GetSubscriptionClientVer2016());

            var mock = new AccountMockClientFactory(() =>
            {
                return(subscriptionClients.Peek());
            }, true);

            mock.MoqClients = true;
            AzureSession.Instance.ClientFactory = mock;

            var client         = GetProfileClient();
            var azureRmProfile = client.Login(
                Context.Account,
                Context.Environment,
                null,
                firstList.First().ToString(),
                null,
                null,
                false,
                null);

            Assert.Equal("2016-06-01", client.SubscriptionAndTenantClient.ApiVersion);
            Assert.Equal(DefaultTenant.ToString(), azureRmProfile.DefaultContext.Tenant.Id.ToString());
            Assert.Equal(firstList.First().ToString(), azureRmProfile.DefaultContext.Subscription.Id.ToString());
        }