As I have looked up the source code it seems ChecksumType.COMPOSITE is hardcoded in multi part upload so using ChecksumType.FULL_OBJECT fails on s3mock, but it does work correctly on aws s3.
ChecksumType.COMPOSITE
// this fails with s3mock but works with aws s3
await this.client.send(new CompleteMultipartUploadCommand({
Bucket: this.Bucket,
Key: this.Key,
UploadId: uploadRequest.UploadId,
ChecksumCRC64NVME: this.ChecksumCRC64NVME,
ChecksumType: "FULL_OBJECT",
MultipartUpload: {
Parts
}
}));
instead of hardcoded composite, it should take full_object from the input parameter and support full_object checksum.