public void Test_PubSubMessenger_InvalidOperation() { // Arrange var messenger = new PubSubMessenger(new PubSubJsonAuthConfig() { JsonAuthFile = new ConfigurationBuilder().AddJsonFile("appSettings.json").Build()["CredentialPath"], ProjectId = "12345" }); // Act/Assert Assert.Throws <InvalidOperationException>(() => messenger.Receive <object>(null, null)); Assert.Throws <ArgumentException>(() => messenger.ReceiveOne <object>("").GetAwaiter().GetResult()); Assert.Throws <InvalidOperationException>(() => messenger.StartReceive <object>()); Assert.Throws <InvalidOperationException>(() => messenger.ReceiveOne <object>()); Assert.Throws <InvalidOperationException>(() => messenger.ReceiveBatchEntity <object>().GetAwaiter().GetResult()); // Additional runs here purely to increase code coverage. Not particularly useful tests but it does confirm functionality. messenger.Complete <object>(null).GetAwaiter().GetResult(); messenger.CompleteAll(new object[] { null }).GetAwaiter().GetResult(); messenger.Abandon(new object()); messenger.Error <object>(null).GetAwaiter().GetResult(); messenger.Error(new object()).GetAwaiter().GetResult(); var props = messenger.ReadProperties <object>(null); props.Should().BeNull(); }
public void Test_PubSubMessenger_MessageFiltering() { // Arrange var messenger = new PubSubMessenger(new PubSubJsonAuthConfig() { JsonAuthFile = _fixture.CredentialPath, ProjectId = _fixture.ProjectId }); var manager = messenger.EntityManager as PubSubManager; // Act // Create the filter topic for testing. manager.CreateTopicDefaults(_fixture.MessageFilterTopic, null, "defaultsub").GetAwaiter().GetResult(); manager.CreateSubscription(_fixture.MessageFilterTopic, "filteredsub", "attributes:pickme").GetAwaiter().GetResult(); // Send two messages, one that wont be picked up by the filter subscription and the other that // will. The result is two messages to the defaultsub, one to filteredsub messenger.Send(_fixture.MessageFilterTopic, "test").GetAwaiter().GetResult(); messenger.Send(_fixture.MessageFilterTopic, "testfilter", new KeyValuePair <string, object>[] { new KeyValuePair <string, object>("pickme", "please") }).GetAwaiter().GetResult(); // Receive from both subscriptions. var nonFilteredMessages = messenger.ReceiveBatch <string>("defaultsub", 100).GetAwaiter().GetResult(); var filteredMessages = messenger.ReceiveBatch <string>("filteredsub", 100).GetAwaiter().GetResult(); var filteredMessage = messenger.ReceiveOne <string>("filteredsub").GetAwaiter().GetResult(); // Assert nonFilteredMessages.Count().Should().Be(2); filteredMessages.Count().Should().Be(1); filteredMessage.Should().NotBe(null); filteredMessage.Should().Be("testfilter"); }