Skip to content

Commit 54324f6

Browse files
committed
Merge pull request #2161 from hovsepm/dev
[#116730627] Add-AzureAccount fails if user has subscriptions in disabled state that does not contain AADTenantID field in server response
2 parents 3ee88c0 + 15980bf commit 54324f6

File tree

2 files changed

+61
-2
lines changed

2 files changed

+61
-2
lines changed

src/ServiceManagement/Common/Commands.Common.Test/Common/ProfileClientTests.cs

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,61 @@ public void AddAzureAccountReturnsAccountWithAllSubscriptionsInRdfeMode()
344344
Assert.False(account.GetSubscriptions(client.Profile).Any(s => s.Id == new Guid(csmSubscription1.SubscriptionId)));
345345
}
346346

347+
[Fact]
348+
public void AddAzureAccountFiltersEmptyAdClientsInRdfeMode()
349+
{
350+
var emptyTenantIdrdfeSubscription = new RDFESubscription
351+
{
352+
SubscriptionId = "16E3F6FD-A3AA-439A-8FC4-1F5C41D2AD1E",
353+
SubscriptionName = "RdfeSub1",
354+
SubscriptionStatus = Microsoft.WindowsAzure.Subscriptions.Models.SubscriptionStatus.Active,
355+
ActiveDirectoryTenantId = ""
356+
};
357+
358+
var disabledTenantIdrdfeSubscription = new RDFESubscription
359+
{
360+
SubscriptionId = "16E3F6FD-A3AA-439A-8FC4-1F5C41D2AD1E",
361+
SubscriptionName = "RdfeSub1",
362+
SubscriptionStatus = Microsoft.WindowsAzure.Subscriptions.Models.SubscriptionStatus.Disabled,
363+
ActiveDirectoryTenantId = "B59BE059-5E3F-463B-8C1A-831A29819B52"
364+
};
365+
366+
var deletedTenantIdrdfeSubscription = new RDFESubscription
367+
{
368+
SubscriptionId = "16E3F6FD-A3AA-439A-8FC4-1F5C41D2AD1E",
369+
SubscriptionName = "RdfeSub1",
370+
SubscriptionStatus = Microsoft.WindowsAzure.Subscriptions.Models.SubscriptionStatus.Deleted,
371+
ActiveDirectoryTenantId = "B59BE059-5E3F-463B-8C1A-831A29819B52"
372+
};
373+
374+
var deletingTenantIdrdfeSubscription = new RDFESubscription
375+
{
376+
SubscriptionId = "16E3F6FD-A3AA-439A-8FC4-1F5C41D2AD1E",
377+
SubscriptionName = "RdfeSub1",
378+
SubscriptionStatus = Microsoft.WindowsAzure.Subscriptions.Models.SubscriptionStatus.Deleting,
379+
ActiveDirectoryTenantId = "B59BE059-5E3F-463B-8C1A-831A29819B52"
380+
};
381+
382+
SetMocks(
383+
new[] { rdfeSubscription1, emptyTenantIdrdfeSubscription, disabledTenantIdrdfeSubscription, deletedTenantIdrdfeSubscription, deletingTenantIdrdfeSubscription }.ToList(),
384+
new[] { csmSubscription1 }.ToList());
385+
MemoryDataStore dataStore = new MemoryDataStore();
386+
dataStore.VirtualStore[oldProfileDataPath] = oldProfileData;
387+
AzureSession.DataStore = dataStore;
388+
currentProfile = new AzureSMProfile(Path.Combine(AzureSession.ProfileDirectory, AzureSession.ProfileFile));
389+
ProfileClient client = new ProfileClient(currentProfile);
390+
391+
var account = client.AddAccountAndLoadSubscriptions(
392+
new AzureAccount { Id = "test", Type = AzureAccount.AccountType.User },
393+
AzureEnvironment.PublicEnvironments[EnvironmentName.AzureCloud],
394+
null);
395+
396+
Assert.Equal("test", account.Id);
397+
Assert.Equal(1, account.GetSubscriptions(client.Profile).Count);
398+
Assert.True(account.GetSubscriptions(client.Profile).Any(s => s.Id == new Guid(rdfeSubscription1.SubscriptionId)));
399+
Assert.False(account.GetSubscriptions(client.Profile).Any(s => s.Id == new Guid(csmSubscription1.SubscriptionId)));
400+
}
401+
347402
[Fact]
348403
public void AddAzureAccountReturnsAccountWithAllSubscriptionsInCsmMode()
349404
{
@@ -1388,7 +1443,7 @@ private void SetMockData()
13881443
{
13891444
SubscriptionId = "26E3F6FD-A3AA-439A-8FC4-1F5C41D2AD1E",
13901445
SubscriptionName = "RdfeSub2",
1391-
SubscriptionStatus = Microsoft.WindowsAzure.Subscriptions.Models.SubscriptionStatus.Active,
1446+
SubscriptionStatus = Microsoft.WindowsAzure.Subscriptions.Models.SubscriptionStatus.Warned,
13921447
ActiveDirectoryTenantId = "Common"
13931448
};
13941449
guestRdfeSubscription = new RDFESubscription

src/ServiceManagement/Common/Commands.ServiceManagement.Common/ProfileClient.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -823,7 +823,11 @@ private string[] LoadAccountTenants(AzureAccount account, AzureEnvironment envir
823823
environment.GetEndpointAsUri(AzureEnvironment.Endpoint.ServiceManagement)))
824824
{
825825
var subscriptionListResult = SubscriptionClient.Subscriptions.List();
826-
return subscriptionListResult.Subscriptions.Select(s => s.ActiveDirectoryTenantId).Distinct().ToArray();
826+
return subscriptionListResult.Subscriptions.Where(s => s.SubscriptionStatus == WindowsAzure.Subscriptions.Models.SubscriptionStatus.Active ||
827+
s.SubscriptionStatus == WindowsAzure.Subscriptions.Models.SubscriptionStatus.Warned)
828+
.Select(s => s.ActiveDirectoryTenantId)
829+
.Where(s => !string.IsNullOrWhiteSpace(s))
830+
.Distinct().ToArray();
827831
}
828832
}
829833

0 commit comments

Comments
 (0)