public static void Register(HttpConfiguration config) { // Web API configuration and services // Web API routes config.MapHttpAttributeRoutes(); var cacheService = new MemoryCacheService(int.Parse(ConfigurationManager.AppSettings["CacheDurationInSeconds"])); var configuration = new CachedConfiguration(new ConfigurationManagerConfiguration(), cacheService); var webProxyUserRepository = new CachedWebProxyUserRepository(new SqlServerWebProxyUserRepository(configuration), cacheService); //var proxyLogging = new FileProxyLogging(configuration); var proxyLogging = new AzureBlobStorageLogging(configuration); //var proxyLogging = new NullProxyLogging(); //var proxyRouting = new LogicRouting(); var proxyRouting = new NasAvWebServicesRouting(configuration, webProxyUserRepository); config.Routes.MapHttpRoute(name: "Proxy", routeTemplate: "{*path}", handler: HttpClientFactory.CreatePipeline( innerHandler: new HttpClientHandler(), // will never get here if proxy is doing its job handlers: new DelegatingHandler[] { new ProxyHandler(proxyRouting, proxyLogging, configuration) }), defaults: new { path = RouteParameter.Optional }, constraints: null ); }
public void RouteToCompatabilityWebServiceUri_WebProxyUser(string uriString, bool compatabilityWebServiceShouldBePrimary) { //Arrange _configuration.Setup(c => c.AutomaticRouteToCompatabilityWebServiceRegex).Returns(new Regex("")); _proxyRouting = new NasAvWebServicesRouting(_configuration.Object, _webProxyUserRepository.Object); var uri = new Uri(uriString); //Act var routing = _proxyRouting.GetRouting(uri, HttpMethod.Get, null, GetRequestContent(RoutedExternalSystemId), new RouteIdentifier()); //Assert routing.Routes.Count.Should().Be(2); routing.Routes[0].Uri.AbsoluteUri.Should().StartWith(NasAvWebServiceRootUriString); routing.Routes[0].IsPrimary.Should().Be(!compatabilityWebServiceShouldBePrimary); routing.Routes[1].Uri.AbsoluteUri.Should().StartWith(CompatabilityWebServiceRootUriString); routing.Routes[1].IsPrimary.Should().Be(compatabilityWebServiceShouldBePrimary); }
public void SetUp() { _configuration = new Mock <IConfiguration>(); _configuration.Setup(c => c.NasAvWebServiceRootUri).Returns(new Uri(NasAvWebServiceRootUriString)); _configuration.Setup(c => c.CompatabilityWebServiceRootUri).Returns(new Uri(CompatabilityWebServiceRootUriString)); _configuration.Setup(c => c.AutomaticRouteToCompatabilityWebServiceRegex).Returns(new Regex(@"^.+?\/(ReferenceData51\.svc|VacancyDetails51\.svc|VacancySummary51\.svc)$", RegexOptions.IgnoreCase)); _webProxyUserRepository = new Mock <IWebProxyUserRepository>(); _webProxyUserRepository.Setup(r => r.Get(RoutedExternalSystemId)) .Returns(new WebProxyConsumer { WebProxyConsumerId = 1, ExternalSystemId = RoutedExternalSystemId, RouteToCompatabilityWebServiceRegex = @"^.+?\/(ApplicationTracking51\.svc|VacancyManagement51\.svc)$" }); _proxyRouting = new NasAvWebServicesRouting(_configuration.Object, _webProxyUserRepository.Object); }