示例#1
0
        public void NegativeContentLengthThrowsException()
        {
            var options = new ResponseProperties.CreateOptions
            {
                Headers       = CommonTestHelpers.GenerateList(2),
                ContentLength = -1
            };

            ResponseProperties item = new ResponseProperties(options);
        }
示例#2
0
        public void NullKeyValuesAreNotCopied(string keyName)
        {
            var options = new ResponseProperties.CreateOptions
            {
                Headers       = CommonTestHelpers.GenerateList(keyName, 2),
                ContentLength = 10000
            };

            ResponseProperties item = new ResponseProperties(options);

            Assert.AreEqual(0, item.Headers.Count());
        }
示例#3
0
        public void CreateOptionsConstructorUpdatesProperties()
        {
            var options = new ResponseProperties.CreateOptions
            {
                Headers       = CommonTestHelpers.GenerateList(2),
                ContentLength = 10000
            };

            ResponseProperties item = new ResponseProperties(options);

            Assert.AreEqual(JsonSerializer.Serialize(options.Headers), JsonSerializer.Serialize(item.Headers));
            Assert.AreEqual(options.ContentLength, item.ContentLength);
        }
        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 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));
        }
        public void FormDataIsCopied()
        {
            KissLog.Tests.Common.CommonTestHelpers.ResetContext();

            var value = CommonTestHelpers.GenerateList(5);

            var dictionary = CommonTestHelpers.GenerateDictionary(value);

            var httpRequest = new Mock <HttpRequest>();

            httpRequest.SetUrl(UrlParser.GenerateUri("/Home/Index"));
            httpRequest.Setup(p => p.Method).Returns("GET");
            httpRequest.Setup(p => p.HasFormContentType).Returns(true);
            httpRequest.Setup(p => p.Form).Returns(new CustomFormCollection(value.ToStringValuesDictionary()));

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

            Assert.AreEqual(JsonSerializer.Serialize(value), JsonSerializer.Serialize(result.Properties.FormData));
        }
示例#7
0
        public void ObfuscatesTheProperties(string property)
        {
            int count = 2;

            FlushLogArgs flushLogArgs = CommonTestHelpers.Factory.CreateFlushLogArgs();

            flushLogArgs.HttpProperties.Request.SetProperties(new Http.RequestProperties(new Http.RequestProperties.CreateOptions
            {
                Headers         = property == "HttpProperties.Request.Properties.Headers" ? CommonTestHelpers.GenerateList(count) : null,
                Cookies         = property == "HttpProperties.Request.Properties.Cookies" ? CommonTestHelpers.GenerateList(count) : null,
                FormData        = property == "HttpProperties.Request.Properties.FormData" ? CommonTestHelpers.GenerateList(count) : null,
                ServerVariables = property == "HttpProperties.Request.Properties.ServerVariables" ? CommonTestHelpers.GenerateList(count) : null,
                Claims          = property == "HttpProperties.Request.Properties.Claims" ? CommonTestHelpers.GenerateList(count) : null
            }));
            flushLogArgs.HttpProperties.Response.SetProperties(new Http.ResponseProperties(new Http.ResponseProperties.CreateOptions
            {
                Headers = property == "HttpProperties.Response.Properties.Headers" ? CommonTestHelpers.GenerateList(count) : null
            }));

            var obfuscationService = new Mock <IObfuscationService>();

            obfuscationService
            .Setup(p => p.ShouldObfuscate(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()))
            .Returns(true);

            var service = new ObfuscateFlushLogArgsService(obfuscationService.Object);

            service.Obfuscate(flushLogArgs);

            IEnumerable <KeyValuePair <string, string> > properties =
                property == "HttpProperties.Request.Properties.Headers" ? flushLogArgs.HttpProperties.Request.Properties.Headers :
                property == "HttpProperties.Request.Properties.Cookies" ? flushLogArgs.HttpProperties.Request.Properties.Cookies :
                property == "HttpProperties.Request.Properties.FormData" ? flushLogArgs.HttpProperties.Request.Properties.FormData :
                property == "HttpProperties.Request.Properties.ServerVariables" ? flushLogArgs.HttpProperties.Request.Properties.ServerVariables :
                property == "HttpProperties.Request.Properties.Claims" ? flushLogArgs.HttpProperties.Request.Properties.Claims :
                property == "HttpProperties.Response.Properties.Headers" ? flushLogArgs.HttpProperties.Response.Properties.Headers :
                new List <KeyValuePair <string, string> >();

            Assert.AreEqual(count, properties.Count());
            Assert.IsTrue(properties.All(p => p.Value == ObfuscateFlushLogArgsService.Placeholder));
        }
        public void EvaluatesOptionsShouldLogFormData()
        {
            KissLog.Tests.Common.CommonTestHelpers.ResetContext();

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

            var value = CommonTestHelpers.GenerateList(5);

            var dictionary = CommonTestHelpers.GenerateDictionary(value);

            var httpRequest = new Mock <HttpRequest>();

            httpRequest.SetUrl(UrlParser.GenerateUri("/Home/Index"));
            httpRequest.Setup(p => p.Method).Returns("GET");
            httpRequest.Setup(p => p.HasFormContentType).Returns(true);
            httpRequest.Setup(p => p.Form).Returns(new CustomFormCollection(value.ToStringValuesDictionary()));

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

            Assert.AreEqual(0, result.Properties.FormData.Count());
        }
