示例#1
0
        public static void ValidParametersReturnTrue(Packet packet, Regex regex)
        {
            var commandService = new CommandService();
            var validator      = new PayloadValidator(CommandEnum.TextCommand, regex);

            commandService.ValidatePacket(packet, validator).Should().BeTrue();
        }
示例#2
0
        public async Task <IActionResult> ProcessOrder(IncommingOrderDto order)
        {
            try
            {
                var validationResult = PayloadValidator.ValidateOrderDetails(order);
                if (!validationResult.Item1)
                {
                    return(BadRequest(string.Join(", ", validationResult.Item2)));
                }

                var paymentResult = await PaymentProcessor.ProcessPayment(_clientFactory, order);

                if (!paymentResult.Item1)
                {
                    return(BadRequest(paymentResult.Item2));
                }

                var result = await _orders.AddNewOrderDetails(order);

                if (!result.Success)
                {
                    BadRequest(result.Message);
                }

                var uri = $"https://localhost:44327/api/billing/order/{result.SingleOrder.OrderNumber}";
                return(Created(uri, DtoMapper.MapResultDtoToCreatedOrderDto(result)));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, ex.Message));
            }
        }
示例#3
0
        protected override async void LoadPayload(string payload)
        {
            var newErrors = await PayloadValidator.ValidateAsync(payload);

            if (newErrors.Any(i => i.Type == ErrorViewModelType.Error))
            {
                MakeErrorsLike(newErrors);
                return;
            }

            try
            {
                if (_renderer == null)
                {
                    InitializeRenderer(MainPageViewModel.HostConfigEditor.HostConfig);
                }
            }
            catch (Exception ex)
            {
                newErrors.Add(new ErrorViewModel()
                {
                    Message = "Initializing renderer error: " + ex.ToString(),
                    Type    = ErrorViewModelType.Error
                });
                MakeErrorsLike(newErrors);
                return;
            }

            try
            {
                if (Settings.UseAsyncRenderMethod)
                {
                    RenderedCard = await _renderer.RenderAdaptiveJsonAsXamlAsync(payload);
                }
                else
                {
                    RenderedCard = _renderer.RenderAdaptiveJsonAsXaml(payload);
                }

                if (RenderedCard is FrameworkElement)
                {
                    (RenderedCard as FrameworkElement).VerticalAlignment = VerticalAlignment.Top;
                }
                MakeErrorsLike(newErrors);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.ToString());
                newErrors.Add(new ErrorViewModel()
                {
                    Message = "Rendering failed",
                    Type    = ErrorViewModelType.Error
                });
                MakeErrorsLike(newErrors);
            }
        }
示例#4
0
        public void ValidatePaymentDetailsDto_ShouldReturnCorrectBool(int orderNumber, double amount, bool expected)
        {
            var paymentDetails = new PaymentDetailsDto {
                OrderNumber = orderNumber, PayableAmount = amount
            };

            var actual = PayloadValidator.ValidatePaymentDetailsDto(paymentDetails);

            Assert.Equal(expected, actual);
        }
示例#5
0
        public void ValidateOrderDetails_ShouldReturnCorrectErrorCount(int orderNumber, int userId, double amount, string gateway, string description, int expected)
        {
            var incommingOrder = new IncommingOrderDto {
                OrderNumber = orderNumber, UserId = userId, PayableAmount = amount, PaymentGateWay = gateway, Description = description
            };

            var actual = PayloadValidator.ValidateOrderDetails(incommingOrder).Item2.Count;

            Assert.Equal(expected, actual);
        }
示例#6
0
        public void ValidatePayementGateway_ShouldReturnErrorMessage()
        {
            var           gateway = "";
            List <string> errors  = new List <string>();

            var expected = Messages.PaymentGatewayNotSelected();

            PayloadValidator.ValidatePayementGateway(gateway, errors);

            var actual = errors.FirstOrDefault();

            Assert.Equal(expected, actual);
        }
