|
37 | 37 | import java.net.URLConnection; |
38 | 38 | import java.nio.ByteBuffer; |
39 | 39 | import java.util.Arrays; |
| 40 | +import java.util.HashMap; |
40 | 41 | import java.util.Iterator; |
41 | 42 | import java.util.List; |
| 43 | +import java.util.Map; |
42 | 44 | import java.util.concurrent.ExecutionException; |
43 | 45 | import java.util.concurrent.TimeUnit; |
44 | 46 | import java.util.concurrent.TimeoutException; |
@@ -174,17 +176,57 @@ public void testUpdateBlob() { |
174 | 176 | @Test |
175 | 177 | public void testUpdateBlobReplaceMetadata() { |
176 | 178 | String blobName = "test-update-blob-replace-metadata"; |
| 179 | + ImmutableMap<String, String> metadata = ImmutableMap.of("k1", "a"); |
| 180 | + ImmutableMap<String, String> newMetadata = ImmutableMap.of("k2", "b"); |
177 | 181 | BlobInfo blob = BlobInfo.builder(bucket, blobName) |
178 | 182 | .contentType(CONTENT_TYPE) |
179 | | - .metadata(ImmutableMap.of("k1", "a")) |
| 183 | + .metadata(metadata) |
180 | 184 | .build(); |
181 | 185 | assertNotNull(storage.create(blob)); |
182 | 186 | BlobInfo updatedBlob = storage.update(blob.toBuilder().metadata(null).build()); |
183 | 187 | assertNotNull(updatedBlob); |
184 | 188 | assertNull(updatedBlob.metadata()); |
185 | | - updatedBlob = storage.update(blob.toBuilder().metadata(ImmutableMap.of("k2", "b")).build()); |
| 189 | + updatedBlob = storage.update(blob.toBuilder().metadata(newMetadata).build()); |
186 | 190 | assertEquals(blob.blobId(), updatedBlob.blobId()); |
187 | | - assertEquals(ImmutableMap.of("k2", "b"), updatedBlob.metadata()); |
| 191 | + assertEquals(newMetadata, updatedBlob.metadata()); |
| 192 | + assertTrue(storage.delete(bucket, blobName)); |
| 193 | + } |
| 194 | + |
| 195 | + @Test |
| 196 | + public void testUpdateBlobMergeMetadata() { |
| 197 | + String blobName = "test-update-blob-merge-metadata"; |
| 198 | + ImmutableMap<String, String> metadata = ImmutableMap.of("k1", "a"); |
| 199 | + ImmutableMap<String, String> newMetadata = ImmutableMap.of("k2", "b"); |
| 200 | + ImmutableMap<String, String> expectedMetadata = ImmutableMap.of("k1", "a", "k2", "b"); |
| 201 | + BlobInfo blob = BlobInfo.builder(bucket, blobName) |
| 202 | + .contentType(CONTENT_TYPE) |
| 203 | + .metadata(metadata) |
| 204 | + .build(); |
| 205 | + assertNotNull(storage.create(blob)); |
| 206 | + BlobInfo updatedBlob = storage.update(blob.toBuilder().metadata(newMetadata).build()); |
| 207 | + assertNotNull(updatedBlob); |
| 208 | + assertEquals(blob.blobId(), updatedBlob.blobId()); |
| 209 | + assertEquals(expectedMetadata, updatedBlob.metadata()); |
| 210 | + assertTrue(storage.delete(bucket, blobName)); |
| 211 | + } |
| 212 | + |
| 213 | + @Test |
| 214 | + public void testUpdateBlobUnsetMetadata() { |
| 215 | + String blobName = "test-update-blob-unset-metadata"; |
| 216 | + ImmutableMap<String, String> metadata = ImmutableMap.of("k1", "a", "k2", "b"); |
| 217 | + Map<String, String> newMetadata = new HashMap<>(); |
| 218 | + newMetadata.put("k1", "a"); |
| 219 | + newMetadata.put("k2", null); |
| 220 | + ImmutableMap<String, String> expectedMetadata = ImmutableMap.of("k1", "a"); |
| 221 | + BlobInfo blob = BlobInfo.builder(bucket, blobName) |
| 222 | + .contentType(CONTENT_TYPE) |
| 223 | + .metadata(metadata) |
| 224 | + .build(); |
| 225 | + assertNotNull(storage.create(blob)); |
| 226 | + BlobInfo updatedBlob = storage.update(blob.toBuilder().metadata(newMetadata).build()); |
| 227 | + assertNotNull(updatedBlob); |
| 228 | + assertEquals(blob.blobId(), updatedBlob.blobId()); |
| 229 | + assertEquals(expectedMetadata, updatedBlob.metadata()); |
188 | 230 | assertTrue(storage.delete(bucket, blobName)); |
189 | 231 | } |
190 | 232 |
|
|
0 commit comments