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)); }
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()); }
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()); }
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()); }
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()); }
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)); }
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()); }