public void HttpResponseMapper_Should_Add2HttpResponseMappers()
        {
            var options = new HttpExceptionsOptions();

            options.HttpResponseMapper <TestProblemDetailsHttpResponseMapper>(500);
            options.HttpResponseMapper <ProblemDetailsHttpResponseMapper>();

            options.HttpResponseMapperDescriptors.Should().HaveCount(2);
        }
        public void ExceptionMapper_Should_Add2ExceptionMappers()
        {
            var options = new HttpExceptionsOptions();

            options.ExceptionMapper <Exception, ProblemDetailsExceptionMapper <Exception> >();
            options.ExceptionMapper <HttpException, ProblemDetailsExceptionMapper <HttpException> >();

            options.ExceptionMapperDescriptors.Should().HaveCount(2);
        }
        public void TryMap_Should_ReturnFalse_WhenMappingNotConfiguredException()
        {
            var options = new HttpExceptionsOptions();

            options.ExceptionMappers.Add(new ProblemDetailsExceptionMapper <HttpException>(_httpExceptionsOptionsMock.Object));

            var result = options.TryMap(new ArgumentException(), new DefaultHttpContext(), out _);

            result.Should().BeFalse();
        }
        public void HttpResponseMapper_Should_OverrideHttpResponseMapper()
        {
            var options = new HttpExceptionsOptions();

            options.HttpResponseMapper <ProblemDetailsHttpResponseMapper>(500);
            options.HttpResponseMapper <TestProblemDetailsHttpResponseMapper>(500);

            options.HttpResponseMapperDescriptors.Should().HaveCount(1);
            options.HttpResponseMapperDescriptors.First().Value.Type.Should().Be <TestProblemDetailsHttpResponseMapper>();
        }
        public void ExceptionMapper_Should_OverrideExceptionMapper()
        {
            var options = new HttpExceptionsOptions();

            options.ExceptionMapper <Exception, ProblemDetailsExceptionMapper <Exception> >();
            options.ExceptionMapper <Exception, TestProblemDetailsExceptionMapper>();

            options.ExceptionMapperDescriptors.Should().HaveCount(1);
            options.ExceptionMapperDescriptors.First().Value.Type.Should().Be <TestProblemDetailsExceptionMapper>();
        }
        public void TryMap_Should_ReturnFalse_WhenMappingNotConfiguredHttpResponse()
        {
            var options = new HttpExceptionsOptions();

            options.HttpResponseMappers.Add(new ProblemDetailsHttpResponseMapper(_httpExceptionsOptionsMock.Object)
            {
                Status = 148
            });

            var result = options.TryMap(_internalServerErrorHttpContext.Response, out _);

            result.Should().BeFalse();
        }
Beispiel #7
0
        /// <summary>
        /// Add an HttpResponseMapper for the specified status code. HttpResponseMappers handle unauthorized and other non-exceptions responses.
        /// </summary>
        /// <typeparam name="THttpResponseMapper">A type that derives from IHttpResponseMapper.</typeparam>
        /// <param name="options">The HttpExceptionsOptions.</param>
        /// <param name="status">The status code that is handled by the IHttpResponseMapper.</param>
        /// <param name="arguments">Optionally inject parameters through HttpResponseMapper constructors.</param>
        public static void HttpResponseMapper <THttpResponseMapper>(this HttpExceptionsOptions options, int status = int.MinValue, params object[] arguments)
            where THttpResponseMapper : IHttpResponseMapper
        {
            if (options.HttpResponseMapperDescriptors.ContainsKey(status))
            {
                options.HttpResponseMapperDescriptors[status] = new HttpResponseMapperDescriptor
                {
                    Type      = typeof(THttpResponseMapper),
                    Arguments = arguments
                };
                return;
            }

            options.HttpResponseMapperDescriptors.Add(status, new HttpResponseMapperDescriptor
            {
                Type      = typeof(THttpResponseMapper),
                Arguments = arguments
            });
        }
Beispiel #8
0
        /// <summary>
        /// Add an ExceptionMapper for the specified exception type.
        /// </summary>
        /// <typeparam name="TException">The exception type that is handled by the IExceptionMapper.</typeparam>
        /// <typeparam name="TExceptionMapper">A type that derives from IExceptionMapper.</typeparam>
        /// <param name="options">The HttpExceptionsOptions.</param>
        /// <param name="arguments">Optionally inject parameters through ExceptionMapper constructors.</param>
        public static void ExceptionMapper <TException, TExceptionMapper>(this HttpExceptionsOptions options, params object[] arguments)
            where TException : Exception
            where TExceptionMapper : IExceptionMapper
        {
            if (options.ExceptionMapperDescriptors.ContainsKey(typeof(TException)))
            {
                options.ExceptionMapperDescriptors[typeof(TException)] = new ExceptionMapperDescriptor {
                    Type      = typeof(TExceptionMapper),
                    Arguments = arguments
                };
                return;
            }

            options.ExceptionMapperDescriptors.Add(typeof(TException), new ExceptionMapperDescriptor
            {
                Type      = typeof(TExceptionMapper),
                Arguments = arguments
            });
        }