public async Task Should_send_to_next_destination_if_no_error() { var routingSlip = new RoutingSlip(Guid.NewGuid(), null, "foo", "bar"); var router = new Router(); var context = new TestableInvokeHandlerContext { MessageHeaders = { [Router.RoutingSlipHeaderKey] = Newtonsoft.Json.JsonConvert.SerializeObject(routingSlip) } }; await router.Invoke(context, () => Task.FromResult(0)); context.Extensions.TryGet(out routingSlip).ShouldBeTrue(); context.Headers[Router.RoutingSlipHeaderKey].ShouldNotBeNull(); routingSlip.Itinerary.Count.ShouldBe(1); routingSlip.Log.Count.ShouldBe(1); routingSlip.Log[0].Address.ShouldBe("foo"); context.ForwardedMessages.Length.ShouldBe(1); context.ForwardedMessages[0].ShouldBe("bar"); }
public InvokeHandlerBehaviorTestsFixture() { Behavior = new UnitOfWorkContextBehavior(); Builder = new FakeBuilder(); UnitOfWorkContext = new Mock <IUnitOfWorkContext>(); SynchronizedStorageSession = new Mock <SynchronizedStorageSession>(); NextTask = new Mock <Func <Task> >(); Context = new TestableInvokeHandlerContext { Builder = Builder, SynchronizedStorageSession = SynchronizedStorageSession.Object }; UnitOfWorkContext.Setup(c => c.Set(It.IsAny <SynchronizedStorageSession>())).Callback <SynchronizedStorageSession>(s => { if (NextTaskInvoked) { throw new Exception("Set called too late"); } }); NextTask.Setup(n => n()).Returns(Task.CompletedTask).Callback(() => NextTaskInvoked = true); Builder.Register(UnitOfWorkContext.Object); }
public async Task CanBeUsed() { var dictionary = await stateManager.GetOrAddAsync <IReliableDictionary <string, string> >("test4", TimeSpan.FromSeconds(5)); using (var tx = stateManager.CreateTransaction()) { var testableSession = new TestableServiceFabricStorageSession(stateManager, tx); var handlerContext = new TestableInvokeHandlerContext { SynchronizedStorageSession = testableSession }; var handler = new HandlerUsingSynchronizedStorageSessionExtension(); await handler.Handle(new MyMessage(), handlerContext); await tx.CommitAsync(); } using (var tx = stateManager.CreateTransaction()) { var value = await dictionary.TryGetValueAsync(tx, "Key"); Assert.True(value.HasValue); Assert.AreEqual("Value", value.Value); } }
static IInvokeHandlerContext CreateBehaviorContext(MessageHandler messageHandler) { var behaviorContext = new TestableInvokeHandlerContext { MessageHandler = messageHandler }; return(behaviorContext); }
public async Task InvokeHandlerContext() { var context = new TestableInvokeHandlerContext { Headers = new Dictionary <string, string> { { "Key", "Value" } }, }; await context.Send(new MyMessage()); await Verify(context); }
public async Task CanBeUsed() { var transactionalBatch = new FakeTransactionalBatch(); var testableSession = new TestableCosmosSynchronizedStorageSession(new PartitionKey("mypartitionkey")) { TransactionalBatch = transactionalBatch }; var handlerContext = new TestableInvokeHandlerContext { SynchronizedStorageSession = testableSession }; var handler = new HandlerUsingSynchronizedStorageSessionExtension(); await handler.Handle(new MyMessage(), handlerContext); Assert.IsNotEmpty(transactionalBatch.CreatedItems.OfType <MyItem>()); }
public async Task Should_fire_activity_start_stop_when_listener_attached() { var diagnosticListener = new DiagnosticListener("DummySource"); var context = new TestableInvokeHandlerContext(); var processedFired = false; diagnosticListener.Subscribe(new CallbackDiagnosticListener(pair => { if (pair.Key == $"{ActivityNames.InvokedHandler}.Processed") { processedFired = true; } })); var behavior = new InvokedHandlerDiagnostics(diagnosticListener); await behavior.Invoke(context, () => Task.CompletedTask); processedFired.ShouldBeTrue(); }
public async Task Should_complete_route() { var routingSlip = new RoutingSlip(Guid.NewGuid(), null, "foo", "bar"); routingSlip.RecordStep(); var router = new Router(); var context = new TestableInvokeHandlerContext { MessageHeaders = { [Router.RoutingSlipHeaderKey] = Newtonsoft.Json.JsonConvert.SerializeObject(routingSlip) } }; await router.Invoke(context, () => Task.FromResult(0)); context.Extensions.TryGet(out routingSlip).ShouldBeTrue(); context.Headers.ContainsKey(Router.RoutingSlipHeaderKey).ShouldBeFalse(); context.ForwardedMessages.Length.ShouldBe(0); }
public InvokeHandlerBehaviorTestsFixture() { Behavior = new InvokeHandlerBehavior(); Builder = new FakeBuilder(); UnitOfWorkContext = new Mock <IUnitOfWorkContext>(); StorageSession = new Mock <SynchronizedStorageSession>(); SqlStorageSession = StorageSession.As <ISqlStorageSession>(); Connection = new Mock <DbConnection>(); Transaction = new Mock <DbTransaction>(); Context = new TestableInvokeHandlerContext { Builder = Builder, SynchronizedStorageSession = StorageSession.Object }; UnitOfWorkContext.Setup(c => c.Set <DbConnection>(null)).Callback <DbConnection>(t => { if (NextTaskInvoked) { throw new Exception("Set called too late"); } }); UnitOfWorkContext.Setup(c => c.Set <DbTransaction>(null)).Callback <DbTransaction>(t => { if (NextTaskInvoked) { throw new Exception("Set called too late"); } }); SqlStorageSession.Setup(s => s.Connection).Returns(Connection.Object); SqlStorageSession.Setup(s => s.Transaction).Returns(Transaction.Object); Builder.Register(UnitOfWorkContext.Object); }