コード例 #1
0
        public async Task SaveClientTenantOldPrefixAcceptsFalsePositives()
        {
#if NETCOREAPP
            var saveConfigHandler =
                new SaveClientTenant(async ctx =>
            {
                _foundClientTenant = FulcrumApplication.Context.ClientTenant;
                await Task.CompletedTask;
            }, SaveClientTenant.LegacyVersionPrefix);
#else
            var mockHandler       = new Mock <HttpMessageHandler>();
            var saveConfigHandler = new SaveClientTenant(SaveClientTenant.LegacyVersionPrefix)
            {
                InnerHandler = new GetContextTestHandler
                {
                    InnerHandler = mockHandler.Object
                }
            };
            var invoker = new HttpMessageInvoker(saveConfigHandler);
#endif


            _foundClientTenant = null;
            var url = "https://ver-fulcrum-fundamentals.azurewebsites.net/api/v1/false/positive/ServiceMetas/ServiceHealth";
#if NETCOREAPP
            var context = new DefaultHttpContext();
            SetRequest(context, url);
            await saveConfigHandler.InvokeAsync(context);
#else
            var request = new HttpRequestMessage(HttpMethod.Get, url);
            await invoker.SendAsync(request, CancellationToken.None);
#endif
            Assert.IsNotNull(_foundClientTenant);
        }
コード例 #2
0
        public async Task SaveConfigurationFail()
        {
#if NETCOREAPP
            var saveConfigHandler =
                new SaveClientTenant(async context => await Task.CompletedTask, SaveClientTenant.LegacyVersionPrefix);
#else
            var saveConfigHandler = new SaveClientTenant(SaveClientTenant.LegacyVersionPrefix)
            {
                InnerHandler = new Mock <HttpMessageHandler>().Object
            };
            var invoker = new HttpMessageInvoker(saveConfigHandler);
#endif
            FulcrumApplication.Context.ClientTenant = null;
            foreach (var url in new[]
            {
                "http://gooogle.com/",
                "https://anywhere.org/api/v1/eels/"
            })
            {
#if NETCOREAPP
                var context = new DefaultHttpContext();
                SetRequest(context, url);
                await saveConfigHandler.InvokeAsync(context);
#else
                var request = new HttpRequestMessage(HttpMethod.Get, url);
                await invoker.SendAsync(request, CancellationToken.None);
#endif
                Assert.IsNull(FulcrumApplication.Context.ClientTenant);
            }
        }
コード例 #3
0
        public async Task SavedConfigurationHandlesNoCorrelationId()
        {
            // Setup a mocked logger as the FullLogger so that we have full control
            var mockLogger = new Mock <ISyncLogger>();

            FulcrumApplication.Setup.SynchronousFastLogger = mockLogger.Object;
            mockLogger.Setup(x => x.LogSync(It.IsAny <LogRecord>())).Verifiable();

            // The expected correlation id propagated as a request header
            const string corrId = "Qorrr";

            var leverConfig = new Mock <ILeverServiceConfiguration>();

#if NETCOREAPP
            var innerHandler =
                new SaveClientTenantConfiguration(async c =>
            {
                _foundCorrelationId = FulcrumApplication.Context.CorrelationId;
                await Task.CompletedTask;
            }, leverConfig.Object);
            var outerHandler = new SaveClientTenant(innerHandler.InvokeAsync, SaveClientTenant.LegacyVersionPrefix);
#else
            // Simulate a pipe of DelegatingHandlers
            var outerHandler = new SaveClientTenant(SaveClientTenant.LegacyVersionPrefix)
            {
                InnerHandler = new SaveClientTenantConfiguration(new Mock <ILeverServiceConfiguration>().Object)
                {
                    InnerHandler = new GetContextTestHandler
                    {
                        InnerHandler = new Mock <HttpMessageHandler>().Object
                    }
                }
            };
#endif
            var url = "https://v-mock.org/v2/smoke-testing-company/ver/";

            // Simulate an incoming request
#if NETCOREAPP
            var context = new DefaultHttpContext();
            SetRequest(context, url);
            context.Request.Headers.Add("X-Correlation-ID", corrId);
            await outerHandler.InvokeAsync(context);
#else
            var invoker = new HttpMessageInvoker(outerHandler);
            var request = new HttpRequestMessage(HttpMethod.Get, url);
            request.Headers.Add("X-Correlation-ID", corrId);
            await invoker.SendAsync(request, CancellationToken.None);
#endif

            // Check that LogAsync has NOT been invoked
            mockLogger.VerifyNoOtherCalls();

            Assert.AreEqual(corrId, _foundCorrelationId,
                            "When SaveConfiguration is run before SaveCorrelationId, we still expect X-Correlation-ID header to be handled");
        }
コード例 #4
0
        public async Task SaveClientTenantOldPrefixSuccess()
        {
#if NETCOREAPP
            var saveConfigHandler =
                new SaveClientTenant(async context =>
            {
                _foundClientTenant = FulcrumApplication.Context.ClientTenant;
                await Task.CompletedTask;
            }, SaveClientTenant.LegacyVersionPrefix);
#else
            var mockHandler       = new Mock <HttpMessageHandler>();
            var saveConfigHandler = new SaveClientTenant(SaveClientTenant.LegacyVersionPrefix)
            {
                InnerHandler = new GetContextTestHandler
                {
                    InnerHandler = mockHandler.Object
                }
            };
            var invoker = new HttpMessageInvoker(saveConfigHandler);
#endif

            foreach (var entry in new Dictionary <Tenant, string>
            {
                { new Tenant("smoke-testing-company", "ver"), "https://v-mock.org/v2/smoke-testing-company/ver/" },
                {
                    new Tenant("smoke-testing-company", "local"),
                    "https://v-mock.org/api/v-pa1/smoke-testing-company/local/"
                },
                {
                    new Tenant("fulcrum", "prd"),
                    "https://prd-fulcrum-fundamentals.azurewebsites.net/api/v1/fulcrum/prd/ServiceMetas/ServiceHealth"
                },
                {
                    new Tenant("fulcrum", "ver"),
                    "https://ver-fulcrum-fundamentals.azurewebsites.net/api/v1/fulcrum/ver/ServiceMetas/ServiceHealth"
                }
            })
            {
                _foundClientTenant = null;
                var expectedTenant = entry.Key;
#if NETCOREAPP
                var context = new DefaultHttpContext();
                SetRequest(context, entry.Value);
                await saveConfigHandler.InvokeAsync(context);
#else
                var request = new HttpRequestMessage(HttpMethod.Get, entry.Value);
                await invoker.SendAsync(request, CancellationToken.None);
#endif
                Assert.AreEqual(expectedTenant, _foundClientTenant,
                                $"Could not find tenant '{expectedTenant}' from url '{entry.Value}'. Found {_foundClientTenant}");
            }
        }