using System.Reflection; using Bit.Core.Enums; using Bit.Core.Settings; using Bit.Infrastructure.Dapper; using Bit.Infrastructure.EntityFramework; using Bit.Infrastructure.EntityFramework.Repositories; using Bit.Infrastructure.IntegrationTest.Services; using Bit.Infrastructure.IntegrationTest.Utilities; using Microsoft.Extensions.Caching.Distributed; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Time.Testing; using Xunit; using Xunit.Sdk; using Xunit.v3; namespace Bit.Infrastructure.IntegrationTest; public class DatabaseDataAttribute : DataAttribute { public bool SelfHosted { get; set; } public bool UseFakeTimeProvider { get; set; } public string? MigrationName { get; set; } public override ValueTask<IReadOnlyCollection<ITheoryDataRow>> GetData(MethodInfo testMethod, DisposalTracker disposalTracker) { var builders = DatabaseStartup.Builders; if (builders == null) { throw new InvalidOperationException("Builders wasn't supplied, this likely means DatabaseStartup didn't run."); } var theoryData = new ITheoryDataRow[builders.Count]; for (var i = 0; i < builders.Count; i++) { theoryData[i] = builders[i](testMethod, disposalTracker, this); } return new(theoryData); } public override bool SupportsDiscoveryEnumeration() { return true; } }