NFixtures.WebApi 1.0.2

dotnet add package NFixtures.WebApi --version 1.0.2                
NuGet\Install-Package NFixtures.WebApi -Version 1.0.2                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="NFixtures.WebApi" Version="1.0.2" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add NFixtures.WebApi --version 1.0.2                
#r "nuget: NFixtures.WebApi, 1.0.2"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install NFixtures.WebApi as a Cake Addin
#addin nuget:?package=NFixtures.WebApi&version=1.0.2

// Install NFixtures.WebApi as a Cake Tool
#tool nuget:?package=NFixtures.WebApi&version=1.0.2                

<h1 align="center">

<img src="https://raw.githubusercontent.com/dolifer/NFixtures/master/icon.png" alt="NFixtures" width="200"/> <br/> NFixtures </h1>

<div align="center">

A set of fixtures to use in integration tests.

GitHub license

</div>

NFixtures give a set of pre-built fixtures you can inject into your tests.

License

Getting started

PackageName Description
NFixtures.WebApi Contains StartupFixture<T> that allows you to easily test your WebApi by passing your Startup
NFixtures.xUnit Gives you a LabeledTestCase that allows you to give a name for your test cases
NFixtures.Primitives Contains a TestUser

StartupFixture

public class ApiFixture : StartupFixture<Startup>
{
    protected override void ConfigureAppConfiguration(IConfigurationBuilder configurationBuilder)
    {
        // configure web host configuration - add env parameters, etc.
    }

    protected override void ConfigureTestServices(IServiceCollection services)
    {
        // add additional services (usually Mocks) to use in your test
    }
}

Now you can inject this into your tests, by implementing IClassFixture<ApiFixture>

public class ControllerTests : IClassFixture<ApiFixture>
{
    private readonly ApiFixture _fixture;

    public ControllerTests([NotNull] ApiFixture fixture, [NotNull] ITestOutputHelper output)
    {
        _fixture = fixture;
        _fixture.SetLogger(output); // redirects logger messages into standard xunit test output
    }

    [Fact]
    public async Task Get_Returns_Unauthorized()
    {
        // arrange
        var client = _fixture.CreateDefaultClient();

        // act
        var response = await client.GetAsync("/api/v1/controller").ConfigureAwait(false);

        // assert
        Assert.NotNull(response);
        Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);
    }
}

TestUser

public class ApiFixture : StartupFixture<TestStartup>
{
    public ApiFixture()
    {
        FirstUser = new TestUser("123", "email@server.com");
    }
    
    public TestUser FirstUser { get; }
        
    protected override void ConfigureTestServices(IServiceCollection services)
    {
        services
            .ConfigureTestAuthentication(FirstUser); // enable authentication for our TestUser
    }
}
Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
1.0.2 758 6/22/2022
1.0.1 420 6/21/2022
1.0.0 393 11/27/2021
0.1.7 3,238 7/16/2021
0.1.6 365 6/30/2021
0.1.5 339 3/6/2021