public void GivenIHaveAnAPIRunningCacheCowServerAndUsingStorage(string storage) { IEntityTagStore store; var configuration = new HttpConfiguration(); switch (storage) { case "InMemory": store = new InMemoryEntityTagStore(); break; default: throw new ArgumentException("Store unknown: " + storage); } configuration.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); var inMemoryServer = new InMemoryServer(configuration); var cachingHandler = new CachingHandler(configuration, store, "Accept") { InnerHandler = inMemoryServer }; var client = new HttpClient(cachingHandler); ScenarioContext.Current[Keys.Client] = client; ScenarioContext.Current[Keys.CacheHandler] = cachingHandler; }
public void AddGetTest() { using (var store = new InMemoryEntityTagStore()) { var cacheKey = new CacheKey(Url, new[] { "Accept" }); var headerValue = new TimedEntityTagHeaderValue("\"abcdefghijkl\""); store.AddOrUpdate(cacheKey, headerValue); TimedEntityTagHeaderValue storedHeader; Assert.True(store.TryGetValue(cacheKey, out storedHeader)); Assert.AreEqual(headerValue.ToString(), storedHeader.ToString()); } }
public void AddRemoveTest() { using (var store = new InMemoryEntityTagStore()) { var cacheKey = new CacheKey(Url, new[] { "Accept" }); var headerValue = new TimedEntityTagHeaderValue("\"abcdefghijkl\""); store.AddOrUpdate(cacheKey, headerValue); store.TryRemove(cacheKey); TimedEntityTagHeaderValue storedHeader; Assert.False(store.TryGetValue(cacheKey, out storedHeader)); Assert.IsNull(storedHeader); } }
public void AddRemoveByPatternTest() { const string RoutePattern = "stuff"; using (var store = new InMemoryEntityTagStore()) { var cacheKey = new CacheKey(Url, new[] { "Accept" }, RoutePattern); var cacheKey2 = new CacheKey(Url + "/chaja", new[] { "Accept" }, RoutePattern); var headerValue = new TimedEntityTagHeaderValue("\"abcdefghijkl\""); store.AddOrUpdate(cacheKey, headerValue); store.AddOrUpdate(cacheKey2, headerValue); store.RemoveAllByRoutePattern(RoutePattern); store.TryRemove(cacheKey); TimedEntityTagHeaderValue storedHeader; Assert.False(store.TryGetValue(cacheKey, out storedHeader)); Assert.False(store.TryGetValue(cacheKey2, out storedHeader)); Assert.IsNull(storedHeader); } }
public static void Register(HttpConfiguration config) { // Web API configuration and services // Configure Web API to use only bearer token authentication. var cors = new EnableCorsAttribute("*", "*", "*"); config.EnableCors(cors); config.SuppressDefaultHostAuthentication(); config.Filters.Add(new ValidateModelAttribute()); config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType)); //Added to return JSON as default config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html")); var formatters = GlobalConfiguration.Configuration.Formatters; var jsonFormatter = formatters.JsonFormatter; var settings = jsonFormatter.SerializerSettings; settings.Formatting = Formatting.Indented; settings.ContractResolver = new CamelCasePropertyNamesContractResolver(); // Web API routes config.MapHttpAttributeRoutes(); //Caching and Etags var connString = ConfigurationManager.ConnectionStrings["AutoResolveContext"].ConnectionString; var sqlServerEtagStore = new InMemoryEntityTagStore(); var cacheHandler = new CachingHandler(config, sqlServerEtagStore); config.MessageHandlers.Add(cacheHandler); /*DEFAULT*/ config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); /*CUSTOMERS*/ config.Routes.MapHttpRoute( name: "Customers", routeTemplate: "api/customers/{id}", defaults: new { id = RouteParameter.Optional } ); config.Routes.MapHttpRoute( name: "CustomersAccidents", routeTemplate: "api/customers/{id}/accidents", defaults: new { controller = "CustomersAccidents" } ); /*ACCIDENTS*/ config.Routes.MapHttpRoute( name: "Accidents", routeTemplate: "api/accidents/{id}", defaults: new { id = RouteParameter.Optional } ); /*DEFENDANTS*/ config.Routes.MapHttpRoute( name: "OtherDrivers", routeTemplate: "api/otherdrivers/{id}", defaults: new { id = RouteParameter.Optional } ); /*WITNESSES*/ config.Routes.MapHttpRoute( name: "Witnesses", routeTemplate: "api/witnesses/{id}", defaults: new { id = RouteParameter.Optional } ); /*MEDIA*/ config.Routes.MapHttpRoute( name: "AccidentMedia", routeTemplate: "api/accidentmedia/{id}", defaults: new { id = RouteParameter.Optional } ); /*NOTIFICATIONS*/ config.Routes.MapHttpRoute( name: "Notifications", routeTemplate: "api/notifications/{id}", defaults: new { id = RouteParameter.Optional } ); /*Account*/ config.Routes.MapHttpRoute( name: "Account", routeTemplate: "api/account/{id}", defaults: new { id = RouteParameter.Optional } ); /*Account*/ config.Routes.MapHttpRoute( name: "CustomerSettings", routeTemplate: "api/customersettings/{id}", defaults: new { id = RouteParameter.Optional } ); /* /*ENTRY#1# config.Routes.MapHttpRoute( name: "Entry", routeTemplate: "api/entry/" );*/ }