예제 #1
0
        public async void Http_500_with_stack_trace_should_be_returned_at_handler_exception()
        {
            // Given
            var middlewareOptions = new CqrsBusMiddlewareOptions
            {
                AddStackTrace = true
            };
            var sut = new CqrsBusMiddleware(null, middlewareOptions);

            var messageBusMock = new Mock <IMessageBus>();

            messageBusMock.Setup(x => x.Execute(It.IsAny <string>(), null))
            .Throws(new Exception("some exception message"));

            var httpContext = new DefaultHttpContext();

            httpContext.Request.Path  = CqrsBusMiddlewareOptions.Default.EndpointUrl;
            httpContext.Response.Body = new MemoryStream();

            // When
            await sut.InvokeAsync(httpContext, messageBusMock.Object);

            httpContext.Response.Body.Seek(0, SeekOrigin.Begin);

            // Then
            messageBusMock.Verify(x => x.Execute(It.IsAny <string>(), null), Times.Once);
            httpContext.Response.StatusCode.ShouldBe((int)HttpStatusCode.InternalServerError);
            var fullExceptionAsJson = await httpContext.Response.Body.ReadAsString();

            //// dynamic exception = JsonConvert.DeserializeObject(fullExceptionAsJson);
            //// ((string)exception.ClassName).ShouldBe("System.Exception");
            //// ((string)exception.Message).ShouldBe("some exception message");
            //// ((string)exception.Source).ShouldBe("Moq");
            fullExceptionAsJson.ShouldContain("some exception message");
        }
예제 #2
0
        public void New_options_should_inherit_from_default()
        {
            var options = new CqrsBusMiddlewareOptions()
            {
                EndpointUrl = "abc"
            };

            options.EndpointUrl.ShouldBe("abc");
            options.MessageHeader.ShouldBe("Message");
        }
예제 #3
0
        public static IApplicationBuilder UseCqrsBus(this IApplicationBuilder builder,
                                                     CqrsBusMiddlewareOptions options = null)
        {
            if (isConfigured == false)
            {
                var serviceProvider = builder.ApplicationServices;

                var modules = serviceProvider.GetServices <IModule>().ToArray();
                var mtp     = serviceProvider.GetService <IMessageTypeProvider>();
                var htp     = serviceProvider.GetService <IHandlerTypeProvider>();
                foreach (var module in modules)
                {
                    module.RegisterCqrsStuff(mtp, htp);
                }

                isConfigured = true;
            }

            return(builder.UseMiddleware <CqrsBusMiddleware>(options ?? CqrsBusMiddlewareOptions.Default));
        }