Пример #1
0
        public void IsMethodNameMatch_ReturnsTrue_IfMethodNameIsProperSuffix(string methodName, string conventionMethodName)
        {
            // Act
            var result = ApiResponseTypeProvider.IsMethodNameMatch(methodName, conventionMethodName);

            // Assert
            Assert.True(result);
        }
Пример #2
0
        public void IsParamterNameMatch_ReturnsTrue_IfConventionNameIsExactMatchIgnoringLeadingUnderscores(string parameterName, string conventionName)
        {
            // Act
            var result = ApiResponseTypeProvider.IsParameterNameMatch(parameterName, conventionName);

            // Assert
            Assert.True(result);
        }
Пример #3
0
        public void IsMethodNameMatch_ReturnsFalse_IfMethodIsNotProperPrefix(string methodName, string conventionMethodName)
        {
            // Act
            var result = ApiResponseTypeProvider.IsMethodNameMatch(methodName, conventionMethodName);

            // Assert
            Assert.False(result);
        }
Пример #4
0
        public void IsParamterNameMatch_ReturnsTrue_IfConventionNameIsProperSuffix(string parameterName, string conventionName)
        {
            // Act
            var result = ApiResponseTypeProvider.IsParameterNameMatch(parameterName, conventionName);

            // Assert
            Assert.True(result);
        }
Пример #5
0
        private static ApiResponseTypeProvider GetProvider()
        {
            var mvcOptions = new MvcOptions
            {
                OutputFormatters = { new TestOutputFormatter() },
            };
            var provider = new ApiResponseTypeProvider(new EmptyModelMetadataProvider(), new ActionResultTypeMapper(), mvcOptions);

            return(provider);
        }
 public DefaultApiDescriptionProvider(
     IOptions <MvcOptions> optionsAccessor,
     IInlineConstraintResolver constraintResolver,
     IModelMetadataProvider modelMetadataProvider,
     IActionResultTypeMapper mapper)
 {
     _mvcOptions            = optionsAccessor.Value;
     _constraintResolver    = constraintResolver;
     _modelMetadataProvider = modelMetadataProvider;
     _responseTypeProvider  = new ApiResponseTypeProvider(modelMetadataProvider, mapper, _mvcOptions);
 }
Пример #7
0
        public void IsParameterTypeMatch_ReturnsTrue_IfConventionTypeIsObject(Type type)
        {
            // Arrange
            var conventionType = typeof(object);

            // Act
            var result = ApiResponseTypeProvider.IsParameterTypeMatch(type, conventionType);

            // Assert
            Assert.True(result);
        }
Пример #8
0
        public void IsParameterNameMatch_ReturnsFalse_IfConventionNameIsNotExactCaseSensitiveMatch()
        {
            // Arrange
            var parameterName  = "Id";
            var conventionName = "id";

            // Act
            var result = ApiResponseTypeProvider.IsParameterNameMatch(parameterName, conventionName);

            // Assert
            Assert.False(result);
        }
Пример #9
0
        public void IsMatch_ReturnsTrue_ForConventionWithGenericParameter()
        {
            // Arrange
            var conventionMethod = typeof(DefaultApiConventions).GetMethod(nameof(DefaultApiConventions.Put));
            var method           = typeof(TestController).GetMethod(nameof(TestController.PutModel));

            // Act
            var result = ApiResponseTypeProvider.IsMatch(method, conventionMethod);

            // Assert
            Assert.True(result);
        }
Пример #10
0
        public void IsMatch_ReturnsTrue_ForMethodWithObjectParameter()
        {
            // Arrange
            var conventionMethod = typeof(DefaultApiConventions).GetMethod(nameof(DefaultApiConventions.Get), new[] { typeof(object) });
            var method           = typeof(TestController).GetMethod(nameof(TestController.GetUser));

            // Act
            var result = ApiResponseTypeProvider.IsMatch(method, conventionMethod);

            // Assert
            Assert.True(result);
        }
Пример #11
0
        public void IsMatch_ReturnsFalse_IfParameterCountsDoNotMatch()
        {
            // Arrange
            var conventionMethod = typeof(DefaultApiConventions).GetMethod(nameof(DefaultApiConventions.Get), new[] { typeof(object) });
            var method           = typeof(TestController).GetMethod(nameof(TestController.GetUserLocation));

            // Act
            var result = ApiResponseTypeProvider.IsMatch(method, conventionMethod);

            // Assert
            Assert.False(result);
        }
Пример #12
0
        public void IsMatch_ReturnsFalse_IfMethodNamesAreNotMatches()
        {
            // Arrange
            var conventionMethod = typeof(DefaultApiConventions).GetMethod(nameof(DefaultApiConventions.Post));
            var method           = typeof(TestController).GetMethod(nameof(TestController.GetUser));

            // Act
            var result = ApiResponseTypeProvider.IsMatch(method, conventionMethod);

            // Assert
            Assert.False(result);
        }
