SwissWebApplicationFactory 0.1.0
dotnet add package SwissWebApplicationFactory --version 0.1.0
NuGet\Install-Package SwissWebApplicationFactory -Version 0.1.0
<PackageReference Include="SwissWebApplicationFactory" Version="0.1.0" />
<PackageVersion Include="SwissWebApplicationFactory" Version="0.1.0" />
<PackageReference Include="SwissWebApplicationFactory" />
paket add SwissWebApplicationFactory --version 0.1.0
#r "nuget: SwissWebApplicationFactory, 0.1.0"
#:package SwissWebApplicationFactory@0.1.0
#addin nuget:?package=SwissWebApplicationFactory&version=0.1.0
#tool nuget:?package=SwissWebApplicationFactory&version=0.1.0
SwissWebApplicationFactory is a library that extends the capabilities of WebApplicationFactory.
📥 Installation
You can install SwissWebApplicationFactory via NuGet:
Install-Package SwissWebApplicationFactory
Or through the .NET Core command-line interface:
dotnet add package SwissWebApplicationFactory
🔧 Possibilities
Mock
SwissWebApplicationFactory provides the functionality to replace services using mock objects as follows:
private readonly IDateTimeProvider DateTimeProviderMock;
private readonly AbstractExternalService AbstractServiceMock;
SwissWebApplicationFactory.MockServices(GetMocks());
public IEnumerable<object> GetMocks()
{
yield return DateTimeProviderMock;
yield return AbstractServiceMock;
}
Removing services
Specify in the appsettings.json file which services we want to exclude during testing:
{
"RemoveServicesOption": {
"Pairs": {
"ITracer": "First",
"ILogger": "All",
}
}
}
SwissWebApplicationFactory.RemoveServicesByOption()
or through an attribute if there is access to the class or interface:
[Remove(RemoveOrder.First)]
public class Tracer : ITracer
[Remove(RemoveOrder.All)]
public class Logger : ILogger
SwissWebApplicationFactory.RemoveServicesByAttribute();
Database
To replace an existing database, you can use the following method:
private readonly SqliteConnection memorySqliteConnection;
SwissWebApplicationFactory.AddDbContext<TestableDbContext, Program>(builder => builder.UseSqlite(memorySqliteConnection));
Or
private readonly SqliteConnection memorySqliteConnection;
SwissWebApplicationFactory.AddDbContextPool<TestableDbContext, Program>(builder => builder.UseSqlite(memorySqliteConnection));
Entities can be added in the following way:
await SwissWebApplicationFactory.AddEntitiesAsync<TestableDbContext, Program, Item>(items);
Or
await SwissWebApplicationFactory.ManipulateDbContextAsync<TestableDbContext, Program>(static async db =>
{
(await db.Items.SingleAsync()).Value = expected;
});
Authentication
To replace authentication, you call the following methods:
SwissWebApplicationFactory.MockAuth().SetFakeBearerAuthenticationHeader();
If you need to configure permissions for a user:
SwissWebApplicationFactory.ClaimsConfig.Roles = new[]{ "Admin" };
SwissWebApplicationFactory.ClaimsConfig.Name = "Admin";
📝 License
Made with love by Kataane 💜
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net7.0
- Castle.Core (>= 5.1.1)
- Microsoft.AspNetCore.Authentication.JwtBearer (>= 7.0.11)
- Microsoft.AspNetCore.Mvc.Testing (>= 7.0.11)
- Microsoft.EntityFrameworkCore (>= 7.0.11)
- Moq (>= 4.20.69)
- System.IdentityModel.Tokens.Jwt (>= 7.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0 | 238 | 9/24/2023 |