public void Reset() { _environmentGroup = null; _environmentGroupId = 0; _thrownException = null; _environmentGropusRepositiory = null; }
/// <summary> /// Flow to create a new environment group /// </summary> /// <returns></returns> private static async Task CreateEnvironmentGroup() { Console.WriteLine("Creating new Environment Group"); //Get GroupName Console.WriteLine("Enter new group name:"); var groupName = Console.ReadLine(); EnvironmentGroup newGroup = new EnvironmentGroup(); newGroup.Name = groupName; //Get all projects var allProject = await _appVeyorService.GetAllAppVeyorProjects(); Console.WriteLine("Pick a Project:"); var menu = new TypedMenu <AppVeyorProject>(allProject, "Choose a number", x => x.Name); var pickedProject = menu.Display(); newGroup.Project = pickedProject; //Get all environments var allEnv = await _appVeyorService.GetAllAppVeyorEnvironments(); AskForEnvironment(newGroup, allEnv); //Save group //Write JSON to file _groupFileService.SaveGroupToFile(newGroup); Console.WriteLine("Saved Environment Group {0} with {1} environments", newGroup.Name, newGroup.Environments.Count); }
/// <summary> /// Trigger deploys for the provided environment group /// </summary> /// <param name="picked"></param> /// <param name="buildVersion"></param> /// <returns></returns> private static async Task <Dictionary <int, string> > DeployEnvironmentGroup(EnvironmentGroup picked, string buildVersion) { Dictionary <int, string> deployments = new Dictionary <int, string>(); Console.WriteLine("-------------------"); Console.WriteLine("Starting Deployment"); Console.WriteLine("-------------------"); foreach (var env in picked.Environments) { try { Console.Write($"Starting deploy for {env.Name} build version {buildVersion}..."); var response = await _appVeyorService.DeployEnvironment(picked.Project, env, buildVersion); deployments.Add(response.DeploymentId, env.Name); Console.WriteLine("Success!"); } catch { Console.WriteLine("FAILED!"); } } Console.WriteLine(); Console.WriteLine("Deployments are started."); return(deployments); }
private void Environment_Group_Should_Be_In_Db(string name) { using (var db = new TestPsychoCareContext()) { EnvironmentGroup environmentGroup = db.EnvironmentGroups.SingleOrDefault(x => x.Name == name); environmentGroup.Should().NotBeNull(); } }
private void Environment_Group_With_Invalid_UserId() { _environmentGroup = new EnvironmentGroup() { Name = "Test", UserId = 0, }; }
private void Environment_Group_Shouldynt_Be_In_Db(int id) { using (var db = new TestPsychoCareContext()) { EnvironmentGroup environmentGroup = db.EnvironmentGroups.SingleOrDefault(x => x.Id == id); environmentGroup.Should().BeNull(); } }
private void Evironment_Group_To_Delete_Id(string name) { using (var db = new TestPsychoCareContext()) { EnvironmentGroup environmentGroup = db.EnvironmentGroups.SingleOrDefault(x => x.Name == name); _environmentGroupId = environmentGroup.Id; } }
private void Environment_Group_With_With_Valid_Name_And_UserId() { _environmentGroup = new EnvironmentGroup() { Name = "Test", UserId = 2, }; }
private void Environment_Group_With_To_Short_Name() { _environmentGroup = new EnvironmentGroup() { Name = "Tt", UserId = 2, }; }
private void Environment_Group_With_To_Long_Name() { _environmentGroup = new EnvironmentGroup() { Name = new string('*', 100), UserId = 2, }; }
/// <summary> /// Checks if environment gorup already exists. /// If false then exception is thrown /// </summary> /// <exception cref="EnvironmentGroupNotFoundException"/> private void CheckIfEnvironmentGroupExists(int environmentGroupId) { EnvironmentGroup environmentGroupInDb = _environmentGroupsRepository.GetEnvironmentGroupById(environmentGroupId); if (environmentGroupInDb == null) { throw new EnvironmentGroupNotFoundException(); } }
/// <summary> /// Read a group.json file /// </summary> /// <param name="fileName"></param> /// <returns></returns> public EnvironmentGroup ReadGroupFile(string fileName) { using (StreamReader r = new StreamReader(fileName)) { string json = r.ReadToEnd(); EnvironmentGroup result = JsonConvert.DeserializeObject <EnvironmentGroup>(json); return(result); } }
/// <summary> /// Adds environment group /// </summary> /// <param name="environmentGroup"></param> /// <returns></returns> public int AddEnvironmentGroup(EnvironmentGroup environmentGroup) { using (PsychoCareContext db = _contextBuilder.GetContext()) { db.EnvironmentGroups.Add(environmentGroup); db.SaveChanges(); } return(environmentGroup.Id); }
private void Environment_Group_With_With_Valid_Name_And_UserId() { _environmentGroup = new EnvironmentGroup() { Name = "Test", UserId = 0, }; _webPricipalMock.Setup(x => x.UserId).Returns(3); }
/// <summary> /// Deletes environment group /// </summary> /// <param name="environmentGroupId"></param> public void DeleteEnvironmentGroup(int environmentGroupId) { using (PsychoCareContext db = _contextBuilder.GetContext()) { EnvironmentGroup environmentGroup = db.EnvironmentGroups.Find(environmentGroupId); db.EnvironmentGroups.Remove(environmentGroup); db.SaveChanges(); } }
public void EditEnvironmentGroupName([FromBody] EnvironmentGroup environmentGroup) { if (environmentGroup == null) { throw new ArgumentNullException(nameof(environmentGroup)); } environmentGroup.UserId = _webPrincipal.UserId; _environmentGroupsService.EditEnvironmentGroup(environmentGroup); }
/// <summary> /// Edits environment group /// /// Speccialy edits only name /// </summary> /// <param name="environmentGroup"></param> public void EditEnvironmentGroupName(EnvironmentGroup environmentGroup) { using (PsychoCareContext db = _contextBuilder.GetContext()) { EnvironmentGroup environmentGroupDb = db.EnvironmentGroups .FirstOrDefault(x => x.Id == environmentGroup.Id); environmentGroupDb.Name = environmentGroup.Name; db.SaveChanges(); } }
/// <summary> /// Gets environment group by id /// </summary> /// <param name="environmentGroupId"></param> /// <returns></returns> public EnvironmentGroup GetEnvironmentGroupById(int environmentGroupId) { using (PsychoCareContext db = _contextBuilder.GetContext()) { EnvironmentGroup environmentGroup = db.EnvironmentGroups.AsNoTracking() .FirstOrDefault(x => x.Id == environmentGroupId); return(environmentGroup); } }
/// <summary> /// Gets environment group by user id and environment group name /// </summary> /// <param name="userId"></param> /// <param name="name"></param> /// <returns></returns> public EnvironmentGroup GetEnvironmentGroupByUserAndName(int userId, string name) { using (PsychoCareContext db = _contextBuilder.GetContext()) { EnvironmentGroup environmentGroup = db.EnvironmentGroups.AsNoTracking() .FirstOrDefault(x => x.UserId == userId && x.Name.ToLower() == name); return(environmentGroup); } }
private static EnvironmentGroup GetOrAddGroup(this Environment owner, string name) { EnvironmentGroup group = owner.Groups.FirstOrDefault(g => g.Name == name); if (group == null) { group = new EnvironmentGroup { Name = name }; owner.Groups.Add(group); } return(group); }
public int AddEnvironmentGroup([FromBody] EnvironmentGroup environmentGroup) { if (environmentGroup == null) { throw new ArgumentNullException(nameof(environmentGroup)); } environmentGroup.UserId = _webPrincipal.UserId; int id = _environmentGroupsService.AddEnvironmentGroup(environmentGroup); return(id); }
private static EnvironmentService GetOrAddService(this EnvironmentGroup group, string name, StatusType status) { EnvironmentService service = group.Services.FirstOrDefault(s => s.Name == name); if (service == null) { service = new EnvironmentService { Name = name, Status = status }; group.Services.Add(service); } return(service); }
/// <summary> /// Save a group.json file /// </summary> /// <param name="newGroup"></param> public void SaveGroupToFile(EnvironmentGroup newGroup) { string fileName = string.Format("{0}.group.json", newGroup.Name); using (FileStream fs = File.Open(fileName, FileMode.CreateNew)) using (StreamWriter sw = new StreamWriter(fs)) using (JsonWriter jw = new JsonTextWriter(sw)) { jw.Formatting = Formatting.Indented; JsonSerializer serializer = new JsonSerializer(); serializer.Serialize(jw, newGroup); } }
private void Environment_Group_To_Edit_With_With_Valid_Name_And_UserId() { using (var db = new TestPsychoCareContext()) { EnvironmentGroup environmentGroup = db.EnvironmentGroups.SingleOrDefault(x => x.Id == _environmentGroupId); _environmentGroup = new EnvironmentGroup() { Name = "Test Edited", UserId = 3, Id = environmentGroup.Id, }; } _webPricipalMock.Setup(x => x.UserId).Returns(3); }
/// <summary> /// Validates and adds user environment group /// </summary> /// <exception cref="ArgumentNullException"/> /// <exception cref="EnvironmentGroupInvalidNameException"/> /// <exception cref="ArgumentException"/> /// <exception cref="EnvironmentGroupAlreadyExistsException"/> public int AddEnvironmentGroup(EnvironmentGroup environmentGroup) { if (environmentGroup == null) { throw new ArgumentNullException(nameof(environmentGroup)); } environmentGroup.Name = environmentGroup.Name?.Trim(); environmentGroup.Validate(); CheckIfSimilarEnvironmentGroupAlreadyExist(environmentGroup); int id = _environmentGroupsRepository.AddEnvironmentGroup(environmentGroup); return(id); }
/// <summary> /// Checks if similar environment group already exist. /// (matches user id and name) /// If true then exception is thrown /// </summary> /// <exception cref="ArgumentNullException"/> /// <exception cref="EnvironmentGroupAlreadyExistsException"/> private void CheckIfSimilarEnvironmentGroupAlreadyExist(EnvironmentGroup environmentGroupToFind) { if (environmentGroupToFind == null) { throw new ArgumentNullException(nameof(environmentGroupToFind)); } EnvironmentGroup environmentGroupInDb = _environmentGroupsRepository.GetEnvironmentGroupByUserAndName( environmentGroupToFind.UserId, environmentGroupToFind.Name?.ToLower()); if (environmentGroupInDb != null) { throw new EnvironmentGroupAlreadyExistsException(); } }
/// <summary> /// Validates and edits environment group /// </summary> /// <exception cref="ArgumentNullException"/> /// <exception cref="EnvironmentGroupInvalidNameException"/> /// <exception cref="ArgumentException"/> /// <exception cref="EnvironmentGroupNotFoundException"/> /// <exception cref="EnvironmentGroupAlreadyExistsException"/> public void EditEnvironmentGroup(EnvironmentGroup environmentGroup) { if (environmentGroup == null) { throw new ArgumentNullException(nameof(environmentGroup)); } if (environmentGroup.Id == 0) { throw new ArgumentException(nameof(environmentGroup.Id)); } environmentGroup.Name = environmentGroup.Name?.Trim(); environmentGroup.Validate(); CheckIfEnvironmentGroupExists(environmentGroup.Id); CheckIfSimilarEnvironmentGroupAlreadyExist(environmentGroup); _environmentGroupsRepository.EditEnvironmentGroupName(environmentGroup); }
/// <summary> /// Trigger deploys for the provided environment group /// </summary> /// <param name="picked"></param> /// <param name="buildVersion"></param> /// <returns></returns> private static async Task DeployEnvironmentGroup(EnvironmentGroup picked, string buildVersion) { foreach (var env in picked.Environments) { bool success = await _appVeyorService.DeployEnvironment(picked.Project, env, buildVersion); if (success) { Console.WriteLine("Success, started deploy to: " + env.Name); } else { Console.WriteLine("FAILED to start deploy to: " + env.Name); } } Console.WriteLine("Deployments are NOT finished yet."); Console.WriteLine("Check the progress of your deployements on ci.appveyor.com"); }
/// <summary> /// Ask for an environment to add to a group /// </summary> /// <param name="newGroup"></param> /// <param name="allEnv"></param> private static void AskForEnvironment(EnvironmentGroup newGroup, List <AppVeyorEnvironment> allEnv) { Console.WriteLine("Pick an Environment:"); var menu = new TypedMenu <AppVeyorEnvironment>(allEnv.Except(newGroup.Environments).ToList(), "Choose a number", x => x.Name); var picked = menu.Display(); newGroup.Environments.Add(picked); Console.WriteLine("Add another environment? (Y/N) (default Y)"); var answer = Console.ReadLine(); if (answer.Equals("N", StringComparison.InvariantCultureIgnoreCase)) { return; } else { AskForEnvironment(newGroup, allEnv); } }
/// <summary> /// Flow to create a new environment group /// </summary> /// <returns></returns> private static async Task CreateEnvironmentGroup() { Console.WriteLine("Creating new Environment Group"); //Get GroupName Console.WriteLine("Enter new group name:"); var groupName = Console.ReadLine(); EnvironmentGroup newGroup = new EnvironmentGroup(); newGroup.Name = groupName; Console.WriteLine("Default branch (develop):"); var defaultBranch = Console.ReadLine(); if (!string.IsNullOrWhiteSpace(defaultBranch)) { newGroup.DefaultBranch = defaultBranch; } //Get all projects Console.WriteLine("Fetching projects..."); var allProject = await _appVeyorService.GetAllAppVeyorProjects(); Console.WriteLine("Pick a Project:"); var menu = new TypedMenu <AppVeyorProject>(allProject, "Choose a number", x => x.Name); var pickedProject = menu.Display(); newGroup.Project = pickedProject; //Get all environments var allEnv = await _appVeyorService.GetAllAppVeyorEnvironmentsForProject(newGroup.Project.AccountName + "/" + newGroup.Project.Slug); AskForEnvironment(newGroup, allEnv); //Save group //Write JSON to file _groupFileService.SaveGroupToFile(newGroup); Console.WriteLine("Saved Environment Group {0} with {1} environments", newGroup.Name, newGroup.Environments.Count); }