public void Gollum_Event() { var hook = new GhWebhook(CreateDummyRequestForPayload(GollumEvent.EventString)); Assert.IsType <GollumEvent>(hook.PayloadObject); var gollumEvent = (GollumEvent)hook.PayloadObject; Assert.NotNull(gollumEvent.Pages); Assert.NotNull(gollumEvent.Repository); Assert.NotNull(gollumEvent.Sender); }
public async Task <IActionResult> Receive() { _matterhook = new MatterhookClient(_config.MmConfig.WebhookUrl); try { GhWebhook hook; try { hook = new GhWebhook(Request, _config.Secret); //Signature validation has been moved to GithubWebhookLibrary } catch (Exception e) { return(StatusCode(400, e.Message)); } var message = new MattermostMessage { Channel = _config.MmConfig.Channel, Username = _config.MmConfig.Username, IconUrl = _config.MmConfig.IconUrl != null ? _config.MmConfig.IconUrl : null }; switch (hook.Event) { case PullRequestEvent.EventString: { var pr = (PullRequestEvent)hook.PayloadObject; if (pr.Action == "closed") { if (pr.PullRequest.Merged != null && (bool)pr.PullRequest.Merged) { var user = pr.PullRequest.User.Login; if (_config.IgnoredUsers_Detailed == null) { _config.IgnoredUsers_Detailed = new List <Code.IgnoredUser>(); } if (_config.IgnoredUsers_Detailed.Exists(x => x.UserName == user)) { return(StatusCode(200, $"{user} is already in my list!")); } message.Text += "#users-first-contribution\n"; var usrMd = $"[{user}]({pr.PullRequest.User.HtmlUrl})"; if (_config.CelebrationEmoji != null) { message.Text += $"{_config.CelebrationEmoji} "; } message.Text += $"A User has had a pull request merged for the first time!"; if (_config.CelebrationEmoji != null) { message.Text += $" {_config.CelebrationEmoji}"; } message.Text += $"\n\nUser: {usrMd}\nPull: {pr.PullRequest.HtmlUrl}"; if (_config.CustomString != null) { message.Text += $"\n\n {_config.CustomString}"; } var response = await _matterhook.PostAsync(message); if (response == null || response.StatusCode != HttpStatusCode.OK) { return(StatusCode(500, response != null ? $"Unable to post to Mattermost: {response.StatusCode}" : "Unable to post to Mattermost")); } _config.IgnoredUsers_Detailed.Add(new Code.IgnoredUser { UserName = user, PullRequestUrl = pr.PullRequest.HtmlUrl, ContributionDate = $"{pr.PullRequest.ClosedAt:dd MMMM yyyy HH:mm:ss}" }); _config.Save("/config/config.json"); return(StatusCode(200, "Succesfully posted to Mattermost")); } }
public void Deployment_Event() { var hook = new GhWebhook(CreateDummyRequestForPayload(DeploymentEvent.EventString)); Assert.IsType <DeploymentEvent>(hook.PayloadObject); }
public void PullRequest_Event() { var hook = new GhWebhook(CreateDummyRequestForPayload(PullRequestEvent.EventString)); Assert.IsType <PullRequestEvent>(hook.PayloadObject); }
public void Event_With_Signature() { var hook = new GhWebhook(CreateDummyRequestForPayloadWithSignature(PushEvent.EventString), "clientSecret"); Assert.IsType <PushEvent>(hook.PayloadObject); }