Example #1
0
        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);
        }
Example #4
0
        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);
        }