Example #1
0
        public static Mock <HttpContext> MockHttpContext(string inputStream = null, string responseContentType = "text/plain")
        {
            if (inputStream == null)
            {
                inputStream = $"InputStream {Guid.NewGuid()}";
            }

            var httpRequest = new Mock <HttpRequest>();

            httpRequest.SetUrl(UrlParser.GenerateUri("/Home/Index"));
            httpRequest.Setup(p => p.Method).Returns(HttpMethods.Post);
            httpRequest.Setup(p => p.Body).Returns(new MemoryStream(Encoding.UTF8.GetBytes(inputStream)));
            httpRequest.Setup(p => p.Headers).Returns(new CustomHeaderCollection(new Dictionary <string, StringValues>
            {
                { HeaderNames.ContentType, "text/plain" }
            }));

            var httpResponse = new Mock <HttpResponse>();

            httpResponse.Setup(p => p.StatusCode).Returns(204);
            httpResponse.Setup(p => p.Headers).Returns(new CustomHeaderCollection(new Dictionary <string, StringValues>
            {
                { HeaderNames.ContentType, responseContentType }
            }));
            httpResponse.SetupProperty(p => p.Body, new MemoryStream());

            var httpContext = new Mock <HttpContext>();

            httpContext.Setup(p => p.Request).Returns(httpRequest.Object);
            httpContext.Setup(p => p.Response).Returns(httpResponse.Object);
            httpContext.Setup(p => p.Items).Returns(new Dictionary <object, object>());

            return(httpContext);
        }
        public void EvaluatesOptionsShouldLogInputStream()
        {
            KissLog.Tests.Common.CommonTestHelpers.ResetContext();

            KissLogConfiguration.Options.ShouldLogInputStream((KissLog.Http.HttpRequest args) => false);

            string body = $"Input stream {Guid.NewGuid()}";
            var    ms   = new MemoryStream(Encoding.UTF8.GetBytes(body));

            var httpRequest = new Mock <HttpRequest>();

            httpRequest.SetUrl(UrlParser.GenerateUri("/Home/Index"));
            httpRequest.Setup(p => p.Method).Returns("GET");
            httpRequest.Setup(p => p.Body).Returns(ms);
            httpRequest.Setup(p => p.Headers).Returns(new CustomHeaderCollection(new Dictionary <string, StringValues>
            {
                { HeaderNames.ContentType, "text/plain" }
            }));

            ModuleInitializer.ReadInputStreamProvider = new EnableBufferingReadInputStreamProvider();

            var result = HttpRequestFactory.Create(httpRequest.Object);

            Assert.IsNull(result.Properties.InputStream);
        }
        public void LogListenerInterceptorShouldLogIsEvaluated()
        {
            CommonTestHelpers.ResetContext();

            List <HttpRequest> httpRequestArgs = new List <HttpRequest>();

            ILogListener listener = new CustomLogListener(onBeginRequest: (arg) => { httpRequestArgs.Add(arg); })
            {
                Interceptor = new CustomLogListenerInterceptor
                {
                    ShouldLogBeginRequest = (HttpRequest httpRequest) =>
                    {
                        return(httpRequest.Url.LocalPath == "/App/Method1" || httpRequest.Url.LocalPath == "/App/Method3");
                    }
                }
            };

            KissLogConfiguration.Listeners.Add(listener);

            string[] urls = new[] { "/App/Method1", "/App/Method2", "/App/Method3", "/App/Method4" };

            foreach (string url in urls)
            {
                HttpRequest httpRequest = new HttpRequest(new HttpRequest.CreateOptions
                {
                    Url        = UrlParser.GenerateUri(url),
                    HttpMethod = "GET"
                });

                NotifyBeginRequest.Notify(httpRequest);
            }

            Assert.AreEqual(2, httpRequestArgs.Count);
        }
        public void CreateOptionsConstructorUpdatesProperties()
        {
            var options = new HttpRequest.CreateOptions
            {
                StartDateTime = DateTime.UtcNow.AddSeconds(-120),
                Url           = UrlParser.GenerateUri(Guid.NewGuid().ToString()),
                HttpMethod    = "GET",
                UserAgent     = $"UserAgent {Guid.NewGuid()}",
                RemoteAddress = $"RemoteAddress {Guid.NewGuid()}",
                HttpReferer   = $"HttpReferer {Guid.NewGuid()}",
                SessionId     = $"SessionId {Guid.NewGuid()}",
                IsNewSession  = true,
                MachineName   = $"MachineName {Guid.NewGuid()}",
                Properties    = new RequestProperties(new RequestProperties.CreateOptions())
            };

            HttpRequest item = new HttpRequest(options);

            Assert.AreEqual(options.StartDateTime, item.StartDateTime);
            Assert.AreEqual(options.Url.ToString(), item.Url.ToString());
            Assert.AreEqual(options.HttpMethod, item.HttpMethod);
            Assert.AreEqual(options.UserAgent, item.UserAgent);
            Assert.AreEqual(options.RemoteAddress, item.RemoteAddress);
            Assert.AreEqual(options.HttpReferer, item.HttpReferer);
            Assert.AreEqual(options.SessionId, item.SessionId);
            Assert.AreEqual(options.IsNewSession, item.IsNewSession);
            Assert.AreEqual(options.MachineName, item.MachineName);
            Assert.AreSame(options.Properties, item.Properties);
        }
 public void NullOrInvalidHttpMethodThrowsException(string httpMethod)
 {
     HttpRequest item = new HttpRequest(new HttpRequest.CreateOptions
     {
         Url        = UrlParser.GenerateUri(null),
         HttpMethod = httpMethod
     });
 }
        public void ResponseIsNull()
        {
            HttpProperties item = new HttpProperties(new HttpRequest(new HttpRequest.CreateOptions
            {
                HttpMethod = "GET",
                Url        = UrlParser.GenerateUri(null)
            }));

            Assert.IsNull(item.Response);
        }
        public void SetResponseWithNullArgumentsThrowsException()
        {
            HttpProperties item = new HttpProperties(new HttpRequest(new HttpRequest.CreateOptions
            {
                HttpMethod = "GET",
                Url        = UrlParser.GenerateUri(null)
            }));

            item.SetResponse(null);
        }
        public void StartDateTimeHasValue()
        {
            HttpRequest item = new HttpRequest(new HttpRequest.CreateOptions
            {
                Url        = UrlParser.GenerateUri(null),
                HttpMethod = "GET"
            });

            Assert.IsTrue(item.StartDateTime.Year > default(DateTime).Year);
        }
        public void StartDateTimeIsInThePast()
        {
            HttpRequest item = new HttpRequest(new HttpRequest.CreateOptions
            {
                Url        = UrlParser.GenerateUri(null),
                HttpMethod = "GET"
            });

            Assert.IsTrue(item.StartDateTime < DateTime.UtcNow);
        }
        public void StartDateTimeIsInUtcFormat()
        {
            HttpRequest item = new HttpRequest(new HttpRequest.CreateOptions
            {
                Url        = UrlParser.GenerateUri(null),
                HttpMethod = "GET"
            });

            Assert.AreEqual(DateTimeKind.Utc, item.StartDateTime.Kind);
        }
        public void IdIsNotNull()
        {
            HttpRequest item = new HttpRequest(new HttpRequest.CreateOptions
            {
                Url        = UrlParser.GenerateUri(null),
                HttpMethod = "GET"
            });

            Assert.IsTrue(item.Id != Guid.Empty);
        }
        public void SetPropertiesThrowsExceptionForNullArgument()
        {
            HttpRequest item = new HttpRequest(new HttpRequest.CreateOptions
            {
                Url        = UrlParser.GenerateUri(null),
                HttpMethod = "GET"
            });

            item.SetProperties(null);
        }
        public void HttpMethodIsTransformedToUppercase(string httpMethod)
        {
            HttpRequest item = new HttpRequest(new HttpRequest.CreateOptions
            {
                Url        = UrlParser.GenerateUri(null),
                HttpMethod = httpMethod
            });

            Assert.AreEqual(httpMethod.Trim().ToUpperInvariant(), item.HttpMethod);
        }
        public void PropertiesIsNotNull()
        {
            HttpRequest item = new HttpRequest(new HttpRequest.CreateOptions
            {
                Url        = UrlParser.GenerateUri(null),
                HttpMethod = "GET",
                Properties = null
            });

            Assert.IsNotNull(item.Properties);
        }
        public void EmptyHttpRequestDoesNotThrowException()
        {
            Uri url = UrlParser.GenerateUri($"/Home/Index/{Guid.NewGuid()}");

            var httpRequest = new Mock <HttpRequest>();

            httpRequest.SetUrl(url);
            httpRequest.Setup(p => p.Method).Returns("GET");

            var result = HttpRequestFactory.Create(httpRequest.Object);
        }
        public void HttpMethodIsCopied(string httpMethod)
        {
            var httpRequest = new Mock <HttpRequest>();

            httpRequest.SetUrl(UrlParser.GenerateUri("/Home/Index"));
            httpRequest.Setup(p => p.Method).Returns(httpMethod);

            var result = HttpRequestFactory.Create(httpRequest.Object);

            Assert.AreEqual(httpMethod, result.HttpMethod);
        }
        public void HttpRequestConstructorUpdatesProperties()
        {
            HttpRequest httpRequest = new HttpRequest(new HttpRequest.CreateOptions
            {
                HttpMethod = "GET",
                Url        = UrlParser.GenerateUri(null)
            });

            HttpProperties item = new HttpProperties(httpRequest);

            Assert.AreSame(httpRequest, item.Request);
        }
        public void UrlIsCopied()
        {
            Uri url = UrlParser.GenerateUri($"/Home/Index/{Guid.NewGuid()}?param1={Guid.NewGuid()}");

            var httpRequest = new Mock <HttpRequest>();

            httpRequest.SetUrl(url);
            httpRequest.Setup(p => p.Method).Returns("GET");

            var result = HttpRequestFactory.Create(httpRequest.Object);

            Assert.AreEqual(url.ToString(), result.Url.ToString());
        }
        public void ThrowsExceptionWhenHttpPropertiesResponseIsNull()
        {
            HttpProperties httpProperties = new HttpProperties(new HttpRequest(new HttpRequest.CreateOptions
            {
                HttpMethod = "GET",
                Url        = UrlParser.GenerateUri(null)
            }));

            FlushLogArgs item = new FlushLogArgs(new FlushLogArgs.CreateOptions
            {
                HttpProperties = httpProperties
            });
        }
        public void MachineNameIsCopied()
        {
            var httpRequest = new Mock <HttpRequest>();

            httpRequest.SetUrl(UrlParser.GenerateUri("/Home/Index"));
            httpRequest.Setup(p => p.Method).Returns("GET");

            var result = HttpRequestFactory.Create(httpRequest.Object);

            string machineName = InternalHelpers.GetMachineName();

            Assert.AreEqual(machineName, result.MachineName);
        }
        public void HeadersAreCopied()
        {
            var value = CommonTestHelpers.GenerateList(5);

            var httpRequest = new Mock <HttpRequest>();

            httpRequest.SetUrl(UrlParser.GenerateUri("/Home/Index"));
            httpRequest.Setup(p => p.Method).Returns("GET");
            httpRequest.Setup(p => p.Headers).Returns(new CustomHeaderCollection(value.ToStringValuesDictionary()));

            var result = HttpRequestFactory.Create(httpRequest.Object);

            Assert.AreEqual(JsonSerializer.Serialize(value), JsonSerializer.Serialize(result.Properties.Headers));
        }
        public void SetResponseUpdatesProperty()
        {
            HttpResponse httpResponse = new HttpResponse(new HttpResponse.CreateOptions());

            HttpProperties item = new HttpProperties(new HttpRequest(new HttpRequest.CreateOptions
            {
                HttpMethod = "GET",
                Url        = UrlParser.GenerateUri(null)
            }));

            item.SetResponse(httpResponse);

            Assert.AreSame(httpResponse, item.Response);
        }
        public void ServerVariablesAreCopied()
        {
            var value = KissLog.Tests.Common.CommonTestHelpers.GenerateList(5);

            var httpRequest = new Mock <HttpRequestBase>();

            httpRequest.Setup(p => p.Url).Returns(UrlParser.GenerateUri("/Home/Index"));
            httpRequest.Setup(p => p.HttpMethod).Returns("GET");
            httpRequest.Setup(p => p.ServerVariables).Returns(Helpers.GenerateNameValueCollection(value));

            var result = HttpRequestFactory.Create(httpRequest.Object);

            Assert.AreEqual(JsonSerializer.Serialize(value), JsonSerializer.Serialize(result.Properties.ServerVariables));
        }
        public void UrlReferrerIsCopied()
        {
            Uri urlReferrer = new Uri("https://google.com");

            var httpRequest = new Mock <HttpRequestBase>();

            httpRequest.Setup(p => p.Url).Returns(UrlParser.GenerateUri("/Home/Index"));
            httpRequest.Setup(p => p.HttpMethod).Returns("GET");
            httpRequest.Setup(p => p.UrlReferrer).Returns(urlReferrer);

            var result = HttpRequestFactory.Create(httpRequest.Object);

            Assert.AreEqual(urlReferrer.ToString(), result.HttpReferer);
        }
        public static HttpProperties Create(string url)
        {
            if (string.IsNullOrWhiteSpace(url))
            {
                throw new ArgumentNullException(nameof(url));
            }

            return(new HttpProperties(new HttpRequest(new HttpRequest.CreateOptions
            {
                HttpMethod = "GET",
                Url = UrlParser.GenerateUri(url),
                MachineName = InternalHelpers.GetMachineName()
            })));
        }
        public void UserHostAddressIsCopied()
        {
            string userHostAddress = $"UserHostAddress {Guid.NewGuid()}";

            var httpRequest = new Mock <HttpRequestBase>();

            httpRequest.Setup(p => p.Url).Returns(UrlParser.GenerateUri("/Home/Index"));
            httpRequest.Setup(p => p.HttpMethod).Returns("GET");
            httpRequest.Setup(p => p.UserHostAddress).Returns(userHostAddress);

            var result = HttpRequestFactory.Create(httpRequest.Object);

            Assert.AreEqual(userHostAddress, result.RemoteAddress);
        }
        public void QueryStringIsCopiedFromUnvalidatedRequestValues()
        {
            var value            = KissLog.Tests.Common.CommonTestHelpers.GenerateList(5);
            var unvalidatedValue = KissLog.Tests.Common.CommonTestHelpers.GenerateList(5);

            var httpRequest = new Mock <HttpRequestBase>();

            httpRequest.Setup(p => p.Url).Returns(UrlParser.GenerateUri("/Home/Index"));
            httpRequest.Setup(p => p.HttpMethod).Returns("GET");
            httpRequest.Setup(p => p.QueryString).Returns(Helpers.GenerateNameValueCollection(value));
            httpRequest.Setup(p => p.Unvalidated.QueryString).Returns(Helpers.GenerateNameValueCollection(unvalidatedValue));

            var result = HttpRequestFactory.Create(httpRequest.Object);

            Assert.AreEqual(JsonSerializer.Serialize(unvalidatedValue), JsonSerializer.Serialize(result.Properties.QueryString));
        }
        public void QueryStringIsCopied()
        {
            var value = CommonTestHelpers.GenerateList(5);
            var qs    = new FormUrlEncodedContent(value).ReadAsStringAsync().Result;

            var dictionary = CommonTestHelpers.GenerateDictionary(value);

            var httpRequest = new Mock <HttpRequest>();

            httpRequest.SetUrl(UrlParser.GenerateUri("/Home/Index?" + qs));
            httpRequest.Setup(p => p.Method).Returns("GET");

            var result = HttpRequestFactory.Create(httpRequest.Object);

            Assert.AreEqual(JsonSerializer.Serialize(value), JsonSerializer.Serialize(result.Properties.QueryString));
        }
Example #29
0
        private HttpProperties GetHttpProperties(bool includeResponse)
        {
            HttpProperties httpProperties = new HttpProperties(new HttpRequest(new HttpRequest.CreateOptions
            {
                HttpMethod = "GET",
                Url        = UrlParser.GenerateUri(null)
            }));

            if (includeResponse)
            {
                httpProperties.SetResponse(new HttpResponse(new HttpResponse.CreateOptions()
                {
                }));
            }

            return(httpProperties);
        }
        public void ReferrerIsCopied()
        {
            string referrer = $"Referer {Guid.NewGuid()}";

            var httpRequest = new Mock <HttpRequest>();

            httpRequest.SetUrl(UrlParser.GenerateUri("/Home/Index"));
            httpRequest.Setup(p => p.Method).Returns("GET");
            httpRequest.Setup(p => p.Headers).Returns(new CustomHeaderCollection(new Dictionary <string, StringValues>
            {
                { HeaderNames.Referer, referrer }
            }));

            var result = HttpRequestFactory.Create(httpRequest.Object);

            Assert.AreEqual(referrer, result.HttpReferer);
        }