private Mono<ServerResponse> installFromUri(ServerRequest request) {
        var content = request.bodyToMono(InstallFromUriRequest.class)
            .map(InstallFromUriRequest::uri)
            .flatMapMany(urlDataBufferFetcher::fetch);

        return themeService.install(content)
            .flatMap(theme -> ServerResponse.ok().bodyValue(theme));
    }
@Test
    void installFromUri() {
        final URI uri = URI.create("https://example.com/test-theme.zip");
        var metadata = new Metadata();
        metadata.setName("fake-theme");
        var theme = new Theme();
        theme.setMetadata(metadata);

        when(themeService.install(any())).thenReturn(Mono.just(theme));
        var body = new ThemeEndpoint.UpgradeFromUriRequest(uri);
        webTestClient.post()
            .uri("/themes/-/install-from-uri")
            .bodyValue(body)
            .exchange()
            .expectStatus().isOk()
            .expectBody(Theme.class).isEqualTo(theme);

        verify(themeService).install(any());
    }