From 4d578e03042b22f8aa735ca8b1f5a532e014ac67 Mon Sep 17 00:00:00 2001 From: IvanBorislavovDimitrov Date: Wed, 1 Apr 2026 14:17:11 +0300 Subject: [PATCH] Fix ali cloud file existence check --- .../JCloudsObjectStoreFileStorage.java | 2 +- .../JCloudsObjectStoreFileStorageTest.java | 51 +++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/multiapps-controller-persistence/src/main/java/org/cloudfoundry/multiapps/controller/persistence/services/JCloudsObjectStoreFileStorage.java b/multiapps-controller-persistence/src/main/java/org/cloudfoundry/multiapps/controller/persistence/services/JCloudsObjectStoreFileStorage.java index d1fba0ac70..2ba0ff70a7 100644 --- a/multiapps-controller-persistence/src/main/java/org/cloudfoundry/multiapps/controller/persistence/services/JCloudsObjectStoreFileStorage.java +++ b/multiapps-controller-persistence/src/main/java/org/cloudfoundry/multiapps/controller/persistence/services/JCloudsObjectStoreFileStorage.java @@ -77,7 +77,7 @@ public List getFileEntriesWithoutContent(List fileEntries) @Override protected boolean existsInObjectStore(FileEntry fileEntry) { - return blobStore.blobMetadata(container, fileEntry.getId()) != null; + return blobStore.blobExists(container, fileEntry.getId()); } @Override diff --git a/multiapps-controller-persistence/src/test/java/org/cloudfoundry/multiapps/controller/persistence/services/JCloudsObjectStoreFileStorageTest.java b/multiapps-controller-persistence/src/test/java/org/cloudfoundry/multiapps/controller/persistence/services/JCloudsObjectStoreFileStorageTest.java index 29a5398b45..0addf3485f 100644 --- a/multiapps-controller-persistence/src/test/java/org/cloudfoundry/multiapps/controller/persistence/services/JCloudsObjectStoreFileStorageTest.java +++ b/multiapps-controller-persistence/src/test/java/org/cloudfoundry/multiapps/controller/persistence/services/JCloudsObjectStoreFileStorageTest.java @@ -31,9 +31,17 @@ import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; class JCloudsObjectStoreFileStorageTest { @@ -368,4 +376,47 @@ protected void assertFileExists(boolean expectedFileExist, FileEntry actualFile) assertEquals(expectedFileExist, blobExists); } + @Test + void existsInObjectStoreWithMockedBlobStoreVerifiesBlobExistsCalled() { + BlobStore mockBlobStore = mock(BlobStore.class); + FileEntry fileEntry = createFileEntry(); + JCloudsObjectStoreFileStorage testFileStorage = new JCloudsObjectStoreFileStorage(mockBlobStore, CONTAINER); + + when(mockBlobStore.blobExists(CONTAINER, fileEntry.getId())).thenReturn(true); + + boolean result = testFileStorage.existsInObjectStore(fileEntry); + + verify(mockBlobStore, times(1)).blobExists(CONTAINER, fileEntry.getId()); + assertTrue(result); + } + + @Test + void existsInObjectStoreWithMockedBlobStoreFileNotFound() { + BlobStore mockBlobStore = mock(BlobStore.class); + FileEntry fileEntry = createFileEntry(); + JCloudsObjectStoreFileStorage testFileStorage = new JCloudsObjectStoreFileStorage(mockBlobStore, CONTAINER); + + when(mockBlobStore.blobExists(CONTAINER, fileEntry.getId())).thenReturn(false); + + boolean result = testFileStorage.existsInObjectStore(fileEntry); + + verify(mockBlobStore, times(1)).blobExists(CONTAINER, fileEntry.getId()); + assertFalse(result); + } + + @Test + void existsInObjectStoreWithMockedBlobStoreVerifiesCorrectContainer() { + BlobStore mockBlobStore = mock(BlobStore.class); + String testContainer = "test-container"; + FileEntry fileEntry = createFileEntry(); + JCloudsObjectStoreFileStorage testFileStorage = new JCloudsObjectStoreFileStorage(mockBlobStore, testContainer); + + when(mockBlobStore.blobExists(testContainer, fileEntry.getId())).thenReturn(true); + + boolean result = testFileStorage.existsInObjectStore(fileEntry); + + verify(mockBlobStore, times(1)).blobExists(testContainer, fileEntry.getId()); + verify(mockBlobStore, never()).blobExists(eq("wrong-container"), any()); + assertTrue(result); + } }