public void Unsubscribe_with_same_type_should_clear_cache() { var matchingType = new MessageType("matchingType", new Version(0, 0, 0, 0)); persister.Subscribe(new Subscriber("e@machine1", "endpoint"), matchingType, null).Await(); persister.GetSubscribers(matchingType).Await(); persister.Unsubscribe(new Subscriber("e@machine1", "endpoint"), matchingType, null).Await(); VerifyCache(persister.Cache); }
public async Task At_unsubscribe_time_should_ignore_message_version() { var subscriberAddress = "subscriber@localhost"; var endpointName = "endpoint_name"; var messageType_v1 = new MessageType("SomeMessageType", "1.0.0.0"); var messageType_v2 = new MessageType("SomeMessageType", "2.0.0.0"); var subscriber_v1 = new Subscriber(subscriberAddress, endpointName); var subscriber_v2 = new Subscriber(subscriberAddress, endpointName); var storage = new SubscriptionPersister(store) { DisableAggressiveCaching = true }; await storage.Subscribe(subscriber_v1, messageType_v1, new ContextBag()); var subscribers = (await storage.GetSubscriberAddressesForMessage(new[] { messageType_v1 }, new ContextBag())).ToArray(); Assert.AreEqual(1, subscribers.Length); await storage.Unsubscribe(subscriber_v2, messageType_v2, new ContextBag()); var subscribers_looked_up_by_v1 = (await storage.GetSubscriberAddressesForMessage(new[] { messageType_v1 }, new ContextBag())).ToArray(); Assert.AreEqual(0, subscribers_looked_up_by_v1.Length); }
public async Task All_subscription_entries_for_specified_message_types_should_be_removed() { var storage = new SubscriptionPersister(store); var context = new ContextBag(); await storage.Subscribe(TestClients.ClientA, MessageTypes.MessageA, context); await storage.Subscribe(TestClients.ClientA, MessageTypes.MessageB, context); await storage.Unsubscribe(TestClients.ClientA, MessageTypes.MessageA, context); await storage.Unsubscribe(TestClients.ClientA, MessageTypes.MessageB, context); var clients = await storage.GetSubscriberAddressesForMessage(new [] { MessageTypes.MessageA, MessageTypes.MessageB }, context); Assert.IsEmpty(clients); }
public void All_subscription_entries_for_specified_message_types_should_be_removed() { var storage = new SubscriptionPersister { DocumentStore = store }; storage.Subscribe(TestClients.ClientA, MessageTypes.All); storage.Unsubscribe(TestClients.ClientA, MessageTypes.All); var clients = storage.GetSubscriberAddressesForMessage(MessageTypes.All); Assert.IsFalse(clients.Any(a => a == TestClients.ClientA)); }
public void All_subscription_entries_for_specified_message_types_should_be_removed() { using (var store = DocumentStoreBuilder.Build()) { var storage = new SubscriptionPersister { DocumentStore = store }; storage.Subscribe(TestClients.ClientA, MessageTypes.All); storage.Unsubscribe(TestClients.ClientA, MessageTypes.All); var clients = storage.GetSubscriberAddressesForMessage(MessageTypes.All); Assert.IsFalse(clients.Any(a => a == TestClients.ClientA)); } }
public void Unsubscribe_RemovesAllSubscriptions() { AddSubscriptions(); string messageType = new MessageType(typeof(TestMessage)).ToString(); _dbContext.Subscriptions.Count( s => s.SubscriberEndpoint == "queue@machine" && s.MessageType == messageType) .Should().BeGreaterThan(0); _persister.Unsubscribe( new Address("queue", "machine"), new List <MessageType> { new MessageType(typeof(TestMessage)) }); _dbContext.Subscriptions.Count( s => s.SubscriberEndpoint == "queue@machine" && s.MessageType == messageType) .Should().Be(0); }