/// <summary> /// Initializes a new instance of AzureSMProfile and loads its content from specified path. /// Any errors generated in the process are stored in ProfileLoadErrors collection. /// </summary> /// <param name="path">Location of profile file on disk.</param> public AzureSMProfile(string path) : this() { ProfilePath = path; ProfileLoadErrors = new List <string>(); if (!AzureSession.DataStore.DirectoryExists(AzureSession.ProfileDirectory)) { AzureSession.DataStore.CreateDirectory(AzureSession.ProfileDirectory); } if (AzureSession.DataStore.FileExists(ProfilePath)) { string contents = AzureSession.DataStore.ReadFileAsText(ProfilePath); IProfileSerializer serializer; if (CloudException.IsXml(contents)) { serializer = new XmlProfileSerializer(); if (!serializer.Deserialize(contents, this)) { ProfileLoadErrors.AddRange(serializer.DeserializeErrors); } } else if (CloudException.IsJson(contents)) { serializer = new JsonProfileSerializer(); if (!serializer.Deserialize(contents, this)) { ProfileLoadErrors.AddRange(serializer.DeserializeErrors); } } } }
public void ProfileSaveDoesNotSerializeContext() { 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); currentProfile.Save(); var profileFile = currentProfile.ProfilePath; string profileContents = dataStore.ReadFileAsText(profileFile); var readProfile = JsonConvert.DeserializeObject<Dictionary<string, object>>(profileContents); Assert.False(readProfile.ContainsKey("Context")); AzureProfile parsedProfile = new AzureProfile(); 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)); }
/// <summary> /// Initializes a new instance of AzureProfile and loads its content from specified path. /// Any errors generated in the process are stored in ProfileLoadErrors collection. /// </summary> /// <param name="path">Location of profile file on disk.</param> public AzureProfile(string path) { ProfilePath = path; Environments = new Dictionary <string, AzureEnvironment>(StringComparer.InvariantCultureIgnoreCase); Subscriptions = new Dictionary <Guid, AzureSubscription>(); Accounts = new Dictionary <string, AzureAccount>(StringComparer.InvariantCultureIgnoreCase); ProfileLoadErrors = new List <string>(); if (!AzureSession.DataStore.DirectoryExists(AzureSession.ProfileDirectory)) { AzureSession.DataStore.CreateDirectory(AzureSession.ProfileDirectory); } if (AzureSession.DataStore.FileExists(ProfilePath)) { string contents = AzureSession.DataStore.ReadFileAsText(ProfilePath); IProfileSerializer serializer; if (CloudException.IsXml(contents)) { serializer = new XmlProfileSerializer(); if (!serializer.Deserialize(contents, this)) { ProfileLoadErrors.AddRange(serializer.DeserializeErrors); } } else if (CloudException.IsJson(contents)) { serializer = new JsonProfileSerializer(); if (!serializer.Deserialize(contents, this)) { ProfileLoadErrors.AddRange(serializer.DeserializeErrors); } } } LoadDefaultEnvironments(); }
/// <summary> /// Initializes a new instance of AzureSMProfile and loads its content from specified path. /// Any errors generated in the process are stored in ProfileLoadErrors collection. /// </summary> /// <param name="path">Location of profile file on disk.</param> public AzureSMProfile(string path) : this() { ProfilePath = path; ProfileLoadErrors = new List<string>(); if (!AzureSession.DataStore.DirectoryExists(AzureSession.ProfileDirectory)) { AzureSession.DataStore.CreateDirectory(AzureSession.ProfileDirectory); } if (AzureSession.DataStore.FileExists(ProfilePath)) { string contents = AzureSession.DataStore.ReadFileAsText(ProfilePath); IProfileSerializer serializer; if (CloudException.IsXml(contents)) { serializer = new XmlProfileSerializer(); if (!serializer.Deserialize(contents, this)) { ProfileLoadErrors.AddRange(serializer.DeserializeErrors); } } else if (CloudException.IsJson(contents)) { serializer = new JsonProfileSerializer(); if (!serializer.Deserialize(contents, this)) { ProfileLoadErrors.AddRange(serializer.DeserializeErrors); } } } }