92 lines
3.9 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|