public void WebhookMapper_Map_Model_BodyAsString_And_UseTransformerIsTrue()
        {
            // Assign
            var model = new WebhookModel
            {
                Request = new WebhookRequestModel
                {
                    Url     = "https://localhost",
                    Method  = "get",
                    Headers = new Dictionary <string, string>
                    {
                        { "x", "y" }
                    },
                    Body           = "test",
                    UseTransformer = true
                }
            };

            var result = WebhookMapper.Map(model);

            result.Request.Url.Should().Be("https://localhost");
            result.Request.Method.Should().Be("get");
            result.Request.Headers.Should().HaveCount(1);
            result.Request.BodyData.BodyAsJson.Should().BeNull();
            result.Request.BodyData.BodyAsString.Should().Be("test");
            result.Request.BodyData.DetectedBodyType.Should().Be(BodyType.String);
            result.Request.UseTransformer.Should().BeTrue();
            result.Request.TransformerType.Should().Be(TransformerType.Handlebars);
        }
        public void WebhookMapper_Map_Model_BodyAsJson()
        {
            // Assign
            var model = new WebhookModel
            {
                Request = new WebhookRequestModel
                {
                    Url     = "https://localhost",
                    Method  = "get",
                    Headers = new Dictionary <string, string>
                    {
                        { "x", "y" }
                    },
                    BodyAsJson = new { n = 12345 }
                }
            };

            var result = WebhookMapper.Map(model);

            result.Request.Url.Should().Be("https://localhost");
            result.Request.Method.Should().Be("get");
            result.Request.Headers.Should().HaveCount(1);
            result.Request.BodyData.BodyAsString.Should().BeNull();
            result.Request.BodyData.BodyAsJson.Should().NotBeNull();
            result.Request.BodyData.DetectedBodyType.Should().Be(BodyType.Json);
        }
        private Guid?ConvertMappingAndRegisterAsRespondProvider(MappingModel mappingModel, Guid?guid = null, string path = null)
        {
            Check.NotNull(mappingModel, nameof(mappingModel));
            Check.NotNull(mappingModel.Request, nameof(mappingModel.Request));
            Check.NotNull(mappingModel.Response, nameof(mappingModel.Response));

            var requestBuilder = InitRequestBuilder(mappingModel.Request, true);

            if (requestBuilder == null)
            {
                return(null);
            }

            var responseBuilder = InitResponseBuilder(mappingModel.Response);

            var respondProvider = Given(requestBuilder, mappingModel.SaveToFile == true);

            if (guid != null)
            {
                respondProvider = respondProvider.WithGuid(guid.Value);
            }
            else if (mappingModel.Guid != null && mappingModel.Guid != Guid.Empty)
            {
                respondProvider = respondProvider.WithGuid(mappingModel.Guid.Value);
            }

            if (path != null)
            {
                respondProvider = respondProvider.WithPath(path);
            }

            if (!string.IsNullOrEmpty(mappingModel.Title))
            {
                respondProvider = respondProvider.WithTitle(mappingModel.Title);
            }

            if (mappingModel.Priority != null)
            {
                respondProvider = respondProvider.AtPriority(mappingModel.Priority.Value);
            }

            if (mappingModel.Scenario != null)
            {
                respondProvider = respondProvider.InScenario(mappingModel.Scenario);
                respondProvider = respondProvider.WhenStateIs(mappingModel.WhenStateIs);
                respondProvider = respondProvider.WillSetStateTo(mappingModel.SetStateTo);
            }

            if (mappingModel.Webhook?.Request != null)
            {
                respondProvider = respondProvider.WithWebhook(WebhookMapper.Map(mappingModel.Webhook));
            }

            respondProvider.RespondWith(responseBuilder);

            return(respondProvider.Guid);
        }