public void CanCreateFromStack(Version version, bool expectData) { var data = _webHookDataPluginManager.CreateFromStack(GetWebHookDataContext(version)); if (expectData) { string filePath = String.Format(@"..\..\Plugins\WebHookData\v{0}.stack.expected.json", version); ApprovalsUtility.VerifyFile(filePath, JsonConvert.SerializeObject(data, Formatting.Indented)); } else { Assert.Null(data); } }
public IHttpActionResult Promote(string id) { if (String.IsNullOrEmpty(id)) { return(NotFound()); } Stack stack = _stackRepository.GetById(id); if (stack == null || !CanAccessOrganization(stack.OrganizationId)) { return(NotFound()); } if (!_billingManager.HasPremiumFeatures(stack.OrganizationId)) { return(PlanLimitReached("Promote to External is a premium feature used to promote an error stack to an external system. Please upgrade your plan to enable this feature.")); } List <WebHook> promotedProjectHooks = _webHookRepository.GetByProjectId(stack.ProjectId).Where(p => p.EventTypes.Contains(WebHookRepository.EventTypes.StackPromoted)).ToList(); if (!promotedProjectHooks.Any()) { return(NotImplemented("No promoted web hooks are configured for this project. Please add a promoted web hook to use this feature.")); } foreach (WebHook hook in promotedProjectHooks) { var context = new WebHookDataContext(hook.Version, stack, isNew: stack.TotalOccurrences == 1, isRegression: stack.IsRegressed); _webHookNotificationQueue.Enqueue(new WebHookNotification { OrganizationId = hook.OrganizationId, ProjectId = hook.ProjectId, Url = hook.Url, Data = _webHookDataPluginManager.CreateFromStack(context) }); // TODO: Add stats metrics for webhooks. } return(Ok()); }