public void Matches_ReturnsTrue_IfDeclaredMetadataAndActualMetadataHaveSameStatusCode() { // Arrange var declaredMetadata = DeclaredApiResponseMetadata.ForProducesResponseType(302, AttributeData, Mock.Of <IMethodSymbol>()); var actualMetadata = new ActualApiResponseMetadata(ReturnStatement, 302, null); // Act var matches = declaredMetadata.Matches(actualMetadata); // Assert Assert.True(matches); }
public void Matches_ReturnsTrue_IfDeclaredMetadataIs201_AndActualMetadataIsDefault() { // Arrange var declaredMetadata = DeclaredApiResponseMetadata.ForProducesResponseType(201, AttributeData, Mock.Of <IMethodSymbol>()); var actualMetadata = new ActualApiResponseMetadata(ReturnExpression, null); // Act var matches = declaredMetadata.Matches(actualMetadata); // Assert Assert.True(matches); }
public void Matches_ReturnsFalse_IfDeclaredMetadataIs201_AndActualMetadataIs200() { // Arrange var declaredMetadata = DeclaredApiResponseMetadata.ForProducesResponseType(201, AttributeData, Mock.Of <IMethodSymbol>()); var actualMetadata = new ActualApiResponseMetadata(ReturnStatement, 200, null); // Act var matches = declaredMetadata.Matches(actualMetadata); // Assert Assert.False(matches); }
private static IList <DeclaredApiResponseMetadata> GetResponseMetadataFromMethodAttributes(ApiControllerSymbolCache symbolCache, IMethodSymbol methodSymbol) { var metadataItems = new List <DeclaredApiResponseMetadata>(); var responseMetadataAttributes = methodSymbol.GetAttributes(symbolCache.ProducesResponseTypeAttribute, inherit: true); foreach (var attribute in responseMetadataAttributes) { var statusCode = GetStatusCode(attribute); var metadata = DeclaredApiResponseMetadata.ForProducesResponseType(statusCode, attribute, attributeSource: methodSymbol); metadataItems.Add(metadata); } var producesDefaultResponse = methodSymbol.GetAttributes(symbolCache.ProducesDefaultResponseTypeAttribute, inherit: true).FirstOrDefault(); if (producesDefaultResponse != null) { metadataItems.Add(DeclaredApiResponseMetadata.ForProducesDefaultResponse(producesDefaultResponse, methodSymbol)); } return(metadataItems); }