Exemplo n.º 1
0
        public async Task ItShouldProcessIssueCommentsWebhookWhenActionIsCreated(string actionState)
        {
            var currentUser = new User("", "", "", 0, "", DateTimeOffset.MinValue, DateTimeOffset.MinValue, 0, "", 0,
                                       0, null, "", 0, 0, "", "currentUser", null, 0, null, 0, 0, 0, "",
                                       new RepositoryPermissions(false, false, false), false, "", null);

            var githubService = new Mock <IGitHubService>();

            githubService.Setup(x => x.GetCurrentUser()).ReturnsAsync(currentUser);

            var pipelineRunnerService = new Mock <IPipelineRunnerService>();

            var controller = new GitHubController(pipelineRunnerService.Object, githubService.Object);

            var viewModel = new IssueCommentWebHookViewModel()
            {
                Action = actionState,
                Issue  = new IssueViewModel()
                {
                    Number = 5
                },
                Comment = new IssueCommentViewModel()
                {
                    User = new UserViewModel()
                    {
                        Login = "******"
                    }
                }
            };

            var result = await controller.HandleIssueCommentsWebhook("", viewModel);

            pipelineRunnerService.Verify(x => x.ProcessIssue(It.Is <int>(y => y == 5)), Times.Once());
            Assert.IsType <OkResult>(result);
        }
Exemplo n.º 2
0
        public async Task ItShouldNotProcessIssueCommentsWebhookWhenActionIsNotCreated(string actionState)
        {
            var pipelineRunnerService = new Mock <IPipelineRunnerService>();

            var controller = new GitHubController(pipelineRunnerService.Object, Mock.Of <IGitHubService>());

            var viewModel = new IssueCommentWebHookViewModel()
            {
                Action = actionState,
                Issue  = new IssueViewModel()
                {
                    Number = 5
                },
                Comment = new IssueCommentViewModel()
                {
                    User = new UserViewModel()
                    {
                        Login = "******"
                    }
                }
            };

            var result = await controller.HandleIssueCommentsWebhook("", viewModel);

            pipelineRunnerService.Verify(x => x.ProcessIssue(It.Is <int>(y => y == 5)), Times.Never());
            Assert.IsType <OkResult>(result);
        }
Exemplo n.º 3
0
        public async Task TestSearchUsers_Model_As_Expected()
        {
            // Arrange
            GitHubController controller = new GitHubController(new GitHubConnectionMock(), new ErrorLogger());

            // Act
            ViewResult result = await controller.SearchUsers("sohail92") as ViewResult;

            // Assert
            Assert.IsInstanceOfType(result.Model, typeof(UserRepoVM));
        }
Exemplo n.º 4
0
        public async Task TestSearchUsersAction()
        {
            // Arrange
            GitHubController controller = new GitHubController(new GitHubConnectionMock(), new ErrorLogger());

            // Act
            var result = await controller.SearchUsers("sohail92");

            // Assert
            Assert.IsNotNull(result);
        }
Exemplo n.º 5
0
        public async Task ItShouldProcessIssuesWebhookWhenActionIsOpenedOrEdited(string actionState)
        {
            var pipelineRunnerService = new Mock <IPipelineRunnerService>();

            var controller = new GitHubController(pipelineRunnerService.Object, Mock.Of <IGitHubService>());

            var viewModel = new IssueWebHookViewModel()
            {
                Action = actionState,
                Issue  = new IssueViewModel()
                {
                    Number = 5
                }
            };

            var result = await controller.HandleIssuesWebhook("", viewModel);

            pipelineRunnerService.Verify(x => x.ProcessIssue(It.Is <int>(y => y == 5)), Times.Once());
            Assert.IsType <OkResult>(result);
        }
Exemplo n.º 6
0
        public async Task <ActionResult> GithubWebhook()
        {
            if (Request.Headers.TryGetValue("X-Hub-Signature", out var sig))
            {
                if (!Request.Headers.TryGetValue("X-GitHub-Event", out var eventType))
                {
                    logger.Error("X-GitHub-Event missing.");
                    return(BadRequest("No event."));
                }

                string payloadString = null;
                using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8))
                {
                    payloadString = await reader.ReadToEndAsync();
                }

                var payloadHash = GitHubController.GetPayloadHash(payloadString, settings.Settings.Addons.GitHubSecret);
                if (sig != $"sha1={payloadHash}")
                {
                    logger.Error("PayloadHash signature check failed.");
                    return(BadRequest("Signature check failed."));
                }

                if (eventType == WebHookEvents.Push)
                {
                    var payload = Serialization.FromJson <PushEvent>(payloadString);
                    if (payload.@ref?.EndsWith("master") == true)
                    {
#pragma warning disable CS4014
                        RegenerateAddonDatabase();
#pragma warning restore CS4014
                    }
                }

                return(Ok());
            }

            logger.Error("Addons github webhook not processed correctly.");
            return(BadRequest());
        }
