public async Task DisconnectMiddleware_OnlyAccepts_PostRequests(string httpMethod)
    {
        // Arrange
        var circuitIdFactory = TestCircuitIdFactory.CreateTestFactory();
        var registry         = new CircuitRegistry(
            Options.Create(new CircuitOptions()),
            NullLogger <CircuitRegistry> .Instance,
            circuitIdFactory);

        var middleware = new CircuitDisconnectMiddleware(
            NullLogger <CircuitDisconnectMiddleware> .Instance,
            registry,
            circuitIdFactory,
            (ctx) => Task.CompletedTask);

        var context = new DefaultHttpContext();

        context.Request.Method = httpMethod;

        // Act
        await middleware.Invoke(context);

        // Assert
        Assert.Equal(StatusCodes.Status405MethodNotAllowed, context.Response.StatusCode);
    }
    public async Task Returns400BadRequest_IfNoCircuitIdOnForm()
    {
        // Arrange
        var circuitIdFactory = TestCircuitIdFactory.CreateTestFactory();
        var registry         = new CircuitRegistry(
            Options.Create(new CircuitOptions()),
            NullLogger <CircuitRegistry> .Instance,
            circuitIdFactory);

        var middleware = new CircuitDisconnectMiddleware(
            NullLogger <CircuitDisconnectMiddleware> .Instance,
            registry,
            circuitIdFactory,
            (ctx) => Task.CompletedTask);

        var context = new DefaultHttpContext();

        context.Request.Method      = HttpMethods.Post;
        context.Request.ContentType = "application/x-www-form-urlencoded";

        // Act
        await middleware.Invoke(context);

        // Assert
        Assert.Equal(StatusCodes.Status400BadRequest, context.Response.StatusCode);
    }
    public async Task Returns200OK_NonExistingCircuit()
    {
        // Arrange
        var circuitIdFactory = TestCircuitIdFactory.CreateTestFactory();
        var circuitId        = circuitIdFactory.CreateCircuitId();
        var registry         = new CircuitRegistry(
            Options.Create(new CircuitOptions()),
            NullLogger <CircuitRegistry> .Instance,
            circuitIdFactory);

        var middleware = new CircuitDisconnectMiddleware(
            NullLogger <CircuitDisconnectMiddleware> .Instance,
            registry,
            circuitIdFactory,
            (ctx) => Task.CompletedTask);

        using var memory = new MemoryStream();
        await new FormUrlEncodedContent(new Dictionary <string, string> {
            ["circuitId"] = circuitId.Secret,
        }).CopyToAsync(memory);
        memory.Seek(0, SeekOrigin.Begin);

        var context = new DefaultHttpContext();

        context.Request.Method      = HttpMethods.Post;
        context.Request.ContentType = "application/x-www-form-urlencoded";
        context.Request.Body        = memory;

        // Act
        await middleware.Invoke(context);

        // Assert
        Assert.Equal(StatusCodes.Status200OK, context.Response.StatusCode);
    }