/// <summary> /// Registers the given cache client as being used for ServiceStack sessions /// with the given target routed cache client. /// Essentially, what this does is register a ServiceStackSessionKeyCacheClientRule /// with the given routed cache client, backed by the given cache client. /// </summary> /// <param name="routedClient">The target routed cache client</param> /// <param name="cacheClient">The cache client that will be used for session storage.</param> /// <returns></returns> public static IRoutedCacheClient PushServiceStackSessionCacheClient(this IRoutedCacheClient routedClient, ICacheClient cacheClient, bool autoDispose = true) { if (routedClient == null) { throw new ArgumentNullException(nameof(routedClient)); } IRoutedCacheClientRule serviceStackSessionRule = new ServiceStackSessionKeyCacheClientRule(cacheClient); serviceStackSessionRule.AutoDispose = autoDispose; routedClient.PushClientWithRule(serviceStackSessionRule); return(routedClient); }
private void Assert_AllMethodsThrowObjectDisposedException(IRoutedCacheClient routedCacheClient) { Faker faker = new Faker(); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .Add(RandomKey, faker.Random.Int())); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .Add(SessionKey, faker.Random.Int())); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .Add(RandomKey, faker.Random.Decimal(), faker.Date.Timespan())); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .Add(SessionKey, faker.Random.Decimal(), faker.Date.Timespan())); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .Add(RandomKey, faker.Random.String(), faker.Date.Future())); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .Add(SessionKey, faker.Random.String(), faker.Date.Future())); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .Decrement(RandomKey, faker.Random.UInt())); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .Decrement(SessionKey, faker.Random.UInt())); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .FlushAll()); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .FlushAll()); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .Get <string>(RandomKey)); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .Get <string>(SessionKey)); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .GetAll <string>(faker.Make(faker.Random.Int(0, 100), () => RandomKey))); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .GetAll <string>(faker.Make(faker.Random.Int(0, 100), () => SessionKeyPrefix))); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .GetKeysByPattern(SessionKeyPrefix)); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .GetKeysByPattern(RandomKeyPrefix)); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .GetTimeToLive(SessionKey)); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .GetTimeToLive(RandomKey)); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .Increment(RandomKey, faker.Random.UInt())); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .Increment(SessionKey, faker.Random.UInt())); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .Remove(SessionKey)); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .Remove(RandomKey)); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .RemoveAll(faker.Make(faker.Random.Int(0, 100), () => RandomKey))); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .RemoveAll(faker.Make(faker.Random.Int(0, 100), () => SessionKeyPrefix))); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .Replace(RandomKey, faker.Random.Int())); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .Replace(SessionKey, faker.Random.Int())); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .Replace(RandomKey, faker.Random.Decimal(), faker.Date.Timespan())); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .Replace(SessionKey, faker.Random.Decimal(), faker.Date.Timespan())); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .Replace(RandomKey, faker.Random.String(), faker.Date.Future())); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .Replace(SessionKey, faker.Random.String(), faker.Date.Future())); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .Set(RandomKey, faker.Random.Int())); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .Set(SessionKey, faker.Random.Int())); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .Set(RandomKey, faker.Random.Decimal(), faker.Date.Timespan())); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .Set(SessionKey, faker.Random.Decimal(), faker.Date.Timespan())); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .Set(RandomKey, faker.Random.String(), faker.Date.Future())); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .Set(SessionKey, faker.Random.String(), faker.Date.Future())); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .SetAll(new Dictionary <string, string>(faker.Make( faker.Random.Int(0, 100), () => new KeyValuePair <string, string>(RandomKey, faker.Random.String()) )))); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .SetAll(new Dictionary <string, int>(faker.Make( faker.Random.Int(0, 100), () => new KeyValuePair <string, int>(SessionKey, faker.Random.Int()) )))); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .PushClientWithRule(new Mock <IRoutedCacheClientRule>(MockBehavior.Loose).Object)); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .ClearRules()); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .GetRegisteredClients()); Assert.Throws <ObjectDisposedException>(() => routedCacheClient .GetRegisteredClientRules()); }