|
|
|
@ -10,6 +10,7 @@ using Microsoft.Extensions.Configuration; |
|
|
|
using Microsoft.Extensions.DependencyInjection; |
|
|
|
using Microsoft.Extensions.DependencyInjection; |
|
|
|
using Microsoft.Extensions.Logging; |
|
|
|
using Microsoft.Extensions.Logging; |
|
|
|
using Microsoft.Extensions.Logging.Abstractions; |
|
|
|
using Microsoft.Extensions.Logging.Abstractions; |
|
|
|
|
|
|
|
using NoopRepos = Bit.Core.Repositories.Noop; |
|
|
|
|
|
|
|
|
|
|
|
namespace Bit.IntegrationTestCommon.Factories; |
|
|
|
namespace Bit.IntegrationTestCommon.Factories; |
|
|
|
|
|
|
|
|
|
|
|
@ -50,7 +51,14 @@ public abstract class WebApplicationFactoryBase<T> : WebApplicationFactory<T> |
|
|
|
{ "globalSettings:postgreSql:connectionString", "Host=localhost;Username=test;Password=test;Database=test" }, |
|
|
|
{ "globalSettings:postgreSql:connectionString", "Host=localhost;Username=test;Password=test;Database=test" }, |
|
|
|
|
|
|
|
|
|
|
|
// Clear the redis connection string for distributed caching, forcing an in-memory implementation |
|
|
|
// Clear the redis connection string for distributed caching, forcing an in-memory implementation |
|
|
|
{ "globalSettings:redis:connectionString", ""} |
|
|
|
{ "globalSettings:redis:connectionString", ""}, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Clear Storage |
|
|
|
|
|
|
|
{ "globalSettings:attachment:connectionString", null}, |
|
|
|
|
|
|
|
{ "globalSettings:events:connectionString", null}, |
|
|
|
|
|
|
|
{ "globalSettings:send:connectionString", null}, |
|
|
|
|
|
|
|
{ "globalSettings:notifications:connectionString", null}, |
|
|
|
|
|
|
|
{ "globalSettings:storage:connectionString", null}, |
|
|
|
}); |
|
|
|
}); |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
@ -97,6 +105,28 @@ public abstract class WebApplicationFactoryBase<T> : WebApplicationFactory<T> |
|
|
|
services.Remove(captchaValidationService); |
|
|
|
services.Remove(captchaValidationService); |
|
|
|
services.AddSingleton<ICaptchaValidationService, NoopCaptchaValidationService>(); |
|
|
|
services.AddSingleton<ICaptchaValidationService, NoopCaptchaValidationService>(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Disable blocking |
|
|
|
|
|
|
|
var blockingService = services.First(sd => sd.ServiceType == typeof(IBlockIpService)); |
|
|
|
|
|
|
|
services.Remove(blockingService); |
|
|
|
|
|
|
|
services.AddSingleton<IBlockIpService, NoopBlockIpService>(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// TODO: Install and use azurite in CI pipeline |
|
|
|
|
|
|
|
var installationDeviceRepository = |
|
|
|
|
|
|
|
services.First(sd => sd.ServiceType == typeof(IInstallationDeviceRepository)); |
|
|
|
|
|
|
|
services.Remove(installationDeviceRepository); |
|
|
|
|
|
|
|
services.AddSingleton<IInstallationDeviceRepository, NoopRepos.InstallationDeviceRepository>(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// TODO: Install and use azurite in CI pipeline |
|
|
|
|
|
|
|
var metaDataRepository = |
|
|
|
|
|
|
|
services.First(sd => sd.ServiceType == typeof(IMetaDataRepository)); |
|
|
|
|
|
|
|
services.Remove(metaDataRepository); |
|
|
|
|
|
|
|
services.AddSingleton<IMetaDataRepository, NoopRepos.MetaDataRepository>(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// TODO: Install and use azurite in CI pipeline |
|
|
|
|
|
|
|
var referenceEventService = services.First(sd => sd.ServiceType == typeof(IReferenceEventService)); |
|
|
|
|
|
|
|
services.Remove(referenceEventService); |
|
|
|
|
|
|
|
services.AddSingleton<IReferenceEventService, NoopReferenceEventService>(); |
|
|
|
|
|
|
|
|
|
|
|
// Our Rate limiter works so well that it begins to fail tests unless we carve out |
|
|
|
// Our Rate limiter works so well that it begins to fail tests unless we carve out |
|
|
|
// one whitelisted ip. We should still test the rate limiter though and they should change the Ip |
|
|
|
// one whitelisted ip. We should still test the rate limiter though and they should change the Ip |
|
|
|
// to something that is NOT whitelisted |
|
|
|
// to something that is NOT whitelisted |
|
|
|
|