У меня есть настройка заглушки для обработки тестов, которые взаимодействуют с корзинами AWS S3.(Пользовательская) реализация заглушки использует Spring WebFlux для ответа, например, на S3 put-запросы.
В последнее время я был вынужден изменить мою реализацию S3, чтобы использовать InputStream
вместо реального файла в качестве ввода.Моя проблема в том, что моя реализация заглушки не дает ожидаемого результата при передаче InputStream, а не файла.
Моя заглушка в настоящее время реализована так:
RouterFunction<ServerResponse> putS3Object() {
return RouterFunctions.route(PUT("/S3/MyBucket/{filename}").and(accept(TEXT_PLAIN))) { ServerRequest request ->
return request.bodyToMono(String)
.doOnSuccess { s3Stubs.registerPutObject(request.pathVariable("filename"), it) }
.flatMap { response -> ServerResponse.ok().build() }
}
}
Переданная строказначение s3Stubs.registerPutObject
в параметре it
содержит ожидаемое значение «Hello World».
Теперь, когда я использую InputStream в качестве аргумента API S3 вместо файла, параметр it
больше не является«читабельно».Он содержит данные вроде: 18;chunk-signature=c27c7fa381b8aa2824e8487979d2d0e9ded04dd3 ..... 0;chunk-signature=db7e8b1bacc57da0d410ee116
- где я ожидал бы того же результата «Hello World».
Я не уверен, связано ли это с моей реализацией Webflux или как S3 обрабатывает InputStreams по сравнению с фактическимфайлы.
Использование точно такой же реализации S3 с использованием InputStream
работает при переносе в реальную корзину S3 ...