mirror of
https://github.com/bitwarden/server
synced 2025-12-13 14:53:34 +00:00
Fixup singleton tests
This commit is contained in:
@@ -26,6 +26,7 @@ public class SutProvider<TSut> : ISutProvider
|
|||||||
|
|
||||||
public TSut Sut { get; private set; }
|
public TSut Sut { get; private set; }
|
||||||
public Type SutType => typeof(TSut);
|
public Type SutType => typeof(TSut);
|
||||||
|
public IFixture Fixture => _fixture;
|
||||||
|
|
||||||
public SutProvider() : this(new Fixture()) { }
|
public SutProvider() : this(new Fixture()) { }
|
||||||
|
|
||||||
@@ -65,6 +66,19 @@ public class SutProvider<TSut> : ISutProvider
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Creates and registers a dependency to be injected when the sut is created.
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="TDep">The Dependency type to create</typeparam>
|
||||||
|
/// <param name="parameterName">The (optional) parameter name to register the dependency under</param>
|
||||||
|
/// <returns>The created dependency value</returns>
|
||||||
|
public TDep CreateDependency<TDep>(string parameterName = "")
|
||||||
|
{
|
||||||
|
var dependency = _fixture.Create<TDep>();
|
||||||
|
SetDependency(dependency, parameterName);
|
||||||
|
return dependency;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a dependency of the sut. Can only be called after the dependency has been set, either explicitly with
|
/// Gets a dependency of the sut. Can only be called after the dependency has been set, either explicitly with
|
||||||
/// <see cref="SetDependency{T}"/> or automatically with <see cref="Create"/>.
|
/// <see cref="SetDependency{T}"/> or automatically with <see cref="Create"/>.
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ public class PlayIdServiceTests
|
|||||||
var result = sutProvider.Sut.InPlay(out var resultPlayId);
|
var result = sutProvider.Sut.InPlay(out var resultPlayId);
|
||||||
|
|
||||||
Assert.False(result);
|
Assert.False(result);
|
||||||
Assert.Empty(resultPlayId);
|
Assert.Equal(playId, resultPlayId);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
@@ -101,8 +101,35 @@ public class NeverPlayIdServicesTests
|
|||||||
[SutProviderCustomize]
|
[SutProviderCustomize]
|
||||||
public class PlayIdSingletonServiceTests
|
public class PlayIdSingletonServiceTests
|
||||||
{
|
{
|
||||||
|
public static IEnumerable<object[]> SutProvider()
|
||||||
|
{
|
||||||
|
var sutProvider = new SutProvider<PlayIdSingletonService>();
|
||||||
|
var httpContext = sutProvider.CreateDependency<HttpContext>();
|
||||||
|
var serviceProvider = sutProvider.CreateDependency<IServiceProvider>();
|
||||||
|
var hostEnvironment = sutProvider.CreateDependency<IHostEnvironment>();
|
||||||
|
var playIdService = new PlayIdService(hostEnvironment);
|
||||||
|
sutProvider.SetDependency(playIdService);
|
||||||
|
httpContext.RequestServices.Returns(serviceProvider);
|
||||||
|
serviceProvider.GetService<PlayIdService>().Returns(playIdService);
|
||||||
|
serviceProvider.GetRequiredService<PlayIdService>().Returns(playIdService);
|
||||||
|
sutProvider.CreateDependency<IHttpContextAccessor>().HttpContext.Returns(httpContext);
|
||||||
|
sutProvider.Create();
|
||||||
|
return [[sutProvider]];
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PrepHttpContext(
|
||||||
|
SutProvider<PlayIdSingletonService> sutProvider)
|
||||||
|
{
|
||||||
|
var httpContext = sutProvider.CreateDependency<HttpContext>();
|
||||||
|
var serviceProvider = sutProvider.CreateDependency<IServiceProvider>();
|
||||||
|
var PlayIdService = sutProvider.CreateDependency<PlayIdService>();
|
||||||
|
httpContext.RequestServices.Returns(serviceProvider);
|
||||||
|
serviceProvider.GetRequiredService<PlayIdService>().Returns(PlayIdService);
|
||||||
|
sutProvider.GetDependency<IHttpContextAccessor>().HttpContext.Returns(httpContext);
|
||||||
|
}
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
[BitAutoData]
|
[BitMemberAutoData(nameof(SutProvider))]
|
||||||
public void InPlay_WhenNoHttpContext_ReturnsFalse(
|
public void InPlay_WhenNoHttpContext_ReturnsFalse(
|
||||||
SutProvider<PlayIdSingletonService> sutProvider)
|
SutProvider<PlayIdSingletonService> sutProvider)
|
||||||
{
|
{
|
||||||
@@ -116,25 +143,13 @@ public class PlayIdSingletonServiceTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
[BitAutoData]
|
[BitMemberAutoData(nameof(SutProvider))]
|
||||||
public void InPlay_WhenNotDevelopment_ReturnsFalse(
|
public void InPlay_WhenNotDevelopment_ReturnsFalse(
|
||||||
string playIdValue,
|
SutProvider<PlayIdSingletonService> sutProvider,
|
||||||
SutProvider<PlayIdSingletonService> sutProvider)
|
string playIdValue)
|
||||||
{
|
{
|
||||||
var httpContext = Substitute.For<HttpContext>();
|
var scopedPlayIdService = sutProvider.GetDependency<PlayIdService>();
|
||||||
var serviceProvider = Substitute.For<IServiceProvider>();
|
|
||||||
var scopedPlayIdService = Substitute.For<PlayIdService>(Substitute.For<IHostEnvironment>());
|
|
||||||
scopedPlayIdService.PlayId = playIdValue;
|
scopedPlayIdService.PlayId = playIdValue;
|
||||||
scopedPlayIdService.InPlay(out Arg.Any<string>()).Returns(x =>
|
|
||||||
{
|
|
||||||
x[0] = playIdValue;
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
|
|
||||||
httpContext.RequestServices.Returns(serviceProvider);
|
|
||||||
serviceProvider.GetRequiredService<PlayIdService>().Returns(scopedPlayIdService);
|
|
||||||
|
|
||||||
sutProvider.GetDependency<IHttpContextAccessor>().HttpContext.Returns(httpContext);
|
|
||||||
sutProvider.GetDependency<IHostEnvironment>().EnvironmentName.Returns(Environments.Production);
|
sutProvider.GetDependency<IHostEnvironment>().EnvironmentName.Returns(Environments.Production);
|
||||||
|
|
||||||
var result = sutProvider.Sut.InPlay(out var playId);
|
var result = sutProvider.Sut.InPlay(out var playId);
|
||||||
@@ -144,21 +159,12 @@ public class PlayIdSingletonServiceTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
[BitAutoData]
|
[BitMemberAutoData(nameof(SutProvider))]
|
||||||
public void InPlay_WhenDevelopmentAndHttpContextWithPlayId_ReturnsTrue(
|
public void InPlay_WhenDevelopmentAndHttpContextWithPlayId_ReturnsTrue(
|
||||||
string playIdValue,
|
SutProvider<PlayIdSingletonService> sutProvider,
|
||||||
SutProvider<PlayIdSingletonService> sutProvider)
|
string playIdValue)
|
||||||
{
|
{
|
||||||
var httpContext = Substitute.For<HttpContext>();
|
sutProvider.GetDependency<PlayIdService>().PlayId = playIdValue;
|
||||||
var serviceProvider = Substitute.For<IServiceProvider>();
|
|
||||||
var hostEnvironment = Substitute.For<IHostEnvironment>();
|
|
||||||
hostEnvironment.EnvironmentName.Returns(Environments.Development);
|
|
||||||
var scopedPlayIdService = new PlayIdService(hostEnvironment) { PlayId = playIdValue };
|
|
||||||
|
|
||||||
httpContext.RequestServices.Returns(serviceProvider);
|
|
||||||
serviceProvider.GetRequiredService<PlayIdService>().Returns(scopedPlayIdService);
|
|
||||||
|
|
||||||
sutProvider.GetDependency<IHttpContextAccessor>().HttpContext.Returns(httpContext);
|
|
||||||
sutProvider.GetDependency<IHostEnvironment>().EnvironmentName.Returns(Environments.Development);
|
sutProvider.GetDependency<IHostEnvironment>().EnvironmentName.Returns(Environments.Development);
|
||||||
|
|
||||||
var result = sutProvider.Sut.InPlay(out var playId);
|
var result = sutProvider.Sut.InPlay(out var playId);
|
||||||
@@ -168,41 +174,12 @@ public class PlayIdSingletonServiceTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
[BitAutoData]
|
[BitMemberAutoData(nameof(SutProvider))]
|
||||||
public void PlayId_GetterRetrievesFromScopedService(
|
|
||||||
string playIdValue,
|
|
||||||
SutProvider<PlayIdSingletonService> sutProvider)
|
|
||||||
{
|
|
||||||
var httpContext = Substitute.For<HttpContext>();
|
|
||||||
var serviceProvider = Substitute.For<IServiceProvider>();
|
|
||||||
var hostEnvironment = Substitute.For<IHostEnvironment>();
|
|
||||||
var scopedPlayIdService = new PlayIdService(hostEnvironment) { PlayId = playIdValue };
|
|
||||||
|
|
||||||
httpContext.RequestServices.Returns(serviceProvider);
|
|
||||||
serviceProvider.GetRequiredService<PlayIdService>().Returns(scopedPlayIdService);
|
|
||||||
|
|
||||||
sutProvider.GetDependency<IHttpContextAccessor>().HttpContext.Returns(httpContext);
|
|
||||||
|
|
||||||
var result = sutProvider.Sut.PlayId;
|
|
||||||
|
|
||||||
Assert.Equal(playIdValue, result);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Theory]
|
|
||||||
[BitAutoData]
|
|
||||||
public void PlayId_SetterSetsOnScopedService(
|
public void PlayId_SetterSetsOnScopedService(
|
||||||
string playIdValue,
|
SutProvider<PlayIdSingletonService> sutProvider,
|
||||||
SutProvider<PlayIdSingletonService> sutProvider)
|
string playIdValue)
|
||||||
{
|
{
|
||||||
var httpContext = Substitute.For<HttpContext>();
|
var scopedPlayIdService = sutProvider.GetDependency<PlayIdService>();
|
||||||
var serviceProvider = Substitute.For<IServiceProvider>();
|
|
||||||
var hostEnvironment = Substitute.For<IHostEnvironment>();
|
|
||||||
var scopedPlayIdService = new PlayIdService(hostEnvironment);
|
|
||||||
|
|
||||||
httpContext.RequestServices.Returns(serviceProvider);
|
|
||||||
serviceProvider.GetRequiredService<PlayIdService>().Returns(scopedPlayIdService);
|
|
||||||
|
|
||||||
sutProvider.GetDependency<IHttpContextAccessor>().HttpContext.Returns(httpContext);
|
|
||||||
|
|
||||||
sutProvider.Sut.PlayId = playIdValue;
|
sutProvider.Sut.PlayId = playIdValue;
|
||||||
|
|
||||||
@@ -210,7 +187,7 @@ public class PlayIdSingletonServiceTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
[BitAutoData]
|
[BitMemberAutoData(nameof(SutProvider))]
|
||||||
public void PlayId_WhenNoHttpContext_GetterReturnsNull(
|
public void PlayId_WhenNoHttpContext_GetterReturnsNull(
|
||||||
SutProvider<PlayIdSingletonService> sutProvider)
|
SutProvider<PlayIdSingletonService> sutProvider)
|
||||||
{
|
{
|
||||||
@@ -222,10 +199,10 @@ public class PlayIdSingletonServiceTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
[BitAutoData]
|
[BitMemberAutoData(nameof(SutProvider))]
|
||||||
public void PlayId_WhenNoHttpContext_SetterDoesNotThrow(
|
public void PlayId_WhenNoHttpContext_SetterDoesNotThrow(
|
||||||
string playIdValue,
|
SutProvider<PlayIdSingletonService> sutProvider,
|
||||||
SutProvider<PlayIdSingletonService> sutProvider)
|
string playIdValue)
|
||||||
{
|
{
|
||||||
sutProvider.GetDependency<IHttpContextAccessor>().HttpContext.Returns((HttpContext?)null);
|
sutProvider.GetDependency<IHttpContextAccessor>().HttpContext.Returns((HttpContext?)null);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user