Exemple #1
0
        public async Task HandleEventTest()
        {
            // setup
            var appTelemetry        = new Mock <IAppTelemetry>();
            var gitHubClientAdapter = new Mock <IGitHubClientAdapter>();

            appTelemetry.Setup(f => f.RecordMetric(It.IsAny <string>(), It.IsAny <long>()));
            var gitHubClientAdapterFactory = new Mock <IGitHubClientAdapterFactory>();

            gitHubClientAdapterFactory.Setup(f => f.GetGitHubClientAdapterAsync(It.IsAny <long>(), It.IsAny <string>()))
            .ReturnsAsync(gitHubClientAdapter.Object);
            gitHubClientAdapter.Setup(f => f.GetPullRequestFilesAsync(It.IsAny <long>(), It.IsAny <int>()))
            .ReturnsAsync(new List <PullRequestFile>());
            gitHubClientAdapter.Setup(f => f.GetIssueLabelsAsync(It.IsAny <long>(), It.IsAny <int>()))
            .ReturnsAsync(new List <Label>());
            gitHubClientAdapter.Setup(f => f.GetIssueCommentsAsync(It.IsAny <long>(), It.IsAny <int>()))
            .ReturnsAsync(new List <IssueComment>());

            var installationEventHandler = new PullRequestEventHandler(
                gitHubClientAdapterFactory.Object,
                appTelemetry.Object,
                new Mock <ILogger <PullRequestEventHandler> >().Object);

            // act
            await installationEventHandler.HandleEvent(await File.ReadAllTextAsync(@"Data/PulRequestPayload.txt"));

            // assert
            appTelemetry.Verify(
                f =>
                f.RecordMetric(It.IsAny <string>(), It.IsAny <long>()),
                Times.Once);
        }
 public GithubWebhookController(
     IssueCommentEventHandler issueCommentEventHandler,
     PullRequestReviewEventHandler pullRequestReviewEventHandler,
     PullRequestEventHandler pullRequestEventHandler,
     PushEventHandler pushEventHandler,
     StatusEventHandler statusEventHandler)
 {
     handlers = new Dictionary <string, Func <JObject, Task <WebhookResponse> > > {
         { "issue_comment", data => issueCommentEventHandler.Handle(data.ToObject <IssueCommentEvent>()) },
         { "pull_request_review", data => pullRequestReviewEventHandler.Handle(data.ToObject <PullRequestReviewEvent>()) },
         { "pull_request", data => pullRequestEventHandler.Handle(data.ToObject <PullRequestEvent>()) },
         { "status", data => statusEventHandler.Handle(data.ToObject <StatusEvent>()) },
         { "push", data => pushEventHandler.Handle(data.ToObject <PushEvent>()) },
     };
 }