mirror of
https://github.com/bitwarden/server.git
synced 2024-12-02 13:53:23 +01:00
44 lines
1.3 KiB
C#
44 lines
1.3 KiB
C#
|
using AutoFixture.Kernel;
|
||
|
using System;
|
||
|
using System.ComponentModel.DataAnnotations;
|
||
|
using System.Linq;
|
||
|
using System.Reflection;
|
||
|
|
||
|
namespace Bit.Core.Test.AutoFixture.Relays
|
||
|
{
|
||
|
// Creates a string the same length as any availible MaxLength data annotation
|
||
|
// Modified version of the StringLenfthRelay provided by AutoFixture
|
||
|
// https://github.com/AutoFixture/AutoFixture/blob/master/Src/AutoFixture/DataAnnotations/StringLengthAttributeRelay.cs
|
||
|
internal class MaxLengthStringRelay: ISpecimenBuilder
|
||
|
{
|
||
|
public object Create(object request, ISpecimenContext context)
|
||
|
{
|
||
|
if (request == null)
|
||
|
{
|
||
|
return new NoSpecimen();
|
||
|
}
|
||
|
|
||
|
if (context == null)
|
||
|
{
|
||
|
throw new ArgumentNullException(nameof(context));
|
||
|
}
|
||
|
|
||
|
var p = request as PropertyInfo;
|
||
|
if (p == null)
|
||
|
{
|
||
|
return new NoSpecimen();
|
||
|
}
|
||
|
|
||
|
var a = (MaxLengthAttribute)p.GetCustomAttributes(typeof(MaxLengthAttribute), false).SingleOrDefault();
|
||
|
|
||
|
if (a == null)
|
||
|
{
|
||
|
return new NoSpecimen();
|
||
|
}
|
||
|
|
||
|
return context.Resolve(new ConstrainedStringRequest(a.Length, a.Length));
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|