示例#9
0
        public void NullKeyValuesAreNotCopied(string keyName)
        {
            var options = new RequestProperties.CreateOptions
            {
                Headers         = CommonTestHelpers.GenerateList(keyName, 2),
                Cookies         = CommonTestHelpers.GenerateList(keyName, 2),
                QueryString     = CommonTestHelpers.GenerateList(keyName, 2),
                FormData        = CommonTestHelpers.GenerateList(keyName, 2),
                ServerVariables = CommonTestHelpers.GenerateList(keyName, 2),
                Claims          = CommonTestHelpers.GenerateList(keyName, 2)
            };

            RequestProperties item = new RequestProperties(options);

            Assert.AreEqual(0, item.Headers.Count());
            Assert.AreEqual(0, item.Cookies.Count());
            Assert.AreEqual(0, item.QueryString.Count());
            Assert.AreEqual(0, item.FormData.Count());
            Assert.AreEqual(0, item.ServerVariables.Count());
            Assert.AreEqual(0, item.Claims.Count());
        }
示例#10
0
        public void ShouldObfuscatePropertyNameIsSetCorrectly(string property)
        {
            int count = 2;

            FlushLogArgs flushLogArgs = CommonTestHelpers.Factory.CreateFlushLogArgs();

            flushLogArgs.HttpProperties.Request.SetProperties(new Http.RequestProperties(new Http.RequestProperties.CreateOptions
            {
                Headers         = property == "HttpProperties.Request.Properties.Headers" ? CommonTestHelpers.GenerateList(count) : null,
                Cookies         = property == "HttpProperties.Request.Properties.Cookies" ? CommonTestHelpers.GenerateList(count) : null,
                FormData        = property == "HttpProperties.Request.Properties.FormData" ? CommonTestHelpers.GenerateList(count) : null,
                ServerVariables = property == "HttpProperties.Request.Properties.ServerVariables" ? CommonTestHelpers.GenerateList(count) : null,
                Claims          = property == "HttpProperties.Request.Properties.Claims" ? CommonTestHelpers.GenerateList(count) : null
            }));
            flushLogArgs.HttpProperties.Response.SetProperties(new Http.ResponseProperties(new Http.ResponseProperties.CreateOptions
            {
                Headers = property == "HttpProperties.Response.Properties.Headers" ? CommonTestHelpers.GenerateList(count) : null
            }));

            List <string> propertyNames = new List <string>();

            var obfuscationService = new Mock <IObfuscationService>();

            obfuscationService
            .Setup(p => p.ShouldObfuscate(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()))
            .Callback((string key, string value, string propertyName) =>
            {
                propertyNames.Add(propertyName);
            })
            .Returns(true);

            var service = new ObfuscateFlushLogArgsService(obfuscationService.Object);

            service.Obfuscate(flushLogArgs);

            Assert.AreEqual(count, propertyNames.Count);
            Assert.IsTrue(propertyNames.All(p => p == property));
        }
示例#11
0
        public void CreateOptionsConstructorUpdatesProperties()
        {
            var options = new RequestProperties.CreateOptions
            {
                Headers         = CommonTestHelpers.GenerateList(2),
                Cookies         = CommonTestHelpers.GenerateList(2),
                QueryString     = CommonTestHelpers.GenerateList(2),
                FormData        = CommonTestHelpers.GenerateList(2),
                ServerVariables = CommonTestHelpers.GenerateList(2),
                Claims          = CommonTestHelpers.GenerateList(2),
                InputStream     = $"Input stream {Guid.NewGuid()}"
            };

            RequestProperties item = new RequestProperties(options);

            Assert.AreEqual(JsonSerializer.Serialize(options.Headers), JsonSerializer.Serialize(item.Headers));
            Assert.AreEqual(JsonSerializer.Serialize(options.Cookies), JsonSerializer.Serialize(item.Cookies));
            Assert.AreEqual(JsonSerializer.Serialize(options.QueryString), JsonSerializer.Serialize(item.QueryString));
            Assert.AreEqual(JsonSerializer.Serialize(options.FormData), JsonSerializer.Serialize(item.FormData));
            Assert.AreEqual(JsonSerializer.Serialize(options.ServerVariables), JsonSerializer.Serialize(item.ServerVariables));
            Assert.AreEqual(JsonSerializer.Serialize(options.Claims), JsonSerializer.Serialize(item.Claims));
            Assert.AreEqual(options.InputStream, item.InputStream);
        }