Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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());
        }