Ejemplo n.º 1
0
        public async Task Invoke_ShouldCatchException()
        {
            //ARRANGE
            var useCaseException   = new UseCaseException(UseCaseExceptionCode.FailedToAuthenticatedToInstagram);
            var defaultHttpContext = new DefaultHttpContext();
            const HttpStatusCode httpStatusCode = HttpStatusCode.Unauthorized;

            requestDelegateMock.Setup(rd => rd(defaultHttpContext)).Throws(useCaseException);

            useCaseExceptionCodeMapperMock.Setup(ucecm => ucecm.MapToStatusCode(useCaseException.StatusCode))
            .Returns(httpStatusCode);

            //ACT
            await _exceptionMiddleware.Invoke(defaultHttpContext);

            defaultHttpContext.Response.Body.Seek(0, SeekOrigin.Begin);
            using (var reader = new StreamReader(defaultHttpContext.Response.Body, Encoding.UTF8))
            {
                var responseBody = await reader.ReadToEndAsync();

                //ASSERT
                Assert.AreEqual(defaultHttpContext.Response.ContentType, useCaseException.ContentType);

                Assert.AreEqual(responseBody, useCaseException.Message);
                Assert.AreEqual(defaultHttpContext.Response.StatusCode, (int)httpStatusCode);
            }
        }
Ejemplo n.º 2
0
        private static Task HandleUseCaseExceptionAsync(HttpContext context, UseCaseException useCaseException)
        {
            context.Response.ContentType = "application/json";
            context.Response.StatusCode  = (int)HttpStatusCode.BadRequest;

            var json = new
            {
                context.Response.StatusCode,
                Message = useCaseException.Message
            };

            return(context.Response.WriteAsync(System.Text.Json.JsonSerializer.Serialize(json)));
        }
Ejemplo n.º 3
0
        protected static void HandleDbUpdateException(DbUpdateException e)
        {
            var uce = new UseCaseException()
            {
                UserErrorMessage = "An API database error was detected",
                DevErrorMessage  = e.Message
            };

            if (e.InnerException is Npgsql.PostgresException npgSqlEx)
            {
                uce.DevErrorMessage += Environment.NewLine + npgSqlEx.ConstraintName;
                uce.DevErrorMessage += Environment.NewLine + npgSqlEx.Detail;
                uce.DevErrorMessage += Environment.NewLine + npgSqlEx.MessageText;
            }

            throw uce;
        }