Example #1
0
        public void SplunkLoggerOptions_Always_HasCollectorEndpointSet()
        {
            // arrange
            var mockedHttpHandler = new MockHttpMessageHandler();
            var httpClientFactory = Mock.Of <IHttpClientProvider>();

            Mock.Get(httpClientFactory).Setup(s => s.CreateClient())
            .Returns(new HttpClient(mockedHttpHandler));
            var optionsMonitor = Mock.Of <IOptionsMonitor <SplunkLoggerOptions> >();

            Mock.Get(optionsMonitor).Setup(s => s.OnChange(It.IsAny <Action <SplunkLoggerOptions, string> >()))
            .Returns(Mock.Of <IDisposable>());
            var splunkLoggerProcessor = Mock.Of <ISplunkLoggerProcessor>();

            Mock.Get(splunkLoggerProcessor).Setup(s => s.EnqueueMessage(It.IsAny <string>()));
            Mock.Get(optionsMonitor).SetupGet(s => s.CurrentValue)
            .Returns(new SplunkLoggerOptions
            {
                SplunkCollectorUrl = "https://server/collector/events", AuthenticationToken = "AuthToken"
            });
            var rawPayloadTransformer = Mock.Of <ISplunkRawPayloadTransformer>();

            Mock.Get(rawPayloadTransformer).Setup(s => s.Transform(It.IsAny <LogData>())).Returns("Message");
            var externalScopeProvider = Mock.Of <IExternalScopeProvider>();

            Mock.Get(externalScopeProvider).Setup(s => s.Push("state1")).Verifiable();

            using (var actor = new TestLoggerProvider(httpClientFactory, optionsMonitor, splunkLoggerProcessor, "test"))
            {
                // act
                // assert
                Assert.StartsWith("https://server/collector/events/test", actor.GetHttpClientForTestInspection().BaseAddress.ToString());
            }
        }
Example #2
0
        public void SplunkLoggerOptions_WhenChannelIdOptionRequestHeader_AddsSplunkHeaders()
        {
            // arrange
            var mockedHttpHandler = new MockHttpMessageHandler();
            var httpClientFactory = Mock.Of <IHttpClientProvider>();

            Mock.Get(httpClientFactory).Setup(s => s.CreateClient())
            .Returns(new HttpClient(mockedHttpHandler));
            var optionsMonitor = Mock.Of <IOptionsMonitor <SplunkLoggerOptions> >();

            Mock.Get(optionsMonitor).Setup(s => s.OnChange(It.IsAny <Action <SplunkLoggerOptions, string> >()))
            .Returns(Mock.Of <IDisposable>());
            var splunkLoggerProcessor = Mock.Of <ISplunkLoggerProcessor>();

            Mock.Get(optionsMonitor).SetupGet(s => s.CurrentValue)
            .Returns(
                new SplunkLoggerOptions
            {
                SplunkCollectorUrl  = "https://server/collector/events",
                AuthenticationToken = "AuthToken",
                ChannelIdType       = SplunkLoggerOptions.ChannelIdOption.RequestHeader
            });
            var rawPayloadTransformer = Mock.Of <ISplunkRawPayloadTransformer>();

            Mock.Get(rawPayloadTransformer).Setup(s => s.Transform(It.IsAny <LogData>())).Returns("Message");
            var externalScopeProvider = Mock.Of <IExternalScopeProvider>();

            Mock.Get(externalScopeProvider).Setup(s => s.Push("state1")).Verifiable();

            using (var actor = new TestLoggerProvider(httpClientFactory, optionsMonitor, splunkLoggerProcessor, "test"))
            {
                // act
                var headers = actor.GetHttpClientForTestInspection()
                              .DefaultRequestHeaders
                              .Where(h => h.Key == "x-splunk-request-channel" && Guid.TryParse(h.Value.Single(), out _));

                // assert
                Assert.Single(headers);
            }
        }
