示例#1
0
        public async Task ItShouldNotProcessIssuesWebhookWhenActionIsNotOpenedOrEdited(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.Never());
            Assert.IsType <OkResult>(result);
        }
示例#2
0
        public async Task <IActionResult> HandleIssuesWebhook([FromHeader(Name = "X-Hub-Signature")] string secret, [FromBody] IssueWebHookViewModel viewModel)
        {
            if (!IsSecretValid(secret))
            {
                return(BadRequest());
            }

            if (viewModel.Action != "opened" && viewModel.Action != "edited")
            {
                return(Ok());
            }

            Log.Information($"Starting to process incoming request for issue #{viewModel.Issue.Number}.");

            try {
                await pipelineRunnerService.ProcessIssue(viewModel.Issue.Number);
            } catch (Exception ex) {
                Log.Error("Error while processing issue {issue}: {error}", viewModel.Issue.Number, ex.ToString());
            }

            return(Ok());
        }