aspnetcore/test/Microsoft.AspNetCore.Mvc.Co.../RequestFormLimitsAttributeT...

92 lines
3.9 KiB
C#

// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Linq;
using System.Reflection;
using Microsoft.AspNetCore.Http.Features;
using Xunit;
namespace Microsoft.AspNetCore.Mvc
{
public class RequestFormLimitsAttributeTest
{
[Fact]
public void AllPublicProperties_OfFormOptions_AreExposed()
{
// Arrange
var formOptionsProperties = GetProperties(typeof(FormOptions));
var formLimitsAttributeProperties = GetProperties(typeof(RequestFormLimitsAttribute));
// Act & Assert
foreach (var property in formOptionsProperties)
{
var formLimitAttributeProperty = formLimitsAttributeProperties
.Where(pi => property.Name == pi.Name && pi.PropertyType == property.PropertyType)
.SingleOrDefault();
Assert.NotNull(formLimitAttributeProperty);
}
}
[Fact]
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));
}
}
[Fact]
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);
}
private PropertyInfo[] GetProperties(Type type)
{
return type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
}
}
}