示例#7
0
        public void ValidatePayableAmount_ShouldReturnErrorMessage()
        {
            var           amount = -22;
            List <string> errors = new List <string>();

            var expected = Messages.PayableAmountErrorMessage();

            PayloadValidator.ValidatePayableAmount(amount, errors);

            var actual = errors.FirstOrDefault();

            Assert.Equal(expected, actual);
        }
示例#8
0
        public void ValidateInteger_ShouldReturnErrorMessage()
        {
            var           integer   = 0;
            var           valueType = "user";
            List <string> errors    = new List <string>();

            var expected = Messages.IntegerErrorMessage(valueType);

            PayloadValidator.ValidateInteger(integer, valueType, errors);

            var actual = errors.FirstOrDefault();

            Assert.Equal(expected, actual);
        }
示例#9
0
        protected override async void LoadPayload(string payload)
        {
            var newErrors = await PayloadValidator.ValidateAsync(payload);

            if (newErrors.Any(i => i.Type == ErrorViewModelType.Error))
            {
                MakeErrorsLike(newErrors);
                return;
            }

            try
            {
                if (_renderer == null)
                {
                    InitializeRenderer(MainPageViewModel.HostConfigEditor.HostConfig);
                }
            }
            catch (Exception ex)
            {
                newErrors.Add(new ErrorViewModel()
                {
                    Message = "Initializing renderer error: " + ex.ToString(),
                    Type    = ErrorViewModelType.Error
                });
                MakeErrorsLike(newErrors);
                return;
            }

            try
            {
                JsonObject jsonObject;
                if (JsonObject.TryParse(payload, out jsonObject))
                {
                    AdaptiveCardParseResult parseResult = AdaptiveCard.FromJson(jsonObject);

                    RenderedAdaptiveCard renderResult = _renderer.RenderAdaptiveCard(parseResult.AdaptiveCard);
                    if (renderResult.FrameworkElement != null)
                    {
                        RenderedCard         = renderResult.FrameworkElement;
                        renderResult.Action += async(sender, e) =>
                        {
                            var m_actionDialog = new ContentDialog();

                            if (e.Action.ActionType == ActionType.ShowCard)
                            {
                                AdaptiveShowCardAction showCardAction   = (AdaptiveShowCardAction)e.Action;
                                RenderedAdaptiveCard   renderedShowCard = _renderer.RenderAdaptiveCard(showCardAction.Card);
                                if (renderedShowCard.FrameworkElement != null)
                                {
                                    m_actionDialog.Content = renderedShowCard.FrameworkElement;
                                }
                            }
                            else
                            {
                                m_actionDialog.Content = SerializeActionEventArgsToString(e);
                            }

                            m_actionDialog.PrimaryButtonText = "Close";

                            await m_actionDialog.ShowAsync();
                        };

                        if (!MainPageViewModel.HostConfigEditor.HostConfig.Media.AllowInlinePlayback)
                        {
                            renderResult.MediaPlay += async(sender, e) =>
                            {
                                var onPlayDialog = new ContentDialog();
                                onPlayDialog.Content = "MediaPlayEvent:";

                                foreach (var source in e.Media.Sources)
                                {
                                    onPlayDialog.Content += "\n" + source.Url + " (" + source.MimeType + ")";
                                }

                                onPlayDialog.PrimaryButtonText = "Close";

                                await onPlayDialog.ShowAsync();
                            };
                        }
                        else
                        {
                            renderResult.MediaEnded += async(sender, e) =>
                            {
                                var mediaEndedDialog = new ContentDialog();
                                mediaEndedDialog.Content = "Media Ended Event:";

                                foreach (var source in e.Media.Sources)
                                {
                                    mediaEndedDialog.Content += "\n" + source.Url + " (" + source.MimeType + ")";
                                }

                                mediaEndedDialog.PrimaryButtonText = "Close";

                                await mediaEndedDialog.ShowAsync();
                            };
                        }
                    }
                    else
                    {
                        newErrors.Add(new ErrorViewModel()
                        {
                            Message = "There was an error Rendering this card",
                            Type    = ErrorViewModelType.Error
                        });
                    }
                    foreach (var error in parseResult.Errors)
                    {
                        newErrors.Add(new ErrorViewModel()
                        {
                            Message = error.Message,
                            Type    = ErrorViewModelType.Error
                        });
                    }
                    foreach (var error in renderResult.Errors)
                    {
                        newErrors.Add(new ErrorViewModel()
                        {
                            Message = error.Message,
                            Type    = ErrorViewModelType.Error
                        });
                    }
                    foreach (var error in parseResult.Warnings)
                    {
                        newErrors.Add(new ErrorViewModel()
                        {
                            Message = error.Message,
                            Type    = ErrorViewModelType.Warning
                        });
                    }

                    foreach (var error in renderResult.Warnings)
                    {
                        newErrors.Add(new ErrorViewModel()
                        {
                            Message = error.Message,
                            Type    = ErrorViewModelType.Warning
                        });
                    }
                }
                else
                {
                    newErrors.Add(new ErrorViewModel()
                    {
                        Message = "There was an error creating a JsonObject from the card",
                        Type    = ErrorViewModelType.Error
                    });
                }

                if (RenderedCard is FrameworkElement)
                {
                    (RenderedCard as FrameworkElement).VerticalAlignment = VerticalAlignment.Top;
                }
                MakeErrorsLike(newErrors);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.ToString());
                newErrors.Add(new ErrorViewModel()
                {
                    Message = "Rendering failed",
                    Type    = ErrorViewModelType.Error
                });
                MakeErrorsLike(newErrors);
            }
        }
