public void UpdatesFormOptions_WithOverridenValues()
    {
        // Arrange
        var requestFormLimitsAttribute = new RequestFormLimitsAttribute();

        // Act
        requestFormLimitsAttribute.BufferBody                   = true;
        requestFormLimitsAttribute.BufferBodyLengthLimit        = 0;
        requestFormLimitsAttribute.KeyLengthLimit               = 0;
        requestFormLimitsAttribute.MemoryBufferThreshold        = 0;
        requestFormLimitsAttribute.MultipartBodyLengthLimit     = 0;
        requestFormLimitsAttribute.MultipartBoundaryLengthLimit = 0;
        requestFormLimitsAttribute.MultipartHeadersCountLimit   = 0;
        requestFormLimitsAttribute.MultipartHeadersLengthLimit  = 0;
        requestFormLimitsAttribute.ValueCountLimit              = 0;
        requestFormLimitsAttribute.ValueLengthLimit             = 0;

        // Assert
        Assert.True(requestFormLimitsAttribute.FormOptions.BufferBody);
        Assert.Equal(0, requestFormLimitsAttribute.FormOptions.BufferBodyLengthLimit);
        Assert.Equal(0, requestFormLimitsAttribute.FormOptions.KeyLengthLimit);
        Assert.Equal(0, requestFormLimitsAttribute.FormOptions.MemoryBufferThreshold);
        Assert.Equal(0, requestFormLimitsAttribute.FormOptions.MultipartBodyLengthLimit);
        Assert.Equal(0, requestFormLimitsAttribute.FormOptions.MultipartBoundaryLengthLimit);
        Assert.Equal(0, requestFormLimitsAttribute.FormOptions.MultipartHeadersCountLimit);
        Assert.Equal(0, requestFormLimitsAttribute.FormOptions.MultipartHeadersLengthLimit);
        Assert.Equal(0, requestFormLimitsAttribute.FormOptions.ValueCountLimit);
        Assert.Equal(0, requestFormLimitsAttribute.FormOptions.ValueLengthLimit);
    }
    public void CreatesFormOptions_WithDefaults()
    {
        // Arrange
        var formOptionsProperties         = GetProperties(typeof(FormOptions));
        var formLimitsAttributeProperties = GetProperties(typeof(RequestFormLimitsAttribute));
        var formOptions = new FormOptions();

        // Act
        var requestFormLimitsAttribute = new RequestFormLimitsAttribute();

        // Assert
        foreach (var formOptionsProperty in formOptionsProperties)
        {
            var formLimitsAttributeProperty = formLimitsAttributeProperties
                                              .Where(pi => pi.Name == formOptionsProperty.Name && pi.PropertyType == formOptionsProperty.PropertyType)
                                              .SingleOrDefault();

            Assert.Equal(
                formOptionsProperty.GetValue(formOptions),
                formLimitsAttributeProperty.GetValue(requestFormLimitsAttribute));
        }
    }