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); }
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()); }