Exemple #1
0
 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);
        }
Exemple #3
0
        /// <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();
     }
 }
Exemple #5
0
 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;
     }
 }
Exemple #8
0
 private void Environment_Group_With_With_Valid_Name_And_UserId()
 {
     _environmentGroup = new EnvironmentGroup()
     {
         Name   = "Test",
         UserId = 2,
     };
 }
Exemple #9
0
 private void Environment_Group_With_To_Short_Name()
 {
     _environmentGroup = new EnvironmentGroup()
     {
         Name   = "Tt",
         UserId = 2,
     };
 }
Exemple #10
0
 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();
            }
        }
Exemple #12
0
 /// <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);
        }
Exemple #23
0
        /// <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);
            }
        }
Exemple #30
0
        /// <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);
        }