Exemplo n.º 7
0
        public async Task TestAPI2()
        {
            // Arrange
            var testURL = new Repository {
                Url = "https://github.com/BoletoNet/boletonet"
            };

            // Act
            var controller = new GitHubController();

            var actionResult = await controller.PostParser(testURL);

            // Assert
            var viewResult = Assert.IsType <ObjectResult>(actionResult);
            var model      = Assert.IsAssignableFrom <IEnumerable <GitHubResults> >(viewResult.Value);

            Assert.Equal(44, model.Count());

            var testSLN = model.FirstOrDefault(x => x.Extension.Equals(".sln"));

            Assert.Equal(8692, testSLN.TotalBytes);
            Assert.Equal(137, testSLN.TotalLines);
        }
Exemplo n.º 8
0
 public void SetUp()
 {
     _mockVcsService   = new Mock <IVcsService <GitHubUser, GitHubRepository> >();
     _gitHubController = new GitHubController(_mockVcsService.Object);
 }
Exemplo n.º 9
0
        /// <summary>
        /// Gets data for all GitHub contributors for all listed Umbraco repositories,
        /// excluding the GitHub IDs of the HQ contributors from the text file list
        /// </summary>
        /// <returns></returns>
        public ActionResult GitHubGetContributorsResult()
        {
            var model = new GitHubContributorsModel();

            try
            {
                string configPath = Server.MapPath("~/config/githubhq.txt");
                if (!System.IO.File.Exists(configPath))
                {
                    LogHelper.Debug <GitHubContributorController>("Config file was not found: " + configPath);
                    return(PartialView("~/Views/Partials/Home/GitHubContributors.cshtml", model));
                }

                string[] login        = System.IO.File.ReadAllLines(configPath).Where(x => x.Trim() != "").Distinct().ToArray();
                var      contributors = ApplicationContext.ApplicationCache.RuntimeCache.GetCacheItem <List <GitHubGlobalContributorModel> >("UmbracoGitHubContributors",
                                                                                                                                             () =>
                {
                    var githubController   = new GitHubController();
                    var gitHubContributors = new List <GitHubContributorModel>();
                    foreach (var repo in Repositories)
                    {
                        var response = githubController.GetAllRepoContributors(repo);
                        if (response.StatusCode == HttpStatusCode.OK &&
                            response.ResponseStatus == ResponseStatus.Completed)
                        {
                            gitHubContributors.AddRange(response.Data);
                        }
                        else
                        {
                            LogHelper.Warn <IGitHubContributorsModel>(string.Format("Invalid HTTP response for repository {0}", repo));
                        }
                    }

                    // filter to only include items from the last year
                    var filteredRange = DateTime.UtcNow.AddYears(-1).Subtract(new DateTime(1970, 1, 1)).TotalSeconds;
                    foreach (var contrib in gitHubContributors)
                    {
                        int add = 0, del = 0, total = 0;
                        foreach (var wk in contrib.Weeks.Where(x => x.W >= filteredRange))
                        {
                            add   += wk.A;
                            del   += wk.D;
                            total += wk.C;
                        }
                        contrib.Total          = total;
                        contrib.TotalAdditions = add;
                        contrib.TotalDeletions = del;
                    }

                    var filteredContributors = gitHubContributors
                                               .Where(g => !login.Contains(g.Author.Login))
                                               .GroupBy(g => g.Author.Id)
                                               .OrderByDescending(c => c.Sum(g => g.Total));


                    List <GitHubGlobalContributorModel> temp = new List <GitHubGlobalContributorModel>();

                    foreach (var group in filteredContributors)
                    {
                        var contributor = new GitHubGlobalContributorModel(group);
                        if (contributor.TotalCommits > 0)
                        {
                            temp.Add(contributor);
                        }
                    }

                    return(temp);
                }, TimeSpan.FromDays(1));


                model.Contributors = contributors;
            }
            catch (Exception ex)
            {
                LogHelper.Error <IGitHubContributorsModel>("Could not get GitHub Contributors", ex);
            }

            return(PartialView("~/Views/Partials/Home/GitHubContributors.cshtml", model));
        }
Exemplo n.º 10
0
 public void SetUp()
 {
     mockGitHubManager = new Mock <IGitHubManager>();
     gitHubController  = new GitHubController(mockGitHubManager.Object);
 }
 public void SetUp()
 {
     _mockRepoService   = new Mock <IGitHubRepoService>();
     _mockCommitService = new Mock <IGitHubCommitService>();
     _gitHubController  = new GitHubController(_mockRepoService.Object, _mockCommitService.Object);
 }
Exemplo n.º 12
0
 public TestLoadLanguages()
 {
     _service    = new GitHubServiceFake();
     _controller = new GitHubController(null, _service);
 }