PageRenderTime 58ms CodeModel.GetById 11ms RepoModel.GetById 0ms app.codeStats 1ms

/src/ResourceManager/Profile/Commands.Profile.Test/TypeConversionTests.cs

https://gitlab.com/jslee1/azure-powershell
C# | 588 lines | 557 code | 31 blank | 0 comment | 5 complexity | 45f579630f9bfc0e9f2d1e447672f181 MD5 | raw file
  1. using Microsoft.Azure.Commands.Common.Authentication.Models;
  2. using Microsoft.Azure.Commands.Profile.Models;
  3. using Microsoft.Azure.ServiceManagemenet.Common.Models;
  4. using Microsoft.WindowsAzure.Commands.ScenarioTest;
  5. using System;
  6. using Xunit;
  7. using Xunit.Abstractions;
  8. namespace Microsoft.Azure.Commands.Profile.Test
  9. {
  10. public class TypeConversionTests
  11. {
  12. public TypeConversionTests(ITestOutputHelper output)
  13. {
  14. XunitTracingInterceptor.AddToContext(new XunitTracingInterceptor(output));
  15. }
  16. [Fact]
  17. [Trait(Category.AcceptanceType, Category.CheckIn)]
  18. public void CanConvertNullEnvironments()
  19. {
  20. Assert.Null((PSAzureEnvironment)null);
  21. var environment = (PSAzureEnvironment)new AzureEnvironment();
  22. Assert.NotNull(environment);
  23. Assert.Null(environment.ActiveDirectoryAuthority);
  24. Assert.Null(environment.ActiveDirectoryServiceEndpointResourceId);
  25. Assert.Null(environment.AdTenant);
  26. Assert.Null(environment.AzureDataLakeAnalyticsCatalogAndJobEndpointSuffix);
  27. Assert.Null(environment.AzureDataLakeStoreFileSystemEndpointSuffix);
  28. Assert.Null(environment.AzureKeyVaultDnsSuffix);
  29. Assert.Null(environment.AzureKeyVaultServiceEndpointResourceId);
  30. Assert.False(environment.EnableAdfsAuthentication);
  31. Assert.Null(environment.GalleryUrl);
  32. Assert.Null(environment.GraphUrl);
  33. Assert.Null(environment.GraphEndpointResourceId);
  34. Assert.Null(environment.ManagementPortalUrl);
  35. Assert.Null(environment.Name);
  36. Assert.Null(environment.PublishSettingsFileUrl);
  37. Assert.Null(environment.ResourceManagerUrl);
  38. Assert.Null(environment.ServiceManagementUrl);
  39. Assert.Null(environment.SqlDatabaseDnsSuffix);
  40. Assert.Null(environment.StorageEndpointSuffix);
  41. Assert.Null(environment.TrafficManagerDnsSuffix);
  42. }
  43. [Theory]
  44. [InlineData("TestAll", true, "https://login.microsoftonline.com", "https://management.core.windows.net/",
  45. "Common", "https://mangement.azure.com/dataLakeJobs", "https://management.azure.com/dataLakeFiles",
  46. ".keyvault.azure.com", "https://keyvault.azure.com/", "https://gallery.azure.com",
  47. "https://graph.windows.net", "https://graph.windows.net/", "https://manage.windowsazure.com",
  48. "https://manage.windowsazure.com/publishsettings", "https://management.azure.com",
  49. "https://management.core.windows.net", ".sql.azure.com", ".core.windows.net",
  50. ".trafficmanager.windows.net")]
  51. [Trait(Category.AcceptanceType, Category.CheckIn)]
  52. public void CanConvertValidEnvironments(string name, bool onPremise, string activeDirectory, string serviceResource,
  53. string adTenant, string dataLakeJobs, string dataLakeFiles, string kvDnsSuffix,
  54. string kvResource, string gallery, string graph, string graphResource, string portal,
  55. string publishSettings, string resourceManager, string serviceManagement,
  56. string sqlSuffix, string storageSuffix, string trafficManagerSuffix)
  57. {
  58. AzureEnvironment azEnvironment = CreateEnvironment(name, onPremise, activeDirectory,
  59. serviceResource, adTenant, dataLakeJobs, dataLakeFiles, kvDnsSuffix,
  60. kvResource, gallery, graph, graphResource, portal, publishSettings,
  61. resourceManager, serviceManagement, sqlSuffix, storageSuffix,
  62. trafficManagerSuffix);
  63. var environment = (PSAzureEnvironment)azEnvironment;
  64. Assert.NotNull(environment);
  65. CheckEndpoint(AzureEnvironment.Endpoint.ActiveDirectory, azEnvironment,
  66. environment.ActiveDirectoryAuthority);
  67. CheckEndpoint(AzureEnvironment.Endpoint.ActiveDirectoryServiceEndpointResourceId,
  68. azEnvironment, environment.ActiveDirectoryServiceEndpointResourceId);
  69. CheckEndpoint(AzureEnvironment.Endpoint.AdTenant, azEnvironment,
  70. environment.AdTenant);
  71. CheckEndpoint(AzureEnvironment.Endpoint.AzureDataLakeAnalyticsCatalogAndJobEndpointSuffix, azEnvironment,
  72. environment.AzureDataLakeAnalyticsCatalogAndJobEndpointSuffix);
  73. CheckEndpoint(AzureEnvironment.Endpoint.AzureDataLakeStoreFileSystemEndpointSuffix, azEnvironment,
  74. environment.AzureDataLakeStoreFileSystemEndpointSuffix);
  75. CheckEndpoint(AzureEnvironment.Endpoint.AzureKeyVaultDnsSuffix, azEnvironment,
  76. environment.AzureKeyVaultDnsSuffix);
  77. CheckEndpoint(AzureEnvironment.Endpoint.AzureKeyVaultServiceEndpointResourceId, azEnvironment,
  78. environment.AzureKeyVaultServiceEndpointResourceId);
  79. CheckEndpoint(AzureEnvironment.Endpoint.Gallery, azEnvironment,
  80. environment.GalleryUrl);
  81. CheckEndpoint(AzureEnvironment.Endpoint.Graph, azEnvironment,
  82. environment.GraphUrl);
  83. CheckEndpoint(AzureEnvironment.Endpoint.GraphEndpointResourceId, azEnvironment,
  84. environment.GraphEndpointResourceId);
  85. CheckEndpoint(AzureEnvironment.Endpoint.ManagementPortalUrl, azEnvironment,
  86. environment.ManagementPortalUrl);
  87. CheckEndpoint(AzureEnvironment.Endpoint.PublishSettingsFileUrl, azEnvironment,
  88. environment.PublishSettingsFileUrl);
  89. CheckEndpoint(AzureEnvironment.Endpoint.ResourceManager, azEnvironment,
  90. environment.ResourceManagerUrl);
  91. CheckEndpoint(AzureEnvironment.Endpoint.ServiceManagement, azEnvironment,
  92. environment.ServiceManagementUrl);
  93. CheckEndpoint(AzureEnvironment.Endpoint.SqlDatabaseDnsSuffix, azEnvironment,
  94. environment.SqlDatabaseDnsSuffix);
  95. CheckEndpoint(AzureEnvironment.Endpoint.StorageEndpointSuffix, azEnvironment,
  96. environment.StorageEndpointSuffix);
  97. CheckEndpoint(AzureEnvironment.Endpoint.TrafficManagerDnsSuffix, azEnvironment,
  98. environment.TrafficManagerDnsSuffix);
  99. Assert.Equal(azEnvironment.Name, environment.Name);
  100. Assert.Equal(azEnvironment.OnPremise, environment.EnableAdfsAuthentication);
  101. }
  102. [Fact]
  103. [Trait(Category.AcceptanceType, Category.CheckIn)]
  104. public void CanConvertNullPSEnvironments()
  105. {
  106. PSAzureEnvironment env = null;
  107. Assert.Null((AzureEnvironment)env);
  108. var environment = (AzureEnvironment)new PSAzureEnvironment();
  109. Assert.NotNull(environment);
  110. Assert.False(environment.IsEndpointSet(AzureEnvironment.Endpoint.ActiveDirectory));
  111. Assert.False(environment.IsEndpointSet(AzureEnvironment.Endpoint.ActiveDirectoryServiceEndpointResourceId));
  112. Assert.False(environment.IsEndpointSet(AzureEnvironment.Endpoint.AdTenant));
  113. Assert.False(environment.IsEndpointSet(AzureEnvironment.Endpoint.AzureDataLakeAnalyticsCatalogAndJobEndpointSuffix));
  114. Assert.False(environment.IsEndpointSet(AzureEnvironment.Endpoint.AzureDataLakeStoreFileSystemEndpointSuffix));
  115. Assert.False(environment.IsEndpointSet(AzureEnvironment.Endpoint.AzureKeyVaultDnsSuffix));
  116. Assert.False(environment.IsEndpointSet(AzureEnvironment.Endpoint.AzureKeyVaultServiceEndpointResourceId));
  117. Assert.False(environment.OnPremise);
  118. Assert.False(environment.IsEndpointSet(AzureEnvironment.Endpoint.Gallery));
  119. Assert.False(environment.IsEndpointSet(AzureEnvironment.Endpoint.Graph));
  120. Assert.False(environment.IsEndpointSet(AzureEnvironment.Endpoint.GraphEndpointResourceId));
  121. Assert.False(environment.IsEndpointSet(AzureEnvironment.Endpoint.ManagementPortalUrl));
  122. Assert.Null(environment.Name);
  123. Assert.False(environment.IsEndpointSet(AzureEnvironment.Endpoint.PublishSettingsFileUrl));
  124. Assert.False(environment.IsEndpointSet(AzureEnvironment.Endpoint.ResourceManager));
  125. Assert.False(environment.IsEndpointSet(AzureEnvironment.Endpoint.ServiceManagement));
  126. Assert.False(environment.IsEndpointSet(AzureEnvironment.Endpoint.SqlDatabaseDnsSuffix));
  127. Assert.False(environment.IsEndpointSet(AzureEnvironment.Endpoint.StorageEndpointSuffix));
  128. Assert.False(environment.IsEndpointSet(AzureEnvironment.Endpoint.TrafficManagerDnsSuffix));
  129. }
  130. [Theory]
  131. [InlineData("TestAll", true, "https://login.microsoftonline.com", "https://management.core.windows.net/",
  132. "Common", "https://mangement.azure.com/dataLakeJobs", "https://management.azure.com/dataLakeFiles",
  133. ".keyvault.azure.com", "https://keyvault.azure.com/", "https://gallery.azure.com",
  134. "https://graph.windows.net", "https://graph.windows.net/", "https://manage.windowsazure.com",
  135. "https://manage.windowsazure.com/publishsettings", "https://management.azure.com",
  136. "https://management.core.windows.net", ".sql.azure.com", ".core.windows.net",
  137. ".trafficmanager.windows.net")]
  138. [Trait(Category.AcceptanceType, Category.CheckIn)]
  139. public void CanConvertValidPSEnvironments(string name, bool onPremise, string activeDirectory, string serviceResource,
  140. string adTenant, string dataLakeJobs, string dataLakeFiles, string kvDnsSuffix,
  141. string kvResource, string gallery, string graph, string graphResource, string portal,
  142. string publishSettings, string resourceManager, string serviceManagement,
  143. string sqlSuffix, string storageSuffix, string trafficManagerSuffix)
  144. {
  145. PSAzureEnvironment environment = new PSAzureEnvironment
  146. {
  147. Name = name,
  148. EnableAdfsAuthentication = onPremise,
  149. ActiveDirectoryAuthority = activeDirectory,
  150. ActiveDirectoryServiceEndpointResourceId = serviceResource,
  151. AdTenant = adTenant,
  152. AzureDataLakeAnalyticsCatalogAndJobEndpointSuffix = dataLakeJobs,
  153. AzureDataLakeStoreFileSystemEndpointSuffix = dataLakeFiles,
  154. AzureKeyVaultDnsSuffix = kvDnsSuffix,
  155. AzureKeyVaultServiceEndpointResourceId = kvResource,
  156. GalleryUrl = gallery,
  157. GraphUrl = graph,
  158. GraphEndpointResourceId = graphResource,
  159. ManagementPortalUrl = portal,
  160. PublishSettingsFileUrl = publishSettings,
  161. ResourceManagerUrl = resourceManager,
  162. ServiceManagementUrl = serviceManagement,
  163. SqlDatabaseDnsSuffix = sqlSuffix,
  164. StorageEndpointSuffix = storageSuffix,
  165. TrafficManagerDnsSuffix = trafficManagerSuffix
  166. };
  167. var azEnvironment = (AzureEnvironment)environment;
  168. Assert.NotNull(environment);
  169. CheckEndpoint(AzureEnvironment.Endpoint.ActiveDirectory, azEnvironment,
  170. environment.ActiveDirectoryAuthority);
  171. CheckEndpoint(AzureEnvironment.Endpoint.ActiveDirectoryServiceEndpointResourceId,
  172. azEnvironment, environment.ActiveDirectoryServiceEndpointResourceId);
  173. CheckEndpoint(AzureEnvironment.Endpoint.AdTenant, azEnvironment,
  174. environment.AdTenant);
  175. CheckEndpoint(AzureEnvironment.Endpoint.AzureDataLakeAnalyticsCatalogAndJobEndpointSuffix, azEnvironment,
  176. environment.AzureDataLakeAnalyticsCatalogAndJobEndpointSuffix);
  177. CheckEndpoint(AzureEnvironment.Endpoint.AzureDataLakeStoreFileSystemEndpointSuffix, azEnvironment,
  178. environment.AzureDataLakeStoreFileSystemEndpointSuffix);
  179. CheckEndpoint(AzureEnvironment.Endpoint.AzureKeyVaultDnsSuffix, azEnvironment,
  180. environment.AzureKeyVaultDnsSuffix);
  181. CheckEndpoint(AzureEnvironment.Endpoint.AzureKeyVaultServiceEndpointResourceId, azEnvironment,
  182. environment.AzureKeyVaultServiceEndpointResourceId);
  183. CheckEndpoint(AzureEnvironment.Endpoint.Gallery, azEnvironment,
  184. environment.GalleryUrl);
  185. CheckEndpoint(AzureEnvironment.Endpoint.Graph, azEnvironment,
  186. environment.GraphUrl);
  187. CheckEndpoint(AzureEnvironment.Endpoint.GraphEndpointResourceId, azEnvironment,
  188. environment.GraphEndpointResourceId);
  189. CheckEndpoint(AzureEnvironment.Endpoint.ManagementPortalUrl, azEnvironment,
  190. environment.ManagementPortalUrl);
  191. CheckEndpoint(AzureEnvironment.Endpoint.PublishSettingsFileUrl, azEnvironment,
  192. environment.PublishSettingsFileUrl);
  193. CheckEndpoint(AzureEnvironment.Endpoint.ResourceManager, azEnvironment,
  194. environment.ResourceManagerUrl);
  195. CheckEndpoint(AzureEnvironment.Endpoint.ServiceManagement, azEnvironment,
  196. environment.ServiceManagementUrl);
  197. CheckEndpoint(AzureEnvironment.Endpoint.SqlDatabaseDnsSuffix, azEnvironment,
  198. environment.SqlDatabaseDnsSuffix);
  199. CheckEndpoint(AzureEnvironment.Endpoint.StorageEndpointSuffix, azEnvironment,
  200. environment.StorageEndpointSuffix);
  201. CheckEndpoint(AzureEnvironment.Endpoint.TrafficManagerDnsSuffix, azEnvironment,
  202. environment.TrafficManagerDnsSuffix);
  203. Assert.Equal(azEnvironment.Name, environment.Name);
  204. Assert.Equal(azEnvironment.OnPremise, environment.EnableAdfsAuthentication);
  205. }
  206. private AzureEnvironment CreateEnvironment(string name, bool onPremise, string activeDirectory, string serviceResource,
  207. string adTenant, string dataLakeJobs, string dataLakeFiles, string kvDnsSuffix,
  208. string kvResource, string gallery, string graph, string graphResource, string portal,
  209. string publishSettings, string resourceManager, string serviceManagement,
  210. string sqlSuffix, string storageSuffix, string trafficManagerSuffix)
  211. {
  212. var environment = new AzureEnvironment() { Name = name, OnPremise = onPremise };
  213. SetEndpoint(AzureEnvironment.Endpoint.ActiveDirectory, environment, activeDirectory);
  214. CheckEndpoint(AzureEnvironment.Endpoint.ActiveDirectoryServiceEndpointResourceId,
  215. environment, serviceResource);
  216. CheckEndpoint(AzureEnvironment.Endpoint.AdTenant, environment, adTenant);
  217. CheckEndpoint(
  218. AzureEnvironment.Endpoint.AzureDataLakeAnalyticsCatalogAndJobEndpointSuffix,
  219. environment,
  220. dataLakeJobs);
  221. CheckEndpoint(AzureEnvironment.Endpoint.AzureDataLakeStoreFileSystemEndpointSuffix,
  222. environment,
  223. dataLakeFiles);
  224. CheckEndpoint(AzureEnvironment.Endpoint.AzureKeyVaultDnsSuffix, environment,
  225. kvDnsSuffix);
  226. CheckEndpoint(AzureEnvironment.Endpoint.AzureKeyVaultServiceEndpointResourceId,
  227. environment,
  228. kvResource);
  229. CheckEndpoint(AzureEnvironment.Endpoint.Gallery, environment, gallery);
  230. CheckEndpoint(AzureEnvironment.Endpoint.Graph, environment, graph);
  231. CheckEndpoint(AzureEnvironment.Endpoint.GraphEndpointResourceId, environment,
  232. graphResource);
  233. CheckEndpoint(AzureEnvironment.Endpoint.ManagementPortalUrl, environment, portal);
  234. CheckEndpoint(AzureEnvironment.Endpoint.PublishSettingsFileUrl, environment,
  235. publishSettings);
  236. CheckEndpoint(AzureEnvironment.Endpoint.ResourceManager, environment,
  237. resourceManager);
  238. CheckEndpoint(AzureEnvironment.Endpoint.ServiceManagement, environment,
  239. serviceManagement);
  240. CheckEndpoint(AzureEnvironment.Endpoint.SqlDatabaseDnsSuffix, environment,
  241. sqlSuffix);
  242. CheckEndpoint(AzureEnvironment.Endpoint.StorageEndpointSuffix, environment,
  243. storageSuffix);
  244. CheckEndpoint(AzureEnvironment.Endpoint.TrafficManagerDnsSuffix, environment,
  245. trafficManagerSuffix);
  246. return environment;
  247. }
  248. private void SetEndpoint(AzureEnvironment.Endpoint endpoint, AzureEnvironment environment, string endpointValue)
  249. {
  250. if (!environment.IsEndpointSet(endpoint) && !string.IsNullOrEmpty(endpointValue))
  251. {
  252. environment.Endpoints[endpoint] = endpointValue;
  253. }
  254. }
  255. private void CheckEndpoint(AzureEnvironment.Endpoint endpoint, AzureEnvironment environment, string valueToCheck)
  256. {
  257. if (environment.IsEndpointSet(endpoint))
  258. {
  259. Assert.Equal(environment.GetEndpoint(endpoint), valueToCheck);
  260. }
  261. }
  262. [Fact]
  263. [Trait(Category.AcceptanceType, Category.CheckIn)]
  264. public void CanConvertNullAzureSubscriptions()
  265. {
  266. Assert.Null((PSAzureSubscription)null);
  267. var subscription = (PSAzureSubscription)(new AzureSubscription());
  268. Assert.NotNull(subscription);
  269. Assert.Null(subscription.CurrentStorageAccountName);
  270. Assert.Equal(Guid.Empty.ToString(), subscription.SubscriptionId);
  271. Assert.Null(subscription.SubscriptionName);
  272. Assert.Null(subscription.TenantId);
  273. Assert.NotNull(subscription.ToString());
  274. }
  275. [Theory,
  276. InlineData(null, null, null, null, null),
  277. InlineData("user@contoso.org", "Test Subscription", "AzureCloud", "juststorageaccountname", "juststorageaccountname"),
  278. InlineData("user@contoso.org", "Test Subscription", "AzureCloud", "AccountName=juststorageaccountname", "juststorageaccountname"),
  279. InlineData("user@contoso.org", "Test Subscription", "AzureCloud", "key1 = value1; AccountName = juststorageaccountname", "juststorageaccountname")]
  280. [Trait(Category.AcceptanceType, Category.CheckIn)]
  281. public void CanConvertValidAzureSubscriptions(string account, string name, string environment, string storageAccount, string expectedAccountName)
  282. {
  283. var oldSubscription = new AzureSubscription()
  284. {
  285. Account = account,
  286. Environment = environment,
  287. Id = Guid.NewGuid(),
  288. Name = name
  289. };
  290. oldSubscription.SetProperty(AzureSubscription.Property.StorageAccount, storageAccount);
  291. oldSubscription.SetProperty(AzureSubscription.Property.Tenants, Guid.NewGuid().ToString());
  292. var subscription = (PSAzureSubscription)oldSubscription;
  293. Assert.Equal(oldSubscription.Name, subscription.SubscriptionName);
  294. Assert.Equal(oldSubscription.Id.ToString(), subscription.SubscriptionId);
  295. Assert.Equal(oldSubscription.GetProperty(AzureSubscription.Property.Tenants), subscription.TenantId);
  296. Assert.Equal(expectedAccountName, subscription.CurrentStorageAccountName);
  297. Assert.Equal(storageAccount, subscription.CurrentStorageAccount);
  298. Assert.NotNull(subscription.ToString());
  299. }
  300. [Fact]
  301. [Trait(Category.AcceptanceType, Category.CheckIn)]
  302. public void CanConvertNullPSAzureSubscriptions()
  303. {
  304. Assert.Null((AzureSubscription)null);
  305. var subscription = (AzureSubscription)(new PSAzureSubscription());
  306. Assert.NotNull(subscription);
  307. Assert.False(subscription.IsPropertySet(AzureSubscription.Property.StorageAccount));
  308. Assert.False(subscription.IsPropertySet(AzureSubscription.Property.Tenants));
  309. Assert.Equal(Guid.Empty, subscription.Id);
  310. Assert.Null(subscription.Name);
  311. }
  312. [Theory,
  313. InlineData(null, null),
  314. InlineData("Test Subscription", "juststorageaccountname"),
  315. InlineData("Test Subscription", "AccountName=juststorageaccountname")]
  316. [Trait(Category.AcceptanceType, Category.CheckIn)]
  317. public void CanConvertValidPSAzureSubscriptions(string name, string storageAccount)
  318. {
  319. var oldSubscription = new PSAzureSubscription()
  320. {
  321. CurrentStorageAccount = storageAccount,
  322. SubscriptionId = Guid.NewGuid().ToString(),
  323. SubscriptionName = name,
  324. TenantId = Guid.NewGuid().ToString()
  325. };
  326. var subscription = (AzureSubscription)oldSubscription;
  327. Assert.Equal(oldSubscription.SubscriptionName, subscription.Name);
  328. Assert.Equal(oldSubscription.SubscriptionId, subscription.Id.ToString());
  329. Assert.Equal(oldSubscription.TenantId, subscription.GetProperty(AzureSubscription.Property.Tenants));
  330. Assert.Equal(storageAccount, subscription.GetProperty(AzureSubscription.Property.StorageAccount));
  331. }
  332. [Fact]
  333. [Trait(Category.AcceptanceType, Category.CheckIn)]
  334. public void CanConvertNullAzureTenants()
  335. {
  336. Assert.Null((PSAzureTenant)null);
  337. var tenant = (PSAzureTenant)(new AzureTenant());
  338. Assert.NotNull(tenant);
  339. Assert.Null(tenant.Domain);
  340. Assert.Equal(Guid.Empty.ToString(), tenant.TenantId);
  341. Assert.Null(tenant.ToString());
  342. }
  343. [Theory,
  344. InlineData(null),
  345. InlineData("contoso.org")]
  346. [Trait(Category.AcceptanceType, Category.CheckIn)]
  347. public void CanConvertValidAzureTenants(string domain)
  348. {
  349. var oldTenant = new AzureTenant()
  350. {
  351. Domain = domain,
  352. Id = Guid.NewGuid(),
  353. };
  354. var tenant = (PSAzureTenant)oldTenant;
  355. Assert.Equal(oldTenant.Domain, tenant.Domain);
  356. Assert.Equal(oldTenant.Id.ToString(), tenant.TenantId);
  357. Assert.NotNull(tenant.ToString());
  358. }
  359. [Fact]
  360. [Trait(Category.AcceptanceType, Category.CheckIn)]
  361. public void CanConvertNullPSAzureTenants()
  362. {
  363. Assert.Null((AzureTenant)null);
  364. var tenant = (AzureTenant)(new PSAzureTenant());
  365. Assert.NotNull(tenant);
  366. Assert.Null(tenant.Domain);
  367. Assert.Equal(Guid.Empty, tenant.Id);
  368. }
  369. [Theory,
  370. InlineData(null),
  371. InlineData("contoso.org")]
  372. [Trait(Category.AcceptanceType, Category.CheckIn)]
  373. public void CanConvertValidPSAzureTenants(string domain)
  374. {
  375. var oldTenant = new PSAzureTenant()
  376. {
  377. Domain = domain,
  378. TenantId = Guid.NewGuid().ToString()
  379. };
  380. var tenant = (AzureTenant)oldTenant;
  381. Assert.Equal(oldTenant.Domain, tenant.Domain);
  382. Assert.Equal(oldTenant.TenantId, tenant.Id.ToString());
  383. }
  384. [Fact]
  385. [Trait(Category.AcceptanceType, Category.CheckIn)]
  386. public void CanConvertNullAzureAccounts()
  387. {
  388. Assert.Null((PSAzureRmAccount)null);
  389. var account = (PSAzureRmAccount)(new AzureAccount());
  390. Assert.NotNull(account);
  391. Assert.Null(account.Id);
  392. Assert.Equal(default(AzureAccount.AccountType).ToString(), account.AccountType);
  393. Assert.Null(account.ToString());
  394. }
  395. [Theory,
  396. InlineData(null, AzureAccount.AccountType.AccessToken),
  397. InlineData("user@contoso.org", AzureAccount.AccountType.User),
  398. InlineData("user@contoso.org", AzureAccount.AccountType.Certificate),
  399. InlineData("user@contoso.org", AzureAccount.AccountType.ServicePrincipal)]
  400. [Trait(Category.AcceptanceType, Category.CheckIn)]
  401. public void CanConvertValidAzureAccounts(string id, AzureAccount.AccountType type)
  402. {
  403. var oldAccount = new AzureAccount()
  404. {
  405. Type = type,
  406. Id = id
  407. };
  408. var account = (PSAzureRmAccount)oldAccount;
  409. Assert.Equal(oldAccount.Type.ToString(), account.AccountType);
  410. Assert.Equal(oldAccount.Id, account.Id);
  411. var accountString = account.ToString();
  412. }
  413. [Fact]
  414. [Trait(Category.AcceptanceType, Category.CheckIn)]
  415. public void CanConvertNullPSAzureAccounts()
  416. {
  417. Assert.Null((AzureAccount)null);
  418. var account = (AzureAccount)(new PSAzureRmAccount());
  419. Assert.NotNull(account);
  420. Assert.Null(account.Id);
  421. Assert.Equal(default(AzureAccount.AccountType), account.Type);
  422. }
  423. [Theory,
  424. InlineData(null, AzureAccount.AccountType.AccessToken),
  425. InlineData("user@contoso.org", AzureAccount.AccountType.User),
  426. InlineData("user@contoso.org", AzureAccount.AccountType.Certificate),
  427. InlineData("user@contoso.org", AzureAccount.AccountType.ServicePrincipal)]
  428. [Trait(Category.AcceptanceType, Category.CheckIn)]
  429. public void CanConvertValidPSAzureAccounts(string id, AzureAccount.AccountType type)
  430. {
  431. var oldAccount = new PSAzureRmAccount
  432. {
  433. Id = id,
  434. AccountType = type.ToString()
  435. };
  436. var account = (AzureAccount)oldAccount;
  437. Assert.Equal(oldAccount.AccountType, account.Type.ToString());
  438. Assert.Equal(oldAccount.Id, account.Id);
  439. }
  440. [Fact]
  441. [Trait(Category.AcceptanceType, Category.CheckIn)]
  442. public void CanConvertNullAzureContexts()
  443. {
  444. Assert.Null((PSAzureContext)null);
  445. var context = (PSAzureContext)(new AzureContext(null, null, null, null));
  446. Assert.NotNull(context);
  447. Assert.Null(context.Account);
  448. Assert.Null(context.Tenant);
  449. Assert.Null(context.Environment);
  450. Assert.Null(context.Subscription);
  451. Assert.NotNull(context.ToString());
  452. }
  453. [Theory,
  454. InlineData("user@contoso.org", "Test Subscription", "juststorageaccountname", "juststorageaccountname"),
  455. InlineData("user@contoso.org", "Test Subscription", "AccountName=juststorageaccountname", "juststorageaccountname"),
  456. InlineData("user@contoso.org", "Test Subscription", "key1 = value1; AccountName = juststorageaccountname", "juststorageaccountname")]
  457. [Trait(Category.AcceptanceType, Category.CheckIn)]
  458. public void CanConvertValidAzureContexts(string account, string subscriptionName, string storageAccount, string expectedAccountName)
  459. {
  460. string domain = GetDomainName(account);
  461. var tenantId = Guid.NewGuid();
  462. var oldContext = new AzureContext(
  463. account: new AzureAccount() { Id = account, Type = AzureAccount.AccountType.User },
  464. environment: AzureEnvironment.PublicEnvironments[EnvironmentName.AzureCloud],
  465. subscription: new AzureSubscription() { Id = Guid.NewGuid(), Account = account, Environment = EnvironmentName.AzureCloud, Name = subscriptionName },
  466. tenant: new AzureTenant() { Id = tenantId, Domain = domain });
  467. oldContext.Subscription.SetProperty(AzureSubscription.Property.StorageAccount, storageAccount);
  468. oldContext.Subscription.SetProperty(AzureSubscription.Property.Tenants, tenantId.ToString());
  469. var context = (PSAzureContext)oldContext;
  470. Assert.NotNull(context);
  471. Assert.NotNull(context.Account);
  472. Assert.Equal(oldContext.Account.Type.ToString(), context.Account.AccountType);
  473. Assert.Equal(oldContext.Account.Id, context.Account.Id);
  474. Assert.NotNull(context.Tenant);
  475. Assert.Equal(oldContext.Tenant.Domain, context.Tenant.Domain);
  476. Assert.Equal(oldContext.Tenant.Id.ToString(), context.Tenant.TenantId);
  477. Assert.NotNull(context.Subscription);
  478. Assert.Equal(oldContext.Subscription.Name, context.Subscription.SubscriptionName);
  479. Assert.Equal(oldContext.Subscription.Id.ToString(), context.Subscription.SubscriptionId);
  480. Assert.Equal(oldContext.Subscription.GetProperty(AzureSubscription.Property.Tenants), context.Subscription.TenantId);
  481. Assert.Equal(expectedAccountName, context.Subscription.CurrentStorageAccountName);
  482. Assert.Equal(storageAccount, context.Subscription.CurrentStorageAccount);
  483. Assert.NotNull(context.ToString());
  484. }
  485. private static string GetDomainName(string account)
  486. {
  487. string result = null;
  488. if (!string.IsNullOrWhiteSpace(account) && account.Contains("@"))
  489. {
  490. var parts = account.Split(new char[] { '@' }, 2, StringSplitOptions.RemoveEmptyEntries);
  491. result = parts[1];
  492. }
  493. return result;
  494. }
  495. [Fact]
  496. [Trait(Category.AcceptanceType, Category.CheckIn)]
  497. public void CanConvertNullPSAzureContexts()
  498. {
  499. Assert.Null((AzureContext)null);
  500. var context = (AzureContext)(new PSAzureContext());
  501. Assert.NotNull(context);
  502. Assert.Null(context.Account);
  503. Assert.Null(context.Environment);
  504. Assert.Null(context.Subscription);
  505. Assert.Null(context.Tenant);
  506. }
  507. [Theory,
  508. InlineData("user@contoso.org", "Test Subscription", "juststorageaccountname", "juststorageaccountname"),
  509. InlineData("user@contoso.org", "Test Subscription", "AccountName=juststorageaccountname", "juststorageaccountname"),
  510. InlineData("user@contoso.org", "Test Subscription", "key1 = value1; AccountName = juststorageaccountname", "juststorageaccountname")]
  511. [Trait(Category.AcceptanceType, Category.CheckIn)]
  512. public void CanConvertValidPSAzureContexts(string account, string subscription, string storageAccount, string storageAccountName)
  513. {
  514. var tenantId = Guid.NewGuid();
  515. var subscriptionId = Guid.NewGuid();
  516. var domain = GetDomainName(account);
  517. var oldContext = new PSAzureContext()
  518. {
  519. Account = new PSAzureRmAccount
  520. {
  521. Id = account,
  522. AccountType = "User"
  523. },
  524. Environment = (PSAzureEnvironment)AzureEnvironment.PublicEnvironments[EnvironmentName.AzureCloud],
  525. Subscription =
  526. new PSAzureSubscription
  527. {
  528. CurrentStorageAccount = storageAccount,
  529. CurrentStorageAccountName = storageAccountName,
  530. SubscriptionId = subscriptionId.ToString(),
  531. SubscriptionName = subscription,
  532. TenantId = tenantId.ToString()
  533. },
  534. Tenant = new PSAzureTenant
  535. {
  536. Domain = domain,
  537. TenantId = tenantId.ToString()
  538. }
  539. };
  540. var context = (AzureContext)oldContext;
  541. Assert.NotNull(context);
  542. Assert.NotNull(context.Account);
  543. Assert.Equal(oldContext.Account.AccountType, context.Account.Type.ToString());
  544. Assert.Equal(oldContext.Account.Id, context.Account.Id);
  545. Assert.NotNull(context.Tenant);
  546. Assert.Equal(oldContext.Tenant.Domain, context.Tenant.Domain);
  547. Assert.Equal(oldContext.Tenant.TenantId, context.Tenant.Id.ToString());
  548. Assert.NotNull(context.Subscription);
  549. Assert.Equal(oldContext.Subscription.SubscriptionName, context.Subscription.Name);
  550. Assert.Equal(oldContext.Subscription.SubscriptionId, context.Subscription.Id.ToString());
  551. Assert.True(context.Subscription.IsPropertySet(AzureSubscription.Property.Tenants));
  552. Assert.Equal(oldContext.Subscription.TenantId, context.Subscription.GetProperty(AzureSubscription.Property.Tenants));
  553. Assert.True(context.Subscription.IsPropertySet(AzureSubscription.Property.StorageAccount));
  554. Assert.Equal(storageAccount, context.Subscription.GetProperty(AzureSubscription.Property.StorageAccount));
  555. }
  556. }
  557. }