Error in unit test with WebTestClient and Multipart File: "Blocking call! java.io.FileInputStream#readBytes

I'm working on a unit test for a controller in my Spring WebFlux application, and I'm getting the following error when trying to make a POST request with a CSV file:

Blocking call! java.io.FileInputStream#readBytes

Here is the code for my unit test:

@Test
void testMassAccountClosureValidCsvFil2() {
    var csvContent = "example,csv,data\nrow1,column1";
    byte[] csvBytes = csvContent.getBytes(StandardCharsets.UTF_8);

    MultipartBodyBuilder builder = new MultipartBodyBuilder();
    builder.part("file", csvBytes, MediaType.MULTIPART_FORM_DATA);

    webTestClient
            .post()
            .uri("/api/v1/man/customer/mass-closure")
            .contentType(MediaType.MULTIPART_FORM_DATA)
            .body(fromMultipartData(builder.build()))
            .exchange()
            .expectStatus()
            .isOk();
}

Full error:

Blocking call! java.io.FileInputStream#readBytes
org.springframework.web.reactive.function.client.WebClientRequestException: Blocking call! java.io.FileInputStream#readBytes
    at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:136)
    at reactor.core.publisher.MonoErrorSupplied.subscribe(MonoErrorSupplied.java:55)
    at reactor.core.publisher.Mono.subscribe(Mono.java:4568)
    at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
    at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
    at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
    at reactor.core.publisher.FluxMap$MapSubscriber.onError(FluxMap.java:134)
    at reactor.core.publisher.MonoSubscribeOn$SubscribeOnSubscriber.onError(MonoSubscribeOn.java:152)
    at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onError(MonoIgnoreThen.java:280)
    at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106)
    at reactor.core.publisher.Operators.error(Operators.java:198)
    at reactor.core.publisher.MonoError.subscribe(MonoError.java:53)
    at reactor.core.publisher.Mono.subscribe(Mono.java:4568)
    at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
    at reactor.core.publisher.MonoWhen$WhenInner.onError(MonoWhen.java:423)
    at reactor.core.publisher.SinkEmptyMulticast.subscribe(SinkEmptyMulticast.java:213)
    at reactor.core.publisher.Mono.subscribe(Mono.java:4568)
    at reactor.core.publisher.MonoWhen$WhenCoordinator.request(MonoWhen.java:229)
    at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2367)
    at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onSubscribe(FluxOnErrorResume.java:74)
    at reactor.core.publisher.MonoWhen.subscribe(MonoWhen.java:101)
    at reactor.core.publisher.Mono.subscribe(Mono.java:4568)
    at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:265)
    at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51)
    at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53)
    at reactor.core.publisher.Mono.subscribe(Mono.java:4568)
    at reactor.core.publisher.MonoSubscribeOn$SubscribeOnSubscriber.run(MonoSubscribeOn.java:126)
    at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84)
    at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)

Context:

Could anyone help me understand why I am getting this error and how I can fix it?

I have tried to run this unit test to send a mock CSV file to the endpoint. I expected the test to run without any issues and the response status to be 200 OK. However, instead I encountered the error mentioned, indicating that there is a blocking issue while trying to read the file.

Upvotes: 0

Views: 22

Answers (0)

Related Questions