public ProfileCmdltsTests() : base() { MockDataStore dataStore = new MockDataStore(); ProfileClient.DataStore = dataStore; commandRuntimeMock = new Mock<ICommandRuntime>(); SetMockData(); AzureSession.SetCurrentContext(null, null, null); }
public void ProfileMigratesOldData() { MockDataStore dataStore = new MockDataStore(); dataStore.VirtualStore[oldProfileDataPath] = oldProfileData; ProfileClient.DataStore = dataStore; ProfileClient client = new ProfileClient(); Assert.False(dataStore.FileExists(oldProfileDataPath)); Assert.True(dataStore.FileExists(newProfileDataPath)); }
public void ProfileSerializeDeserializeWorks() { var dataStore = new MockDataStore(); AzureSession.DataStore = dataStore; var profilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, AzureSession.ProfileFile); var currentProfile = new AzureRMProfile(profilePath); var tenantId = Guid.NewGuid().ToString(); var environment = new AzureEnvironment { Name = "testCloud", Endpoints = { { AzureEnvironment.Endpoint.ActiveDirectory, "http://contoso.com" } } }; var account = new AzureAccount { Id = "*****@*****.**", Type = AzureAccount.AccountType.User, Properties = { { AzureAccount.Property.Tenants, tenantId } } }; var sub = new AzureSubscription { Account = account.Id, Environment = environment.Name, Id = new Guid(), Name = "Contoso Test Subscription", Properties = { { AzureSubscription.Property.Tenants, tenantId } } }; var tenant = new AzureTenant { Id = new Guid(tenantId), Domain = "contoso.com" }; currentProfile.Context = new AzureContext(sub, account, environment, tenant); currentProfile.Environments[environment.Name] = environment; currentProfile.Context.TokenCache = new byte[] { 1, 2, 3, 4, 5, 6, 8, 9, 0 }; AzureRMProfile deserializedProfile; // Round-trip the exception: Serialize and de-serialize with a BinaryFormatter BinaryFormatter bf = new BinaryFormatter(); using (MemoryStream ms = new MemoryStream()) { // "Save" object state bf.Serialize(ms, currentProfile); // Re-use the same stream for de-serialization ms.Seek(0, 0); // Replace the original exception with de-serialized one deserializedProfile = (AzureRMProfile)bf.Deserialize(ms); } Assert.NotNull(deserializedProfile); var jCurrentProfile = currentProfile.ToString(); var jDeserializedProfile = deserializedProfile.ToString(); Assert.Equal(jCurrentProfile, jDeserializedProfile); }
public void ProfileSerializeDeserializeWorks() { var dataStore = new MockDataStore(); var currentProfile = new AzureProfile(Path.Combine(AzureSession.ProfileDirectory, AzureSession.ProfileFile)); AzureSession.DataStore = dataStore; var client = new ProfileClient(currentProfile); var tenant = Guid.NewGuid().ToString(); var environment = new AzureEnvironment { Name = "testCloud", Endpoints = { { AzureEnvironment.Endpoint.ActiveDirectory, "http://contoso.com" } } }; var account = new AzureAccount { Id = "*****@*****.**", Type = AzureAccount.AccountType.User, Properties = { { AzureAccount.Property.Tenants, tenant } } }; var sub = new AzureSubscription { Account = account.Id, Environment = environment.Name, Id = new Guid(), Name = "Contoso Test Subscription", Properties = { { AzureSubscription.Property.Tenants, tenant } } }; client.AddOrSetEnvironment(environment); client.AddOrSetAccount(account); client.AddOrSetSubscription(sub); AzureProfile deserializedProfile; // Round-trip the exception: Serialize and de-serialize with a BinaryFormatter BinaryFormatter bf = new BinaryFormatter(); using (MemoryStream ms = new MemoryStream()) { // "Save" object state bf.Serialize(ms, currentProfile); // Re-use the same stream for de-serialization ms.Seek(0, 0); // Replace the original exception with de-serialized one deserializedProfile = (AzureProfile)bf.Deserialize(ms); } Assert.NotNull(deserializedProfile); var jCurrentProfile = JsonConvert.SerializeObject(currentProfile); var jDeserializedProfile = JsonConvert.SerializeObject(deserializedProfile); Assert.Equal(jCurrentProfile, jDeserializedProfile); }
public void ProfileSaveDoesNotSerializeContext() { var dataStore = new MockDataStore(); var profilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, AzureSession.ProfileFile); var profile = new AzureSMProfile(profilePath); AzureSession.DataStore = dataStore; var tenant = Guid.NewGuid().ToString(); var environment = new AzureEnvironment { Name = "testCloud", Endpoints = { { AzureEnvironment.Endpoint.ActiveDirectory, "http://contoso.com" } } }; var account = new AzureAccount { Id = "*****@*****.**", Type = AzureAccount.AccountType.User, Properties = { { AzureAccount.Property.Tenants, tenant } } }; var sub = new AzureSubscription { Account = account.Id, Environment = environment.Name, Id = new Guid(), Name = "Contoso Test Subscription", Properties = { { AzureSubscription.Property.Tenants, tenant } } }; profile.Environments[environment.Name] = environment; profile.Accounts[account.Id] = account; profile.Subscriptions[sub.Id] = sub; profile.Save(); var profileFile = profile.ProfilePath; string profileContents = dataStore.ReadFileAsText(profileFile); var readProfile = JsonConvert.DeserializeObject<Dictionary<string, object>>(profileContents); Assert.False(readProfile.ContainsKey("DefaultContext")); AzureSMProfile parsedProfile = new AzureSMProfile(); var serializer = new JsonProfileSerializer(); Assert.True(serializer.Deserialize(profileContents, parsedProfile)); Assert.NotNull(parsedProfile); Assert.NotNull(parsedProfile.Environments); Assert.True(parsedProfile.Environments.ContainsKey(environment.Name)); Assert.NotNull(parsedProfile.Accounts); Assert.True(parsedProfile.Accounts.ContainsKey(account.Id)); Assert.NotNull(parsedProfile.Subscriptions); Assert.True(parsedProfile.Subscriptions.ContainsKey(sub.Id)); }
public void RefreshSubscriptionsListsAllSubscriptions() { SetMocks(new[] { rdfeSubscription1, rdfeSubscription2 }.ToList(), new[] { csmSubscription1, csmSubscription1withDuplicateId }.ToList()); MockDataStore dataStore = new MockDataStore(); ProfileClient.DataStore = dataStore; ProfileClient client = new ProfileClient(); client.AddOrSetAccount(azureAccount); client.AddOrSetEnvironment(azureEnvironment); client.AddOrSetSubscription(azureSubscription1); PowerShellUtilities.GetCurrentModeOverride = () => AzureModule.AzureServiceManagement; var subscriptions = client.RefreshSubscriptions(azureEnvironment); Assert.Equal(4, subscriptions.Count); Assert.Equal(1, subscriptions.Count(s => s.Id == new Guid(rdfeSubscription1.SubscriptionId))); Assert.Equal(1, subscriptions.Count(s => s.Id == new Guid(rdfeSubscription2.SubscriptionId))); Assert.Equal(1, subscriptions.Count(s => s.Id == new Guid(csmSubscription1.SubscriptionId))); Assert.True(subscriptions.All(s => s.Environment == "Test")); Assert.True(subscriptions.All(s => s.Account == "test")); }
public void RefreshSubscriptionsWorksWithMooncake() { SetMocks(new[] { rdfeSubscription1, rdfeSubscription2 }.ToList(), new[] { csmSubscription1, csmSubscription1withDuplicateId }.ToList()); MockDataStore dataStore = new MockDataStore(); ProfileClient.DataStore = dataStore; ProfileClient client = new ProfileClient(); PowerShellUtilities.GetCurrentModeOverride = () => AzureModule.AzureResourceManager; client.Profile.Accounts[azureAccount.Id] = azureAccount; var subscriptions = client.RefreshSubscriptions(client.Profile.Environments[EnvironmentName.AzureChinaCloud]); Assert.Equal(2, subscriptions.Count); Assert.Equal(2, subscriptions.Count(s => s.Account == "test")); Assert.Equal(1, subscriptions.Count(s => s.Id == new Guid(rdfeSubscription1.SubscriptionId))); Assert.Equal(1, subscriptions.First(s => s.Id == new Guid(rdfeSubscription1.SubscriptionId)).GetPropertyAsArray(AzureSubscription.Property.SupportedModes).Count()); Assert.Equal(1, subscriptions.Count(s => s.Id == new Guid(rdfeSubscription2.SubscriptionId))); }
public void RemoveAzureAccountRemovesInMemoryAccount() { MockDataStore dataStore = new MockDataStore(); ProfileClient.DataStore = dataStore; ProfileClient client = new ProfileClient(); client.Profile.Subscriptions[azureSubscription1.Id] = azureSubscription1; client.Profile.Subscriptions[azureSubscription2.Id] = azureSubscription2; client.Profile.Accounts[azureAccount.Id] = azureAccount; azureSubscription3withoutUser.Account = "test2"; client.Profile.Accounts["test2"] = new AzureAccount { Id = "test2", Type = AzureAccount.AccountType.User, Properties = new Dictionary<AzureAccount.Property, string> { {AzureAccount.Property.Subscriptions, azureSubscription1.Id.ToString()} } }; client.Profile.Subscriptions[azureSubscription1.Id].Account = azureAccount.Id; client.Profile.Environments[azureEnvironment.Name] = azureEnvironment; AzureSession.SetCurrentContext(azureSubscription1, azureEnvironment, azureAccount); client.RemoveAccount(azureAccount.Id); Assert.Equal("test2", AzureSession.CurrentContext.Account.Id); Assert.Equal("test2", AzureSession.CurrentContext.Subscription.Account); Assert.Equal(azureSubscription1.Id, AzureSession.CurrentContext.Subscription.Id); client.RemoveAccount("test2"); Assert.Null(AzureSession.CurrentContext.Account); Assert.Null(AzureSession.CurrentContext.Subscription); Assert.Equal(EnvironmentName.AzureCloud, AzureSession.CurrentContext.Environment.Name); }
public void ImportPublishSettingsAddsSecondCertificate() { MockDataStore dataStore = new MockDataStore(); ProfileClient.DataStore = dataStore; ProfileClient client = new ProfileClient(); var newSubscription = new AzureSubscription { Id = new Guid("f62b1e05-af8f-4203-8f97-421089adc053"), Name = "Microsoft Azure Sandbox 9-220", Environment = EnvironmentName.AzureCloud, Account = azureAccount.Id }; azureAccount.SetProperty(AzureAccount.Property.Subscriptions, newSubscription.Id.ToString()); client.AddOrSetAccount(azureAccount); client.AddOrSetSubscription(newSubscription); client.Profile.Save(); client = new ProfileClient(); dataStore.WriteFile("ImportPublishSettingsLoadsAndReturnsSubscriptions.publishsettings", Properties.Resources.ValidProfile); client.AddOrSetEnvironment(azureEnvironment); var subscriptions = client.ImportPublishSettings("ImportPublishSettingsLoadsAndReturnsSubscriptions.publishsettings", azureEnvironment.Name); Assert.Equal(2, client.Profile.Accounts.Count()); var certAccount = client.Profile.Accounts.Values.First(a => a.Type == AzureAccount.AccountType.Certificate); var userAccount = client.Profile.Accounts.Values.First(a => a.Type == AzureAccount.AccountType.User); Assert.True(subscriptions.All(s => s.Account == certAccount.Id)); Assert.Equal(azureAccount.Id, client.Profile.Subscriptions.Values.First(s => s.Id == newSubscription.Id).Account); Assert.True(userAccount.GetPropertyAsArray(AzureAccount.Property.Subscriptions).Contains(newSubscription.Id.ToString())); Assert.True(certAccount.GetPropertyAsArray(AzureAccount.Property.Subscriptions).Contains(newSubscription.Id.ToString())); Assert.Equal(6, subscriptions.Count); Assert.Equal(6, client.Profile.Subscriptions.Count); }
public void ImportPublishSettingsUsesProperEnvironmentWithChinaManagementUrlOld() { MockDataStore dataStore = new MockDataStore(); ProfileClient.DataStore = dataStore; ProfileClient client = new ProfileClient(); dataStore.WriteFile("ImportPublishSettingsLoadsAndReturnsSubscriptions.publishsettings", Properties.Resources.ValidProfileChinaOld); client.AddOrSetEnvironment(azureEnvironment); var subscriptions = client.ImportPublishSettings("ImportPublishSettingsLoadsAndReturnsSubscriptions.publishsettings", null); Assert.True(subscriptions.All(s => s.Environment == EnvironmentName.AzureChinaCloud)); Assert.Equal(1, subscriptions.Count); Assert.Equal(1, client.Profile.Subscriptions.Count); }
public void ProfileMigratesAccountsAndDefaultSubscriptions() { MockDataStore dataStore = new MockDataStore(); dataStore.VirtualStore[oldProfileDataPath] = oldProfileData; ProfileClient.DataStore = dataStore; ProfileClient client = new ProfileClient(); // Verify Environment migration Assert.Equal(4, client.Profile.Environments.Count); Assert.Equal("Current", client.Profile.Environments["Current"].Name); Assert.Equal("Dogfood", client.Profile.Environments["Dogfood"].Name); Assert.Equal("https://login.windows-ppe.net/", client.Profile.Environments["Dogfood"].Endpoints[AzureEnvironment.Endpoint.AdTenant]); Assert.Equal("https://management.core.windows.net/", client.Profile.Environments["Dogfood"].Endpoints[AzureEnvironment.Endpoint.ActiveDirectoryServiceEndpointResourceId]); Assert.Equal("https://df.gallery.azure-test.net", client.Profile.Environments["Dogfood"].Endpoints[AzureEnvironment.Endpoint.Gallery]); Assert.Equal("https://windows.azure-test.net", client.Profile.Environments["Dogfood"].Endpoints[AzureEnvironment.Endpoint.ManagementPortalUrl]); Assert.Equal("https://auxnext.windows.azure-test.net/publishsettings/index", client.Profile.Environments["Dogfood"].Endpoints[AzureEnvironment.Endpoint.PublishSettingsFileUrl]); Assert.Equal("https://api-dogfood.resources.windows-int.net", client.Profile.Environments["Dogfood"].Endpoints[AzureEnvironment.Endpoint.ResourceManager]); Assert.Equal("https://management-preview.core.windows-int.net/", client.Profile.Environments["Dogfood"].Endpoints[AzureEnvironment.Endpoint.ServiceManagement]); Assert.Equal(".database.windows.net", client.Profile.Environments["Dogfood"].Endpoints[AzureEnvironment.Endpoint.SqlDatabaseDnsSuffix]); // Verify subscriptions Assert.Equal(3, client.Profile.Subscriptions.Count); Assert.False(client.Profile.Subscriptions.ContainsKey(new Guid("06E3F6FD-A3AA-439A-8FC4-1F5C41D2AD1E"))); Assert.True(client.Profile.Subscriptions.ContainsKey(new Guid("06E3F6FD-A3AA-439A-8FC4-1F5C41D2AD1F"))); Assert.Equal("Test 2", client.Profile.Subscriptions[new Guid("06E3F6FD-A3AA-439A-8FC4-1F5C41D2AD1F")].Name); Assert.True(client.Profile.Subscriptions[new Guid("06E3F6FD-A3AA-439A-8FC4-1F5C41D2AD1F")].IsPropertySet(AzureSubscription.Property.Default)); Assert.Equal("*****@*****.**", client.Profile.Subscriptions[new Guid("06E3F6FD-A3AA-439A-8FC4-1F5C41D2AD1F")].Account); Assert.Equal("Dogfood", client.Profile.Subscriptions[new Guid("06E3F6FD-A3AA-439A-8FC4-1F5C41D2AD1F")].Environment); Assert.Equal("123", client.Profile.Subscriptions[new Guid("06E3F6FD-A3AA-439A-8FC4-1F5C41D2AD1F")].Properties[AzureSubscription.Property.Tenants]); Assert.True(client.Profile.Subscriptions.ContainsKey(new Guid("d1e52cbc-b073-42e2-a0a0-c2f547118a6f"))); Assert.Equal("Test 3", client.Profile.Subscriptions[new Guid("d1e52cbc-b073-42e2-a0a0-c2f547118a6f")].Name); Assert.False(client.Profile.Subscriptions[new Guid("d1e52cbc-b073-42e2-a0a0-c2f547118a6f")].IsPropertySet(AzureSubscription.Property.Default)); Assert.Equal("*****@*****.**", client.Profile.Subscriptions[new Guid("d1e52cbc-b073-42e2-a0a0-c2f547118a6f")].Account); Assert.Equal("72f988bf-86f1-41af-91ab-2d7cd011db47", client.Profile.Subscriptions[new Guid("d1e52cbc-b073-42e2-a0a0-c2f547118a6f")].Properties[AzureSubscription.Property.Tenants]); Assert.Equal(EnvironmentName.AzureCloud, client.Profile.Subscriptions[new Guid("d1e52cbc-b073-42e2-a0a0-c2f547118a6f")].Environment); Assert.Equal(EnvironmentName.AzureChinaCloud, client.Profile.Subscriptions[new Guid("c14d7dc5-ed4d-4346-a02f-9f1bcf78fb66")].Environment); // Verify accounts Assert.Equal(2, client.Profile.Accounts.Count); Assert.Equal("*****@*****.**", client.Profile.Accounts["*****@*****.**"].Id); Assert.Equal(AzureAccount.AccountType.User, client.Profile.Accounts["*****@*****.**"].Type); Assert.True(client.Profile.Accounts["*****@*****.**"].GetPropertyAsArray(AzureAccount.Property.Subscriptions) .Contains(new Guid("06E3F6FD-A3AA-439A-8FC4-1F5C41D2AD1F").ToString())); Assert.True(client.Profile.Accounts["*****@*****.**"].GetPropertyAsArray(AzureAccount.Property.Subscriptions) .Contains(new Guid("d1e52cbc-b073-42e2-a0a0-c2f547118a6f").ToString())); Assert.True(client.Profile.Accounts["3AF24D48B97730E5C4C9CCB12397B5E046F79E09"].GetPropertyAsArray(AzureAccount.Property.Subscriptions) .Contains(new Guid("d1e52cbc-b073-42e2-a0a0-c2f547118a6f").ToString())); Assert.True(client.Profile.Accounts["*****@*****.**"].GetPropertyAsArray(AzureAccount.Property.Tenants) .Contains("72f988bf-86f1-41af-91ab-2d7cd011db47")); Assert.True(client.Profile.Accounts["*****@*****.**"].GetPropertyAsArray(AzureAccount.Property.Tenants) .Contains("123")); Assert.Equal("3AF24D48B97730E5C4C9CCB12397B5E046F79E09", client.Profile.Accounts["3AF24D48B97730E5C4C9CCB12397B5E046F79E09"].Id); Assert.Equal(AzureAccount.AccountType.Certificate, client.Profile.Accounts["3AF24D48B97730E5C4C9CCB12397B5E046F79E09"].Type); Assert.Equal(0, client.Profile.Accounts["3AF24D48B97730E5C4C9CCB12397B5E046F79E09"].GetPropertyAsArray(AzureAccount.Property.Tenants).Length); Assert.Equal(2, client.Profile.Accounts["3AF24D48B97730E5C4C9CCB12397B5E046F79E09"].GetPropertyAsArray(AzureAccount.Property.Subscriptions).Length); }
public void SetAzureSubscriptionAsCurrentSetsCurrent() { MockDataStore dataStore = new MockDataStore(); ProfileClient.DataStore = dataStore; ProfileClient client = new ProfileClient(); client.Profile.Accounts[azureAccount.Id] = azureAccount; client.AddOrSetEnvironment(azureEnvironment); client.AddOrSetSubscription(azureSubscription1); client.AddOrSetSubscription(azureSubscription2); Assert.Null(AzureSession.CurrentContext.Subscription); client.SetSubscriptionAsCurrent(azureSubscription2.Name, azureSubscription2.Account); Assert.Equal(azureSubscription2.Id, AzureSession.CurrentContext.Subscription.Id); Assert.Throws<ArgumentException>(() => client.SetSubscriptionAsCurrent("bad", null)); Assert.Throws<ArgumentNullException>(() => client.SetSubscriptionAsCurrent(null, null)); }
public void GetCurrentEnvironmentReturnsCorrectValue() { MockDataStore dataStore = new MockDataStore(); ProfileClient.DataStore = dataStore; ProfileClient client = new ProfileClient(); AzureSession.SetCurrentContext(azureSubscription1, azureEnvironment, azureAccount); var newEnv = client.GetEnvironmentOrDefault(azureEnvironment.Name); Assert.Equal(azureEnvironment.Name, newEnv.Name); }
public void GetAzureEnvironmentReturnsCorrectValue() { MockDataStore dataStore = new MockDataStore(); ProfileClient.DataStore = dataStore; ProfileClient client = new ProfileClient(); client.AddOrSetEnvironment(azureEnvironment); Assert.Equal(EnvironmentName.AzureCloud, AzureSession.CurrentContext.Environment.Name); var defaultEnv = client.GetEnvironmentOrDefault(null); Assert.Equal(EnvironmentName.AzureCloud, defaultEnv.Name); var newEnv = client.GetEnvironmentOrDefault(azureEnvironment.Name); Assert.Equal(azureEnvironment.Name, newEnv.Name); Assert.Throws<ArgumentException>(() => client.GetEnvironmentOrDefault("bad")); }
public void SetAzureEnvironmentUpdatesEnvironment() { MockDataStore dataStore = new MockDataStore(); ProfileClient.DataStore = dataStore; ProfileClient client = new ProfileClient(); Assert.Equal(2, client.Profile.Environments.Count); Assert.Throws<ArgumentNullException>(() => client.AddOrSetEnvironment(null)); var env2 = client.AddOrSetEnvironment(azureEnvironment); Assert.Equal(env2.Name, azureEnvironment.Name); Assert.NotNull(env2.Endpoints[AzureEnvironment.Endpoint.ServiceManagement]); AzureEnvironment newEnv = new AzureEnvironment { Name = azureEnvironment.Name }; newEnv.Endpoints[AzureEnvironment.Endpoint.Graph] = "foo"; env2 = client.AddOrSetEnvironment(newEnv); Assert.Equal("foo", env2.Endpoints[AzureEnvironment.Endpoint.Graph]); Assert.NotNull(env2.Endpoints[AzureEnvironment.Endpoint.ServiceManagement]); }
public void RemoveAzureEnvironmentDoesNotRemoveEnvironmentSubscriptionsAndAccountsForAzureCloudOrChinaCloud() { MockDataStore dataStore = new MockDataStore(); ProfileClient.DataStore = dataStore; ProfileClient client = new ProfileClient(); client.Profile.Accounts[azureAccount.Id] = azureAccount; azureSubscription1.Environment = EnvironmentName.AzureCloud; azureSubscription2.Environment = EnvironmentName.AzureChinaCloud; client.Profile.Subscriptions[azureSubscription1.Id] = azureSubscription1; client.Profile.Subscriptions[azureSubscription2.Id] = azureSubscription2; Assert.Equal(1, client.Profile.Subscriptions.Values.Count(s => s.Environment == EnvironmentName.AzureCloud)); Assert.Equal(1, client.Profile.Subscriptions.Values.Count(s => s.Environment == EnvironmentName.AzureChinaCloud)); Assert.Equal(2, client.Profile.Environments.Count); Assert.Equal(1, client.Profile.Accounts.Count); Assert.Throws<ArgumentException>(() => client.RemoveEnvironment(EnvironmentName.AzureCloud)); Assert.Throws<ArgumentException>(() => client.RemoveEnvironment(EnvironmentName.AzureChinaCloud)); Assert.Equal(1, client.Profile.Subscriptions.Values.Count(s => s.Environment == EnvironmentName.AzureCloud)); Assert.Equal(1, client.Profile.Subscriptions.Values.Count(s => s.Environment == EnvironmentName.AzureChinaCloud)); Assert.Equal(2, client.Profile.Environments.Count); Assert.Equal(1, client.Profile.Accounts.Count); }
public void RemoveAzureEnvironmentRemovesEnvironmentSubscriptionsAndAccounts() { MockDataStore dataStore = new MockDataStore(); ProfileClient.DataStore = dataStore; ProfileClient client = new ProfileClient(); client.Profile.Accounts[azureAccount.Id] = azureAccount; client.Profile.Environments[azureEnvironment.Name] = azureEnvironment; client.Profile.Subscriptions[azureSubscription1.Id] = azureSubscription1; client.Profile.Subscriptions[azureSubscription2.Id] = azureSubscription2; Assert.Equal(2, client.Profile.Subscriptions.Values.Count(s => s.Environment == "Test")); Assert.Equal(3, client.Profile.Environments.Count); Assert.Equal(1, client.Profile.Accounts.Count); Assert.Throws<ArgumentNullException>(() => client.RemoveEnvironment(null)); Assert.Throws<ArgumentException>(() => client.RemoveEnvironment("bad")); var env = client.RemoveEnvironment(azureEnvironment.Name); Assert.Equal(azureEnvironment.Name, env.Name); Assert.Equal(0, client.Profile.Subscriptions.Values.Count(s => s.Environment == "Test")); Assert.Equal(2, client.Profile.Environments.Count); Assert.Equal(0, client.Profile.Accounts.Count); }
public void GetAzureEnvironmentsListsEnvironments() { MockDataStore dataStore = new MockDataStore(); ProfileClient.DataStore = dataStore; ProfileClient client = new ProfileClient(); var env1 = client.ListEnvironments(null); Assert.Equal(2, env1.Count); var env2 = client.ListEnvironments("bad"); Assert.Equal(0, env2.Count); var env3 = client.ListEnvironments(EnvironmentName.AzureCloud); Assert.Equal(1, env3.Count); }
public void AddAzureEnvironmentAddsEnvironment() { MockDataStore dataStore = new MockDataStore(); ProfileClient.DataStore = dataStore; ProfileClient client = new ProfileClient(); Assert.Equal(2, client.Profile.Environments.Count); Assert.Throws<ArgumentNullException>(() => client.AddOrSetEnvironment(null)); var env = client.AddOrSetEnvironment(azureEnvironment); Assert.Equal(3, client.Profile.Environments.Count); Assert.Equal(env, azureEnvironment); }
public void GetAzureSubscriptionByIdChecksAndReturnsOnlyLocal() { SetMocks(new[] { rdfeSubscription1, rdfeSubscription2 }.ToList(), new[] { csmSubscription1, csmSubscription1withDuplicateId }.ToList()); MockDataStore dataStore = new MockDataStore(); ProfileClient.DataStore = dataStore; ProfileClient client = new ProfileClient(); client.AddOrSetAccount(azureAccount); PowerShellUtilities.GetCurrentModeOverride = () => AzureModule.AzureResourceManager; client.AddOrSetEnvironment(azureEnvironment); client.AddOrSetSubscription(azureSubscription1); client.AddOrSetSubscription(azureSubscription2); var subscriptions = client.GetSubscription(azureSubscription1.Id); Assert.Equal(azureSubscription1.Id, subscriptions.Id); Assert.Throws<ArgumentException>(() => client.GetSubscription(new Guid())); }
public void ClearDefaultAzureSubscriptionClearsDefault() { MockDataStore dataStore = new MockDataStore(); ProfileClient.DataStore = dataStore; ProfileClient client = new ProfileClient(); client.Profile.Accounts[azureAccount.Id] = azureAccount; client.AddOrSetEnvironment(azureEnvironment); client.AddOrSetSubscription(azureSubscription2); Assert.Null(client.Profile.DefaultSubscription); client.SetSubscriptionAsDefault(azureSubscription2.Name, azureSubscription2.Account); Assert.Equal(azureSubscription2.Id, client.Profile.DefaultSubscription.Id); client.ClearDefaultSubscription(); Assert.Null(client.Profile.DefaultSubscription); }
public void AddOrSetAzureSubscriptionChecksAndUpdates() { MockDataStore dataStore = new MockDataStore(); ProfileClient.DataStore = dataStore; ProfileClient client = new ProfileClient(); client.AddOrSetAccount(azureAccount); client.AddOrSetEnvironment(azureEnvironment); client.AddOrSetSubscription(azureSubscription1); Assert.Equal(1, client.Profile.Subscriptions.Count); var subscription = client.AddOrSetSubscription(azureSubscription1); Assert.Equal(1, client.Profile.Subscriptions.Count); Assert.Equal(1, client.Profile.Accounts.Count); Assert.Equal(subscription, azureSubscription1); Assert.Throws<ArgumentNullException>(() => client.AddOrSetSubscription(null)); Assert.Throws<ArgumentNullException>(() => client.AddOrSetSubscription( new AzureSubscription { Id = new Guid(), Environment = null, Name = "foo"})); }
public void ImportPublishSettingsLoadsAndReturnsSubscriptions() { MockDataStore dataStore = new MockDataStore(); ProfileClient.DataStore = dataStore; ProfileClient client = new ProfileClient(); dataStore.WriteFile("ImportPublishSettingsLoadsAndReturnsSubscriptions.publishsettings", Properties.Resources.ValidProfile); client.AddOrSetEnvironment(azureEnvironment); var subscriptions = client.ImportPublishSettings("ImportPublishSettingsLoadsAndReturnsSubscriptions.publishsettings", azureEnvironment.Name); var account = client.Profile.Accounts.Values.First(); Assert.True(subscriptions.All(s => s.Account == account.Id)); Assert.Equal(6, subscriptions.Count); Assert.Equal(6, client.Profile.Subscriptions.Count); }
public void RemoveAzureAccountRemovesDefaultSubscriptionAndWritesWarning() { MockDataStore dataStore = new MockDataStore(); ProfileClient.DataStore = dataStore; ProfileClient client = new ProfileClient(); client.Profile.Subscriptions[azureSubscription1.Id] = azureSubscription1; client.Profile.Subscriptions[azureSubscription2.Id] = azureSubscription2; client.Profile.Accounts[azureAccount.Id] = azureAccount; azureSubscription3withoutUser.Account = "test2"; client.Profile.Accounts["test2"] = new AzureAccount { Id = "test2", Type = AzureAccount.AccountType.User, Properties = new Dictionary<AzureAccount.Property, string> { {AzureAccount.Property.Subscriptions, azureSubscription3withoutUser.Id.ToString()} } }; client.Profile.Subscriptions[azureSubscription3withoutUser.Id] = azureSubscription3withoutUser; client.Profile.Environments[azureEnvironment.Name] = azureEnvironment; List<string> log = new List<string>(); client.WarningLog = log.Add; Assert.Equal(3, client.Profile.Subscriptions.Count); var account = client.RemoveAccount("test"); Assert.Equal(1, client.Profile.Subscriptions.Count); Assert.Equal("test", account.Id); Assert.Equal(2, account.GetPropertyAsArray(AzureAccount.Property.Subscriptions).Length); Assert.Equal(1, log.Count); Assert.Equal( "The default subscription is being removed. Use Select-AzureSubscription -Default <subscriptionName> to select a new default subscription.", log[0]); }
public void ImportPublishSettingsUsesProperEnvironmentWithManagementUrl() { MockDataStore dataStore = new MockDataStore(); ProfileClient.DataStore = dataStore; ProfileClient client = new ProfileClient(); client.AddOrSetAccount(azureAccount); azureEnvironment.Endpoints[AzureEnvironment.Endpoint.ServiceManagement] = "https://newmanagement.core.windows.net/"; client.AddOrSetEnvironment(azureEnvironment); client.AddOrSetSubscription(azureSubscription1); client.SetSubscriptionAsDefault(azureSubscription1.Name, azureAccount.Id); client.Profile.Save(); client = new ProfileClient(); dataStore.WriteFile("ImportPublishSettingsLoadsAndReturnsSubscriptions.publishsettings", Properties.Resources.ValidProfile3); client.AddOrSetEnvironment(azureEnvironment); var subscriptions = client.ImportPublishSettings("ImportPublishSettingsLoadsAndReturnsSubscriptions.publishsettings", null); Assert.True(subscriptions.All(s => s.Environment == azureEnvironment.Name)); Assert.Equal(6, subscriptions.Count); Assert.Equal(7, client.Profile.Subscriptions.Count); }
public void RemoveAzureSubscriptionChecksAndRemoves() { MockDataStore dataStore = new MockDataStore(); ProfileClient.DataStore = dataStore; ProfileClient client = new ProfileClient(); client.Profile.Accounts[azureAccount.Id] = azureAccount; client.AddOrSetEnvironment(azureEnvironment); client.AddOrSetSubscription(azureSubscription1); client.SetSubscriptionAsCurrent(azureSubscription1.Name, azureSubscription1.Account); client.SetSubscriptionAsDefault(azureSubscription1.Name, azureSubscription1.Account); Assert.Equal(1, client.Profile.Subscriptions.Count); List<string> log = new List<string>(); client.WarningLog = log.Add; var subscription = client.RemoveSubscription(azureSubscription1.Name); Assert.Equal(0, client.Profile.Subscriptions.Count); Assert.Equal(azureSubscription1.Name, subscription.Name); Assert.Equal(2, log.Count); Assert.Equal( "The default subscription is being removed. Use Select-AzureSubscription -Default <subscriptionName> to select a new default subscription.", log[0]); Assert.Equal( "The current subscription is being removed. Use Select-AzureSubscription <subscriptionName> to select a new current subscription.", log[1]); Assert.Throws<ArgumentException>(() => client.RemoveSubscription("bad")); Assert.Throws<ArgumentNullException>(() => client.RemoveSubscription(null)); }
public void ImportPublishSettingsUsesPassedInEnvironment() { MockDataStore dataStore = new MockDataStore(); ProfileClient.DataStore = dataStore; ProfileClient client = new ProfileClient(); client.AddOrSetAccount(azureAccount); client.AddOrSetEnvironment(azureEnvironment); client.AddOrSetSubscription(azureSubscription1); client.SetSubscriptionAsDefault(azureSubscription1.Name, azureAccount.Id); client.Profile.Save(); client = new ProfileClient(); dataStore.WriteFile("ImportPublishSettingsLoadsAndReturnsSubscriptions.publishsettings", Properties.Resources.ValidProfile3); client.AddOrSetEnvironment(azureEnvironment); var subscriptions = client.ImportPublishSettings("ImportPublishSettingsLoadsAndReturnsSubscriptions.publishsettings", azureEnvironment.Name); Assert.True(subscriptions.All(s => s.Environment == azureEnvironment.Name)); Assert.Equal(6, subscriptions.Count); Assert.Equal(7, client.Profile.Subscriptions.Count); }
public void RefreshSubscriptionsUpdatesAccounts() { SetMocks(new[] { rdfeSubscription1, rdfeSubscription2 }.ToList(), new[] { csmSubscription1, csmSubscription1withDuplicateId }.ToList()); MockDataStore dataStore = new MockDataStore(); ProfileClient.DataStore = dataStore; ProfileClient client = new ProfileClient(); PowerShellUtilities.GetCurrentModeOverride = () => AzureModule.AzureResourceManager; client.AddOrSetEnvironment(azureEnvironment); client.Profile.Accounts[azureAccount.Id] = azureAccount; client.AddOrSetSubscription(azureSubscription1); var subscriptions = client.RefreshSubscriptions(azureEnvironment); Assert.True(client.Profile.Accounts[azureAccount.Id].HasSubscription(new Guid(rdfeSubscription1.SubscriptionId))); Assert.True(client.Profile.Accounts[azureAccount.Id].HasSubscription(new Guid(rdfeSubscription2.SubscriptionId))); Assert.True(client.Profile.Accounts[azureAccount.Id].HasSubscription(new Guid(csmSubscription1.SubscriptionId))); Assert.True(client.Profile.Accounts[azureAccount.Id].HasSubscription(new Guid(csmSubscription1withDuplicateId.SubscriptionId))); }
public void AddOrSetAzureSubscriptionUpdatesInMemory() { MockDataStore dataStore = new MockDataStore(); ProfileClient.DataStore = dataStore; ProfileClient client = new ProfileClient(); client.AddOrSetAccount(azureAccount); client.AddOrSetEnvironment(azureEnvironment); client.AddOrSetSubscription(azureSubscription1); AzureSession.SetCurrentContext(azureSubscription1, azureEnvironment, azureAccount); azureSubscription1.Properties[AzureSubscription.Property.StorageAccount] = "testAccount"; Assert.Equal(azureSubscription1.Id, AzureSession.CurrentContext.Subscription.Id); Assert.Equal(azureSubscription1.Properties[AzureSubscription.Property.StorageAccount], AzureSession.CurrentContext.Subscription.Properties[AzureSubscription.Property.StorageAccount]); var newSubscription = new AzureSubscription { Id = azureSubscription1.Id, Environment = azureSubscription1.Environment, Account = azureSubscription1.Account, Name = azureSubscription1.Name }; newSubscription.Properties[AzureSubscription.Property.StorageAccount] = "testAccount1"; client.AddOrSetSubscription(newSubscription); var newSubscriptionFromProfile = client.Profile.Subscriptions[newSubscription.Id]; Assert.Equal(newSubscription.Id, AzureSession.CurrentContext.Subscription.Id); Assert.Equal(newSubscription.Id, newSubscriptionFromProfile.Id); Assert.Equal(newSubscription.Properties[AzureSubscription.Property.StorageAccount], AzureSession.CurrentContext.Subscription.Properties[AzureSubscription.Property.StorageAccount]); Assert.Equal(newSubscription.Properties[AzureSubscription.Property.StorageAccount], newSubscriptionFromProfile.Properties[AzureSubscription.Property.StorageAccount]); }
public void RemoveAzureAccountRemovesDefaultAccountFromSubscription() { MockDataStore dataStore = new MockDataStore(); ProfileClient.DataStore = dataStore; ProfileClient client = new ProfileClient(); client.Profile.Subscriptions[azureSubscription1.Id] = azureSubscription1; client.Profile.Subscriptions[azureSubscription2.Id] = azureSubscription2; client.Profile.Accounts[azureAccount.Id] = azureAccount; azureSubscription3withoutUser.Account = "test2"; client.Profile.Accounts["test2"] = new AzureAccount { Id = "test2", Type = AzureAccount.AccountType.User, Properties = new Dictionary<AzureAccount.Property, string> { {AzureAccount.Property.Subscriptions, azureSubscription1.Id.ToString()} } }; client.Profile.Subscriptions[azureSubscription1.Id].Account = azureAccount.Id; client.Profile.Environments[azureEnvironment.Name] = azureEnvironment; var account = client.RemoveAccount(azureAccount.Id); Assert.Equal("test2", client.Profile.Subscriptions[azureSubscription1.Id].Account); }