1
0
mirror of https://github.com/bitwarden/server synced 2025-12-19 09:43:25 +00:00

Inject playId services in tests and don't fail if it's not found

This commit is contained in:
Matt Gibson
2025-11-17 12:53:36 -08:00
parent d9134d2a60
commit 14044ff5fb
2 changed files with 25 additions and 2 deletions

View File

@@ -14,16 +14,31 @@ public class PlayIdService(IHostEnvironment hostEnvironment) : IPlayIdService
} }
} }
public class NeverPlayIdServices : IPlayIdService
{
public string? PlayId
{
get => null;
set { }
}
public bool InPlay(out string playId)
{
playId = string.Empty;
return false;
}
}
public class PlayIdSingletonService(IHttpContextAccessor httpContextAccessor, IHostEnvironment hostEnvironment) : IPlayIdService public class PlayIdSingletonService(IHttpContextAccessor httpContextAccessor, IHostEnvironment hostEnvironment) : IPlayIdService
{ {
private PlayIdService Current private IPlayIdService Current
{ {
get get
{ {
var httpContext = httpContextAccessor.HttpContext; var httpContext = httpContextAccessor.HttpContext;
if (httpContext == null) if (httpContext == null)
{ {
throw new InvalidOperationException("HttpContext is not available"); return new NeverPlayIdServices();
} }
return httpContext.RequestServices.GetRequiredService<PlayIdService>(); return httpContext.RequestServices.GetRequiredService<PlayIdService>();
} }

View File

@@ -1,5 +1,6 @@
using System.Reflection; using System.Reflection;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Services;
using Bit.Core.Settings; using Bit.Core.Settings;
using Bit.Infrastructure.Dapper; using Bit.Infrastructure.Dapper;
using Bit.Infrastructure.EntityFramework; using Bit.Infrastructure.EntityFramework;
@@ -124,6 +125,13 @@ public class DatabaseDataAttribute : DataAttribute
{ {
services.AddSingleton<TimeProvider, FakeTimeProvider>(); services.AddSingleton<TimeProvider, FakeTimeProvider>();
} }
// Include PlayIdService for tracking Play Ids in repositories
// We need the http context accessor to use the Singleton version, which pulls from the scoped version
services.AddHttpContextAccessor();
services.AddSingleton<IPlayIdService, PlayIdSingletonService>();
services.AddScoped<PlayIdService>();
} }
private void AddDapperServices(IServiceCollection services, Database database) private void AddDapperServices(IServiceCollection services, Database database)