From 6ef293dfd34f2af0ef45bacd04247c3e8afe0261 Mon Sep 17 00:00:00 2001 From: twickline Date: Fri, 2 Aug 2024 13:35:56 -0700 Subject: [PATCH] Fixes issue with AzureBlobStore blockid incorrectly using base64url encoding --- .../org/jclouds/azureblob/blobstore/AzureBlobStore.java | 7 ++++--- .../jclouds/azureblob/blobstore/AzureBlobStoreTest.java | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/providers/azureblob/src/main/java/org/jclouds/azureblob/blobstore/AzureBlobStore.java b/providers/azureblob/src/main/java/org/jclouds/azureblob/blobstore/AzureBlobStore.java index 75e9998117..147ce0cc9b 100644 --- a/providers/azureblob/src/main/java/org/jclouds/azureblob/blobstore/AzureBlobStore.java +++ b/providers/azureblob/src/main/java/org/jclouds/azureblob/blobstore/AzureBlobStore.java @@ -440,9 +440,10 @@ public String completeMultipartUpload(MultipartUpload mpu, List p return sync.putBlockList(mpu.containerName(), azureBlob, blocks.build()); } - static String makeBlockId(int partNumber) { - return BaseEncoding.base64Url().encode(Ints.toByteArray(partNumber)); - } + static String makeBlockId(int partNumber) { + // Azure expects a base64-encoded string ONLY. It does not support base64url encoding. + return BaseEncoding.base64().encode(Ints.toByteArray(partNumber)); + } @Override public MultipartPart uploadMultipartPart(MultipartUpload mpu, int partNumber, Payload payload) { diff --git a/providers/azureblob/src/test/java/org/jclouds/azureblob/blobstore/AzureBlobStoreTest.java b/providers/azureblob/src/test/java/org/jclouds/azureblob/blobstore/AzureBlobStoreTest.java index 71830151cd..ab4885f29d 100644 --- a/providers/azureblob/src/test/java/org/jclouds/azureblob/blobstore/AzureBlobStoreTest.java +++ b/providers/azureblob/src/test/java/org/jclouds/azureblob/blobstore/AzureBlobStoreTest.java @@ -28,7 +28,7 @@ @Test(groups = "unit", testName = "AzureBlobStore") public class AzureBlobStoreTest { - private static final Pattern VALIDATION_PATTERN = Pattern.compile("[a-zA-Z0-9\\-_=]*"); + private static final Pattern VALIDATION_PATTERN = Pattern.compile("^[a-zA-Z0-9+/=]*$"); public void testMakeBlockId() { // how can i achieve something like a junit5 parametrized test in testng?