public void IsMethodNameMatch_ReturnsTrue_IfMethodNameIsProperSuffix(string methodName, string conventionMethodName) { // Act var result = ApiResponseTypeProvider.IsMethodNameMatch(methodName, conventionMethodName); // Assert Assert.True(result); }
public void IsParamterNameMatch_ReturnsTrue_IfConventionNameIsExactMatchIgnoringLeadingUnderscores(string parameterName, string conventionName) { // Act var result = ApiResponseTypeProvider.IsParameterNameMatch(parameterName, conventionName); // Assert Assert.True(result); }
public void IsMethodNameMatch_ReturnsFalse_IfMethodIsNotProperPrefix(string methodName, string conventionMethodName) { // Act var result = ApiResponseTypeProvider.IsMethodNameMatch(methodName, conventionMethodName); // Assert Assert.False(result); }
public void IsParamterNameMatch_ReturnsTrue_IfConventionNameIsProperSuffix(string parameterName, string conventionName) { // Act var result = ApiResponseTypeProvider.IsParameterNameMatch(parameterName, conventionName); // Assert Assert.True(result); }
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); }
public void IsParameterTypeMatch_ReturnsTrue_IfConventionTypeIsObject(Type type) { // Arrange var conventionType = typeof(object); // Act var result = ApiResponseTypeProvider.IsParameterTypeMatch(type, conventionType); // Assert Assert.True(result); }
public void IsParameterNameMatch_ReturnsFalse_IfConventionNameIsNotExactCaseSensitiveMatch() { // Arrange var parameterName = "Id"; var conventionName = "id"; // Act var result = ApiResponseTypeProvider.IsParameterNameMatch(parameterName, conventionName); // Assert Assert.False(result); }
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); }
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); }
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); }
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); }
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); }
public void IsMethodNameMatch_ReturnsFalse_IfMethodNameIsExactMatchWithDifferentCasing() { // Arrange var methodName = "post"; var conventionMethodName = "Post"; // Act var result = ApiResponseTypeProvider.IsMethodNameMatch(methodName, conventionMethodName); // Assert Assert.False(result); }
public void IsMethodNameMatch_ReturnsTrue_IfMethodNameIsExactMatch() { // Arrange var methodName = "Post"; var conventionMethodName = "Post"; // Act var result = ApiResponseTypeProvider.IsMethodNameMatch(methodName, conventionMethodName); // Assert Assert.True(result); }
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); }
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); }
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)); }); }