コード例 #1
0
        public void AllowedContentTypeLogsTheResponseBodyAsAFile(string contentType)
        {
            KissLog.Tests.Common.CommonTestHelpers.ResetContext();
            KissLogConfiguration.Options.ShouldLogResponseBody((HttpProperties httpProperties) => true);

            LoggedFile file        = null;
            string     fileContent = null;

            KissLogConfiguration.Listeners.Add(new KissLog.Tests.Common.CustomLogListener(onFlush: (FlushLogArgs arg) =>
            {
                file        = arg.Files.FirstOrDefault();
                fileContent = file == null ? null : File.ReadAllText(file.FilePath);
            }));

            string responseBody = $"ResponseBody {Guid.NewGuid()}";

            var httpContext = Helpers.MockHttpContext(responseBody: responseBody);

            httpContext.Setup(p => p.Response.Headers).Returns(Helpers.GenerateNameValueCollection(new List <KeyValuePair <string, string> >
            {
                new KeyValuePair <string, string>("Content-Type", contentType)
            }));

            KissLogHttpModule module = new KissLogHttpModule();

            module.OnEndRequest(httpContext.Object);

            Assert.IsNotNull(file);
            Assert.AreEqual(responseBody, fileContent);
        }
コード例 #2
0
        public void GetsOrAddsTheLoggerToHttpContext()
        {
            var httpContext = Helpers.MockHttpContext();

            KissLogHttpModule module = new KissLogHttpModule();

            module.OnEndRequest(httpContext.Object);

            var dictionary = httpContext.Object.Items[LoggerFactory.DictionaryKey] as IDictionary <string, Logger>;

            Assert.IsNotNull(dictionary);
            Assert.AreEqual(1, dictionary.Count);
        }
コード例 #3
0
        public void GetsUpdatesTheLoggerHttpResponse()
        {
            var httpContext = Helpers.MockHttpContext();

            KissLogHttpModule module = new KissLogHttpModule();

            module.OnEndRequest(httpContext.Object);

            var dictionary = httpContext.Object.Items[LoggerFactory.DictionaryKey] as IDictionary <string, Logger>;

            Logger logger = dictionary[Constants.DefaultLoggerCategoryName];

            Assert.AreEqual(logger.DataContainer.HttpProperties.Response.StatusCode, 204);
        }
コード例 #4
0
        public void NotifiesListeners()
        {
            KissLog.Tests.Common.CommonTestHelpers.ResetContext();

            List <FlushLogArgs> flushArgs = new List <FlushLogArgs>();

            KissLogConfiguration.Listeners.Add(new KissLog.Tests.Common.CustomLogListener(onFlush: (FlushLogArgs arg) => { flushArgs.Add(arg); }));

            var httpContext = Helpers.MockHttpContext();

            KissLogHttpModule module = new KissLogHttpModule();

            module.OnEndRequest(httpContext.Object);

            Assert.AreEqual(1, flushArgs.Count);
        }
コード例 #5
0
        public void DisposesTheResponseMirrorStreamDecorator()
        {
            var ms = new MirrorStreamDecorator(new MemoryStream());

            var httpResponse = new Mock <HttpResponseBase>();

            httpResponse.SetupProperty(p => p.Filter, ms);

            var httpContext = Helpers.MockHttpContext();

            httpContext.Setup(p => p.Response).Returns(httpResponse.Object);

            KissLogHttpModule module = new KissLogHttpModule();

            module.OnEndRequest(httpContext.Object);

            Assert.IsTrue(ms.MirrorStream.CanRead == false);
        }
コード例 #6
0
        public void EvaluatesOptionsShouldLogResponseBody()
        {
            KissLog.Tests.Common.CommonTestHelpers.ResetContext();

            KissLogConfiguration.Options.ShouldLogResponseBody((HttpProperties args) => false);

            LoggedFile file = null;

            KissLogConfiguration.Listeners.Add(new KissLog.Tests.Common.CustomLogListener(onFlush: (FlushLogArgs arg) =>
            {
                file = arg.Files.FirstOrDefault();
            }));

            var httpContext = Helpers.MockHttpContext();

            KissLogHttpModule module = new KissLogHttpModule();

            module.OnEndRequest(httpContext.Object);

            Assert.IsNull(file);
        }
コード例 #7
0
        public void NotAllowedContentTypeDoesNotLogTheResponseBody(string contentType)
        {
            KissLog.Tests.Common.CommonTestHelpers.ResetContext();

            LoggedFile file = null;

            KissLogConfiguration.Listeners.Add(new KissLog.Tests.Common.CustomLogListener(onFlush: (FlushLogArgs arg) =>
            {
                file = arg.Files.FirstOrDefault();
            }));

            var httpContext = Helpers.MockHttpContext();

            httpContext.Setup(p => p.Response.Headers).Returns(Helpers.GenerateNameValueCollection(new List <KeyValuePair <string, string> >
            {
                new KeyValuePair <string, string>("Content-Type", contentType)
            }));

            KissLogHttpModule module = new KissLogHttpModule();

            module.OnEndRequest(httpContext.Object);

            Assert.IsNull(file);
        }
コード例 #8
0
        public void ThrowsExceptionForNullHttpContext()
        {
            KissLogHttpModule module = new KissLogHttpModule();

            module.OnEndRequest(null);
        }