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); }
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); } }
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"); }
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}"); } }