@Test
public void upload_multipartUpload_with_minConfiguration() {

    // results in 20 parts
    final UploadConfiguration uploadConfiguration =
            UploadConfiguration.builder()
                    .minimumLengthForMultipartUpload(0)
                    .lengthPerUploadPart(1)
                    .build();
    final UploadManager uploadManager =
            new UploadManager(objectStorage, uploadConfiguration) {
                @Override
                protected MultipartObjectAssembler createAssembler(
                        PutObjectRequest request,
                        UploadRequest uploadRequest,
                        ExecutorService executorService) {
                    return assembler;
                }
            };
    final UploadRequest request = createUploadRequest();
    when(assembler.commit())
            .thenReturn(
                    CommitMultipartUploadResponse.builder()
                            .eTag("finalEtag")
                            .opcRequestId(REQ_ID)
                            .opcClientRequestId(CLIENT_REQ_ID)
                            .opcMultipartMd5("multipartMd5")
                            .build());
    final UploadResponse uploadResponse = uploadManager.upload(request);
    validateUploadResponseForMultipart(uploadResponse);
    verify(assembler).newRequest(CONTENT_TYPE, CONTENT_LANG, CONTENT_ENCODING, METADATA);
    verify(assembler, times(20))
            .addPart(any(InputStream.class), eq(CONTENT_LENGTH / 20), eq(null));
}