Example #3
0
        public void SplunkLoggerOptions_WhenCustomHeadersAreSet_AddsHeaders()
        {
            // arrange
            var mockedHttpHandler = new MockHttpMessageHandler();
            var httpClientFactory = Mock.Of <IHttpClientProvider>();

            Mock.Get(httpClientFactory).Setup(s => s.CreateClient())
            .Returns(new HttpClient(mockedHttpHandler));
            var optionsMonitor = Mock.Of <IOptionsMonitor <SplunkLoggerOptions> >();

            Mock.Get(optionsMonitor).Setup(s => s.OnChange(It.IsAny <Action <SplunkLoggerOptions, string> >()))
            .Returns(Mock.Of <IDisposable>());
            var splunkLoggerProcessor = Mock.Of <ISplunkLoggerProcessor>();

            Mock.Get(optionsMonitor).SetupGet(s => s.CurrentValue)
            .Returns(
                new SplunkLoggerOptions
            {
                SplunkCollectorUrl  = "https://server/collector/events",
                AuthenticationToken = "AuthToken",
                CustomHeaders       = new Dictionary <string, string> {
                    { "custom1", "value1" }
                }
            });
            var rawPayloadTransformer = Mock.Of <ISplunkRawPayloadTransformer>();

            Mock.Get(rawPayloadTransformer).Setup(s => s.Transform(It.IsAny <LogData>())).Returns("Message");
            var externalScopeProvider = Mock.Of <IExternalScopeProvider>();

            Mock.Get(externalScopeProvider).Setup(s => s.Push("state1")).Verifiable();

            using (var actor = new TestLoggerProvider(httpClientFactory, optionsMonitor, splunkLoggerProcessor, "test"))
            {
                // act
                // assert
                Assert.Single(actor.GetHttpClientForTestInspection()
                              .DefaultRequestHeaders
                              .Where(h => h.Key == "custom1" && h.Value.Single() == "value1"));
            }
        }
Example #4
0
        public void SplunkLoggerOptions_WhenTimeoutGreaterThanZero_SetsTimeout()
        {
            // arrange
            var mockedHttpHandler = new MockHttpMessageHandler();
            var httpClientFactory = Mock.Of <IHttpClientProvider>();

            Mock.Get(httpClientFactory).Setup(s => s.CreateClient())
            .Returns(new HttpClient(mockedHttpHandler));
            var optionsMonitor = Mock.Of <IOptionsMonitor <SplunkLoggerOptions> >();

            Mock.Get(optionsMonitor).Setup(s => s.OnChange(It.IsAny <Action <SplunkLoggerOptions, string> >()))
            .Returns(Mock.Of <IDisposable>());
            var splunkLoggerProcessor = Mock.Of <ISplunkLoggerProcessor>();

            Mock.Get(optionsMonitor).SetupGet(s => s.CurrentValue)
            .Returns(
                new SplunkLoggerOptions
            {
                SplunkCollectorUrl  = "https://server/collector/events",
                AuthenticationToken = "AuthToken",
                Timeout             = 1000
            });
            var rawPayloadTransformer = Mock.Of <ISplunkRawPayloadTransformer>();

            Mock.Get(rawPayloadTransformer).Setup(s => s.Transform(It.IsAny <LogData>())).Returns("Message");
            var externalScopeProvider = Mock.Of <IExternalScopeProvider>();

            Mock.Get(externalScopeProvider).Setup(s => s.Push("state1")).Verifiable();

            using (var actor = new TestLoggerProvider(httpClientFactory, optionsMonitor, splunkLoggerProcessor, "test"))
            {
                // act

                // assert
                Assert.Equal(TimeSpan.FromMilliseconds(1000), actor.GetHttpClientForTestInspection().Timeout);
            }
        }
Example #5
0
        public void SplunkLoggerOptions_WhenUseAuthTokenAsQueryStringIsTrue_SetsTokenInQueryParameterAtStart()
        {
            // arrange
            var mockedHttpHandler = new MockHttpMessageHandler();
            var httpClientFactory = Mock.Of <IHttpClientProvider>();

            Mock.Get(httpClientFactory).Setup(s => s.CreateClient())
            .Returns(new HttpClient(mockedHttpHandler));
            var optionsMonitor = Mock.Of <IOptionsMonitor <SplunkLoggerOptions> >();

            Mock.Get(optionsMonitor).Setup(s => s.OnChange(It.IsAny <Action <SplunkLoggerOptions, string> >()))
            .Returns(Mock.Of <IDisposable>());
            var splunkLoggerProcessor = Mock.Of <ISplunkLoggerProcessor>();

            Mock.Get(optionsMonitor).SetupGet(s => s.CurrentValue)
            .Returns(
                new SplunkLoggerOptions
            {
                SplunkCollectorUrl        = "https://server/collector/events",
                AuthenticationToken       = "AuthToken",
                ChannelIdType             = SplunkLoggerOptions.ChannelIdOption.QueryString,
                UseAuthTokenAsQueryString = true
            });
            var rawPayloadTransformer = Mock.Of <ISplunkRawPayloadTransformer>();

            Mock.Get(rawPayloadTransformer).Setup(s => s.Transform(It.IsAny <LogData>())).Returns("Message");
            var externalScopeProvider = Mock.Of <IExternalScopeProvider>();

            Mock.Get(externalScopeProvider).Setup(s => s.Push("state1")).Verifiable();

            using (var actor = new TestLoggerProvider(httpClientFactory, optionsMonitor, splunkLoggerProcessor, "test"))
            {
                // act
                // assert
                Assert.Contains("&token=AuthToken", actor.GetHttpClientForTestInspection().BaseAddress.ToString());
            }
        }