Пример #13
0
        public void IsParameterTypeMatch_ReturnsFalse_ForUnrelatedTypes()
        {
            // Arrange
            var type           = typeof(string);
            var conventionType = typeof(int);

            // Act
            var result = ApiResponseTypeProvider.IsParameterTypeMatch(type, conventionType);

            // Assert
            Assert.False(result);
        }
Пример #14
0
        public void IsMethodNameMatch_ReturnsFalse_IfMethodNameIsExactMatchWithDifferentCasing()
        {
            // Arrange
            var methodName           = "post";
            var conventionMethodName = "Post";

            // Act
            var result = ApiResponseTypeProvider.IsMethodNameMatch(methodName, conventionMethodName);

            // Assert
            Assert.False(result);
        }
Пример #15
0
        public void IsMethodNameMatch_ReturnsTrue_IfMethodNameIsExactMatch()
        {
            // Arrange
            var methodName           = "Post";
            var conventionMethodName = "Post";

            // Act
            var result = ApiResponseTypeProvider.IsMethodNameMatch(methodName, conventionMethodName);

            // Assert
            Assert.True(result);
        }
Пример #16
0
        public void IsParameterTypeMatch_ReturnsTrue_IfTypeIsSubtypeOfConvention()
        {
            // Arrange
            var type           = typeof(DerivedModel);
            var conventionType = typeof(BaseModel);

            // Act
            var result = ApiResponseTypeProvider.IsParameterTypeMatch(type, conventionType);

            // Assert
            Assert.True(result);
        }
Пример #17
0
        public void IsParameterTypeMatch_ReturnsTrue_IfTypeIsExact()
        {
            // Arrange
            var type           = typeof(Uri);
            var conventionType = typeof(Uri);

            // Act
            var result = ApiResponseTypeProvider.IsParameterTypeMatch(type, conventionType);

            // Assert
            Assert.True(result);
        }
Пример #18
0
        public void IsMethodNameMatch_ReturnsFalse_IfMethodNameIsProperSuffix_WithDifferentCasing()
        {
            // Arrange
            var methodName           = "getById";
            var conventionMethodName = "Get";

            // Act
            var result = ApiResponseTypeProvider.IsMethodNameMatch(methodName, conventionMethodName);

            // Assert
            Assert.False(result);
        }
        public void GetApiResponseTypes_HandlesActionWithMultipleContentTypesAndProduces()
        {
            // Arrange
            var actionDescriptor = GetControllerActionDescriptor(typeof(TestController), nameof(TestController.GetUser));

            actionDescriptor.FilterDescriptors.Add(new FilterDescriptor(new ProducesAttribute("text/xml")
            {
                Type = typeof(BaseModel)
            }, FilterScope.Action));
            actionDescriptor.FilterDescriptors.Add(new FilterDescriptor(new ProducesResponseTypeAttribute(typeof(ValidationProblemDetails), 400, "application/problem+json"), FilterScope.Action));
            actionDescriptor.FilterDescriptors.Add(new FilterDescriptor(new ProducesResponseTypeAttribute(typeof(ProblemDetails), 404, "application/problem+json"), FilterScope.Action));
            actionDescriptor.FilterDescriptors.Add(new FilterDescriptor(new ProducesResponseTypeAttribute(409), FilterScope.Action));

            var provider = new ApiResponseTypeProvider(new EmptyModelMetadataProvider(), new ActionResultTypeMapper(), new MvcOptions());

            // Act
            var result = provider.GetApiResponseTypes(actionDescriptor);

            // Assert
            Assert.Collection(
                result.OrderBy(r => r.StatusCode),
                responseType =>
            {
                Assert.Equal(typeof(BaseModel), responseType.Type);
                Assert.Equal(200, responseType.StatusCode);
                Assert.Equal(new[] { "text/xml" }, GetSortedMediaTypes(responseType));
            },
                responseType =>
            {
                Assert.Equal(typeof(ValidationProblemDetails), responseType.Type);
                Assert.Equal(400, responseType.StatusCode);
                Assert.Equal(new[] { "application/problem+json" }, GetSortedMediaTypes(responseType));
            },
                responseType =>
            {
                Assert.Equal(typeof(ProblemDetails), responseType.Type);
                Assert.Equal(404, responseType.StatusCode);
                Assert.Equal(new[] { "application/problem+json" }, GetSortedMediaTypes(responseType));
            },
                responseType =>
            {
                Assert.Equal(typeof(void), responseType.Type);
                Assert.Equal(409, responseType.StatusCode);
                Assert.Empty(GetSortedMediaTypes(responseType));
            });
        }