Files

53 lines
2.3 KiB
C#

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Strata.ApiLib.Core.Cors.Extensions;
using Strata.ApiLib.Core.StrataAuthentication.Bootstrappers;
using Strata.Configuration.Client.DependencyInjection.ConsoleApps;
using Strata.ContinuousImprovement.Biz.Configurations;
using Strata.ContinuousImprovement.Biz.DbContexts;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
namespace Strata.ContinuousImprovement.Client.Test.Integration.Setup
{
[ExcludeFromCodeCoverage]
public static class ServiceCollectionFactory
{
// dev master
private static readonly Guid DevMasterDatabase = new("54409f55-5ddf-4748-8222-9ccfb04fb4f5");
private static readonly Guid SeleniumAutomationDatabase = new("6bcd9090-3446-4cc1-b1aa-38afae76a1c6");
private static readonly Guid SeleniumAutomationRefreshed4Master = new("feb7a099-8b2a-436c-9aba-0f853c8c60c9");
private static readonly string IntegrationTesting = $"ci_client_{DateTime.Now:yyyyMMdd}_{Guid.NewGuid():N}";
public static IServiceCollection Create()
{
var services = new ServiceCollection();
var jazzDbGuid = Debugger.IsAttached ? SeleniumAutomationRefreshed4Master : SeleniumAutomationDatabase;
// for now, though
jazzDbGuid = DevMasterDatabase;
try
{
var configuration = StrataConfigurationFactory.GetConfiguration();
services.AddSingleton(configuration);
services.AddStrataAuthentication(configuration);
services.AddStrataCors(configuration);
services.AddContinuousImprovementServices(configuration, IntegrationTesting);
services.AddAsyncDbContextFactory<JazzDbContext>(options =>
{
options
.WithConnectionString((provider, token) => provider.GetConnectionStringFromSmc(jazzDbGuid, token))
.WithDbContextOptions((connectionString, provider, builder) =>
builder.UseSqlServer(connectionString, options => { options.CommandTimeout(300); }));
});
services.AddLogging();
}
catch (Exception)
{
throw;
}
return services;
}
}
}