Example #1
0
        public void Matches_ReturnsTrue_IfDeclaredMetadataIsDefault_AndActualMetadataIsErrorStatusCode(int actualStatusCode)
        {
            // Arrange
            var declaredMetadata = DeclaredApiResponseMetadata.ForProducesDefaultResponse(AttributeData, Mock.Of <IMethodSymbol>());
            var actualMetadata   = new ActualApiResponseMetadata(ReturnExpression, actualStatusCode, null);

            // Act
            var matches = declaredMetadata.Matches(actualMetadata);

            // Assert
            Assert.True(matches);
        }
        public void Matches_ReturnsFalse_IfDeclaredMetadataIsDefault_AndActualMetadataIsDefaultResponse()
        {
            // Arrange
            var declaredMetadata = DeclaredApiResponseMetadata.ForProducesDefaultResponse(AttributeData, Mock.Of <IMethodSymbol>());
            var actualMetadata   = new ActualApiResponseMetadata(ReturnStatement, 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);
        }