コード例 #1
0
        public async Task AgentMiddlewareExecutedSuccessfully()
        {
            var mockedContext = new Mock <IAgentProvider>();
            var agentMock     = new Mock <IAgent>();

            mockedContext.Setup(x => x.GetAgentAsync())
            .ReturnsAsync(agentMock.Object);
            agentMock.Setup(x => x.ProcessAsync(It.IsAny <IAgentContext>(), It.IsAny <MessageContext>()))
            .Returns(Task.FromResult <MessageContext>(null));

            // Arrange
            var middleware = new AgentMiddleware(mockedContext.Object);

            var context = new DefaultHttpContext();

            context.Request.Body          = new MemoryStream();
            context.Request.Method        = HttpMethod.Post.Method;
            context.Request.ContentType   = DefaultMessageService.AgentWireMessageMimeType;
            context.Request.ContentLength = 1;

            await context.Request.Body.WriteAsync(new ReadOnlyMemory <byte>(new { dummy = "dummy" }.ToJson().GetUTF8Bytes()));

            context.Request.Body.Seek(0, SeekOrigin.Begin);

            //Act
            await middleware.InvokeAsync(context, next => Task.CompletedTask);

            //Assert
            context.Response.StatusCode
            .Should()
            .Be((int)HttpStatusCode.OK);
        }
コード例 #2
0
        public async Task AgentMiddlewareCallsNextDelegateOnInvalidHttpMethod()
        {
            var mockedContext = new Mock <IAgentProvider>();
            var nextInvoked   = false;

            // Arrange
            var middleware = new AgentMiddleware(mockedContext.Object);

            var context = new DefaultHttpContext();

            context.Request.Body   = new MemoryStream();
            context.Request.Method = HttpMethod.Put.Method;

            await context.Response.Body.WriteAsync(new ReadOnlyMemory <byte>(new { dummy = "dummy" }.ToJson().GetUTF8Bytes()));

            //Act
            Func <Task> act = async() => await middleware.InvokeAsync(context, next =>
            {
                nextInvoked = true;
                return(Task.CompletedTask);
            });

            await act.Should().NotThrowAsync();

            nextInvoked.Should().BeTrue();
        }
コード例 #3
0
 /// <summary>
 /// Allows default agent configuration
 /// </summary>
 /// <param name="app">App.</param>
 public static void UseAgentFramework(this IApplicationBuilder app) => app.Use((context, func) =>
                                                                               AgentMiddleware.InvokeAsync(context, func, app.ApplicationServices.GetService <IAgentProvider>()));