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); }
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(); }
/// <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>()));