示例#10
0
        protected override async void LoadPayload(string payload)
        {
            var newErrors = await PayloadValidator.ValidateAsync(payload);

            if (newErrors.Any(i => i.Type == ErrorViewModelType.Error))
            {
                MakeErrorsLike(newErrors);
                return;
            }

            try
            {
                if (_renderer == null)
                {
                    InitializeRenderer(MainPageViewModel.HostConfigEditor.HostConfig);
                }
            }
            catch (Exception ex)
            {
                newErrors.Add(new ErrorViewModel()
                {
                    Message = "Initializing renderer error: " + ex.ToString(),
                    Type    = ErrorViewModelType.Error
                });
                MakeErrorsLike(newErrors);
                return;
            }

            try
            {
                JsonObject jsonObject;
                if (JsonObject.TryParse(payload, out jsonObject))
                {
                    RenderedAdaptiveCard renderResult = _renderer.RenderAdaptiveCardFromJson(jsonObject);
                    if (renderResult.FrameworkElement != null)
                    {
                        RenderedCard         = renderResult.FrameworkElement;
                        renderResult.Action += async(sender, e) =>
                        {
                            var m_actionDialog = new ContentDialog();

                            if (e.Action.ActionType == ActionType.ShowCard)
                            {
                                AdaptiveShowCardAction showCardAction   = (AdaptiveShowCardAction)e.Action;
                                RenderedAdaptiveCard   renderedShowCard = _renderer.RenderAdaptiveCard(showCardAction.Card);
                                if (renderedShowCard.FrameworkElement != null)
                                {
                                    m_actionDialog.Content = renderedShowCard.FrameworkElement;
                                }
                            }
                            else
                            {
                                m_actionDialog.Content = SerializeActionEventArgsToString(e);
                            }

                            m_actionDialog.PrimaryButtonText = "Close";

                            await m_actionDialog.ShowAsync();
                        };
                    }
                    else
                    {
                        newErrors.Add(new ErrorViewModel()
                        {
                            Message = "There was an error Rendering this card",
                            Type    = ErrorViewModelType.Error
                        });
                    }
                }
                else
                {
                    newErrors.Add(new ErrorViewModel()
                    {
                        Message = "There was an error creating a JsonObject from the card",
                        Type    = ErrorViewModelType.Error
                    });
                }

                if (RenderedCard is FrameworkElement)
                {
                    (RenderedCard as FrameworkElement).VerticalAlignment = VerticalAlignment.Top;
                }
                MakeErrorsLike(newErrors);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.ToString());
                newErrors.Add(new ErrorViewModel()
                {
                    Message = "Rendering failed",
                    Type    = ErrorViewModelType.Error
                });
                MakeErrorsLike(newErrors);
            }
        }
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequest request,
            ILogger logger)
        {
            if (string.IsNullOrEmpty(config.Value.GitHubWebhookSecret))
            {
                return new ObjectResult(new { error = "GitHub secret not configured" })
                       {
                           StatusCode = StatusCodes.Status500InternalServerError
                       }
            }
            ;

            if (string.IsNullOrEmpty(config.Value.GitHubAppId) || string.IsNullOrEmpty(config.Value.GitHubAppPrivateKey))
            {
                return new ObjectResult(new { error = "GitHub App ID/Token not configured" })
                       {
                           StatusCode = StatusCodes.Status500InternalServerError
                       }
            }
            ;

            string eventName         = request.Headers.GetValueOrDefault("X-GitHub-Event");
            string deliveryId        = request.Headers.GetValueOrDefault("X-GitHub-Delivery");
            string receivedSignature = request.Headers.GetValueOrDefault("X-Hub-Signature");

            logger.LogInformation("Webhook delivery: Delivery id = '{DeliveryId}', Event name = '{EventName}'", deliveryId, eventName);

            if (string.IsNullOrEmpty(eventName))
            {
                return new ObjectResult(new { error = "X-GitHub-Event header missing" })
                       {
                           StatusCode = StatusCodes.Status400BadRequest
                       }
            }
            ;

            var payload = new PayloadReader(request);

            if (!PayloadValidator.IsSignatureValid(await payload.ReadAsByteArray(), receivedSignature, config.Value.GitHubWebhookSecret))
            {
                return(new BadRequestObjectResult(new { error = "Payload signature not valid" }));
            }
            else
            {
                var webhookResult = new WebhookResult();
                try
                {
                    string requestBody = await payload.ReadAsString();

                    await eventDispatchService.Process(eventName, requestBody, webhookResult);
                }
                catch (Exception ex)
                {
                    webhookResult.LogError(ex, "Failed to handle webhook");
                }

                return(new OkObjectResult(webhookResult));
            }
        }
    }
}
        public IActionResult ProcessSwedbankPayment([FromBody] PaymentDetailsDto value)
        {
            var isValidDto = PayloadValidator.ValidatePaymentDetailsDto(value);

            return(isValidDto ? StatusCode(200) : StatusCode(400));
        }
示例#13
0
 public void ValidSecret()
 {
     Assert.IsTrue(PayloadValidator.IsSignatureValid(testString,
                                                     "sha1=17776af870091664d05e1a90e22f3cfb181b5411", Key));
 }
示例#14
0
 public void InvalidSecretFails()
 {
     Assert.IsFalse(PayloadValidator.IsSignatureValid(testString,
                                                      "sha1=17776af870091664d05e1a90e22f3cfb181b5411", "InvalidKey"));
 }
示例#15
0
 public void InvalidSignatureFails()
 {
     Assert.IsFalse(PayloadValidator.IsSignatureValid(testString,
                                                      "sha1=ab776af870091664d05e1a90e22f3cfb181b54cd", Key));
 }
示例#16
0
 public void EmptySignatureFails()
 {
     Assert.IsFalse(PayloadValidator.IsSignatureValid(testString,
                                                      string.Empty, Key));
 }
示例#17
0
 public PayloadValidationFilter(PayloadValidator validator)
 {
     this.validator = Ensure.NotNull(validator, "validator");
 }