@Override
    @NonNull
    public Mono<ServerResponse> handle(@NonNull ServerRequest request) {
        var extensionName = request.pathVariable("name");

        return client.get(scheme.type(), extensionName)
            .flatMap(extension -> ServerResponse.ok()
                .contentType(MediaType.APPLICATION_JSON)
                .bodyValue(extension));
    }
@Test
    void shouldHandleCorrectly() {
        var scheme = Scheme.buildFromType(FakeExtension.class);
        var getHandler = new ExtensionGetHandler(scheme, client);
        var serverRequest = MockServerRequest.builder()
            .pathVariable("name", "my-fake")
            .build();
        final var fake = new FakeExtension();
        when(client.get(eq(FakeExtension.class), eq("my-fake"))).thenReturn(Mono.just(fake));

        var responseMono = getHandler.handle(serverRequest);

        StepVerifier.create(responseMono)
            .consumeNextWith(response -> {
                assertEquals(HttpStatus.OK, response.statusCode());
                assertEquals(MediaType.APPLICATION_JSON, response.headers().getContentType());
                assertTrue(response instanceof EntityResponse<?>);
                assertEquals(fake, ((EntityResponse<?>) response).entity());
            })
            .verifyComplete();
    }