public async void DefaultBatchInvokerTest_invokeAsync() { //Arrange var propertyInvoker = new Mock <IPropertyInvoker>(MockBehavior.Strict); //var methodActivator = new Mock<MethodActivator>(MockBehavior.Strict); //methodActivator.Setup((s) => s.CreateInstance<object>(It.IsAny<IServiceProvider>(), It.IsAny<Type>())) var methodActivator = new MethodActivator(); var isharpBatchTrackingActivator = new Mock <ISharpBatchTrackingFactory>(MockBehavior.Strict); isharpBatchTrackingActivator.Setup((s) => s.getTrakingProvider()).Returns(new TrackingMemory()).Verifiable(); var modelSerializer = new Mock <IModelSerializer>(MockBehavior.Strict); modelSerializer.Setup((s) => s.Serialize((object)"method1")).Returns("\"method1\""); DefaultBatchInvoker defaultBatchInvoker = new DefaultBatchInvoker( propertyInvoker.Object, methodActivator, isharpBatchTrackingActivator.Object, modelSerializer.Object); var requestService = new Mock <IServiceProvider>(MockBehavior.Strict); requestService.Setup((s) => s.GetService(It.IsAny <Type>())).Returns((object)"Any").Verifiable(); var httpRequest = new Mock <HttpRequest>(MockBehavior.Strict); httpRequest.Setup((s) => s.Path).Returns(new PathString("/batch/exec/batch/action")); httpRequest.Setup((s) => s.QueryString).Returns(new QueryString()).Verifiable(); Stream bodyStream = new MemoryStream(); var httpResponse = new Mock <HttpResponse>(MockBehavior.Strict); httpResponse.Setup((s) => s.Body).Returns(bodyStream).Verifiable(); var context = new Mock <HttpContext>(MockBehavior.Strict); context.Setup((s) => s.Request).Returns(httpRequest.Object).Verifiable(); context.Setup((s) => s.Response).Returns(httpResponse.Object).Verifiable(); context.Setup((s) => s.RequestServices).Returns(requestService.Object).Verifiable(); ContextInvoker contextInvoker = ContextInvoker.Create(context.Object); List <TypeInfo> types = new List <TypeInfo>(); types.Add(typeof(SimplePOCOBatch).GetTypeInfo()); var descriptions = AssemblyDiscoveryActionDescription.actionDescription(types); contextInvoker.ActionDescriptor = descriptions.First(); //Act var response = await defaultBatchInvoker.InvokeAsync(contextInvoker); //Assert Assert.NotNull(response); Assert.Equal("\"method1\"", response); }
public async Task InvokeAsync(HttpContext context, BatchUrlManager urlManager, Guid?parentSessionId) { var contextInvoker = ContextInvoker.Create(context); contextInvoker.BatchName = urlManager.RequestBatchName; contextInvoker.ActionName = urlManager.RequestBatchAction; contextInvoker.ActionDescriptor = null; contextInvoker.ParentSessionId = parentSessionId; await InvokeAsync(contextInvoker, urlManager, parentSessionId); }
public async void DefaultBatchInvokerProviderTest_InvokeAsync() { //Arrange var batchInvoker = new Mock <IBatchInvoker>(MockBehavior.Strict); var tracking = new Mock <ISharpBatchTracking>(MockBehavior.Strict); tracking.Setup(s => s.StartAsync(It.IsAny <string>(), It.IsAny <Guid>())).Returns(Task.CompletedTask); tracking.Setup(s => s.PingAsync(It.IsAny <Guid>())).Returns(Task.CompletedTask); tracking.Setup(s => s.StopAsync(It.IsAny <Guid>())).Returns(Task.CompletedTask); var sharpBatchTrakingFactory = new Mock <ISharpBatchTrackingFactory>(MockBehavior.Strict); sharpBatchTrakingFactory.Setup((s) => s.getTrakingProvider()) .Returns(tracking.Object) .Verifiable(); var defaultBatchInvokerProvider = new DefaultBatchInvokerProvider(batchInvoker.Object, sharpBatchTrakingFactory.Object); batchInvoker.Setup((s) => s.InvokeAsync(It.IsAny <ContextInvoker>())) .Returns(Task.FromResult <object>("executed")) .Verifiable(); var requestService = new Mock <IServiceProvider>(MockBehavior.Strict); requestService.Setup((s) => s.GetService(It.IsAny <Type>())) .Returns((object)"Any") .Verifiable(); var httpRequest = new Mock <HttpRequest>(MockBehavior.Strict); httpRequest.Setup((s) => s.Path) .Returns(new PathString("/batch/exec/batch/action")); httpRequest.Setup((s) => s.QueryString) .Returns(new QueryString()) .Verifiable(); Stream bodyStream = new MemoryStream(); var httpResponse = new Mock <HttpResponse>(MockBehavior.Strict); httpResponse.Setup((s) => s.Body).Returns(bodyStream).Verifiable(); var context = new Mock <HttpContext>(MockBehavior.Strict); context.Setup((s) => s.Request).Returns(httpRequest.Object).Verifiable(); context.Setup((s) => s.Response).Returns(httpResponse.Object).Verifiable(); context.Setup((s) => s.RequestServices).Returns(requestService.Object).Verifiable(); //var contextInvoker = ContextInvoker.Create(context.Object); var contextInvoker = ContextInvoker.Create(context.Object); contextInvoker.SessionId = Guid.NewGuid(); contextInvoker.ActionDescriptor = new BatchActionDescriptor() { BatchName = "Name" }; //Act var response = await defaultBatchInvokerProvider.InvokeAsync(contextInvoker); //Assert Assert.NotNull(response); Assert.Equal("executed", response); }
public void BaseBatch_ToTrackingStringContent() { //Arrange var serializedContent = ""; var modelSerializer = new Mock <IModelSerializer>(MockBehavior.Strict); modelSerializer.Setup((s) => s.Serialize(It.IsAny <object>())).Returns(serializedContent); var trackingProvider = new Mock <ISharpBatchTracking>(MockBehavior.Strict); trackingProvider.Setup((s) => s.AddMessageAsync(It.IsAny <Guid>(), It.IsAny <string>())).Returns(Task.CompletedTask).Verifiable(); var trackingFactory = new Mock <ISharpBatchTrackingFactory>(MockBehavior.Strict); trackingFactory.Setup((s) => s.getTrakingProvider()).Returns(trackingProvider.Object).Verifiable(); var requestService = new Mock <IServiceProvider>(MockBehavior.Strict); requestService.Setup((s) => s.GetService(It.Is <Type>(t => t.Name.Equals(nameof(ISharpBatchTrackingFactory))))) .Returns(trackingFactory.Object) .Verifiable(); requestService.Setup((s) => s.GetService(It.Is <Type>(t => t.Name.Equals(nameof(IModelSerializer))))) .Returns(modelSerializer.Object) .Verifiable(); Stream bodyStream = new MemoryStream(); var httpResponse = new Mock <HttpResponse>(MockBehavior.Strict); httpResponse.Setup((s) => s.Body).Returns(bodyStream).Verifiable(); var httpRequest = new Mock <HttpRequest>(MockBehavior.Strict); httpRequest.Setup((s) => s.QueryString) .Returns(new QueryString("?param=123")); var localBatch = new BaseBatch(); var context = new Mock <HttpContext>(MockBehavior.Strict); context.Setup((s) => s.RequestServices).Returns(requestService.Object).Verifiable(); context.Setup((s) => s.Request).Returns(httpRequest.Object).Verifiable(); context.Setup((s) => s.Response).Returns(httpResponse.Object).Verifiable(); localBatch.BatchContext = ContextInvoker.Create(context.Object); localBatch.BatchContext.SessionId = Guid.NewGuid(); var dataTotrack = new TestData() { Name = "name", Surname = "surname" }; //Act var ex = Record.Exception(() => { localBatch.ToTracking(dataTotrack); requestService.Verify(); }); //Assert Assert.Null(ex); }