1
0
mirror of https://github.com/bitwarden/server.git synced 2025-04-18 19:48:12 -05:00
bitwarden/test/Infrastructure.IntegrationTest/Utilities/ServiceProviderTheoryDataRow.cs
2024-12-06 20:31:45 -05:00

44 lines
1.4 KiB
C#

using System.Reflection;
using Microsoft.Extensions.DependencyInjection;
using Xunit;
using Xunit.Sdk;
namespace Bit.Infrastructure.IntegrationTest.Utilities;
public class ServiceTheoryDataRow : TheoryDataRowBase
{
private readonly MethodInfo _testMethod;
private readonly DisposalTracker _disposalTracker;
private readonly CustomizationContext _customizationContext;
public ServiceTheoryDataRow(MethodInfo testMethod, DisposalTracker disposalTracker, CustomizationContext customizationContext)
{
_testMethod = testMethod;
_disposalTracker = disposalTracker;
_customizationContext = customizationContext;
}
protected override object?[] GetData()
{
Console.WriteLine($"Traits:\n{Traits.Select((k, v) => $"{k}: {string.Join(", ", v)}\n")}");
var parameters = _testMethod.GetParameters();
var sp = _customizationContext.Services.BuildServiceProvider();
// Create a scope for this test
var scope = sp.CreateAsyncScope();
var objects = new object?[parameters.Length];
for (var i = 0; i < parameters.Length; i++)
{
var parameter = parameters[i];
objects[i] = _customizationContext.ParameterResolver(scope.ServiceProvider, parameter);
}
_disposalTracker.Add(scope);
_disposalTracker.Add(sp);
return objects;
}
}