From e254d81167d10bb50ffba2b945089c80d73eb754 Mon Sep 17 00:00:00 2001 From: MZhu9 <ujr7dj3ljx3fpstxflyytui5kziqgnbscv3po6mrm3ikbn52frqq> Date: Tue, 3 Oct 2023 09:34:32 -0500 Subject: [PATCH] correct shallow copy bug --- .../indexer/service/StorageServiceImpl.java | 5 ++- .../service/StorageServiceImplTest.java | 37 +++++++++++++++++++ 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/StorageServiceImpl.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/StorageServiceImpl.java index cfcf8ce96..fecc1082d 100644 --- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/StorageServiceImpl.java +++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/StorageServiceImpl.java @@ -147,8 +147,9 @@ public class StorageServiceImpl implements StorageService { } try { Records records = this.objectMapper.readValue(response.getBody(), Records.class); - ids.removeAll(records.getRecords().stream().map(Records.Entity::getId).collect(Collectors.toList())); - records.setNotFound(ids); + List<String> notFoundRecordIds = new ArrayList<>(ids); + notFoundRecordIds.removeAll(records.getRecords().stream().map(Records.Entity::getId).collect(Collectors.toList())); + records.setNotFound(notFoundRecordIds); return records; } catch (JsonProcessingException e) { throw new AppException(RequestStatus.INVALID_RECORD, "Invalid request", "Successful Storage service response with wrong json", e); diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/StorageServiceImplTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/StorageServiceImplTest.java index 437f8714f..07220cddc 100644 --- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/StorageServiceImplTest.java +++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/StorageServiceImplTest.java @@ -190,6 +190,43 @@ public class StorageServiceImplTest { @Test public void should_returnStorageRecords_givenRecordIds_getValidStorageRecordsTest() throws URISyntaxException { + String validDataFromStorage = "{\"records\":[{\"id\":\"tenant1:doc:1dbf528e0e0549cab7a08f29fbfc8465\", \"version\":1, \"kind\":\"tenant:test:test:1.0.0\"}," + + "{\"id\":\"tenant1:doc:15e790a69beb4d789b1f979e2af2e813\", \"version\":1, \"kind\":\"tenant:test:test:1.0.0\"}]}"; + + HttpResponse httpResponse = mock(HttpResponse.class); + when(httpResponse.getBody()).thenReturn(validDataFromStorage); + + when(configurationProperties.getStorageQueryRecordHost()).thenReturn("storageUrl"); + when(this.httpClientHandler.sendRequest(any(), any())).thenReturn(httpResponse); + List<String> idsCopy = new ArrayList<>(); + idsCopy.addAll(ids); + Records storageRecords = this.sut.getStorageRecords(idsCopy); + + assertEquals(2, storageRecords.getRecords().size()); + assertEquals(0, storageRecords.getNotFound().size()); + } + + @Test + public void should_returnStorageRecords_givenRecordIds_allFound_getValidStorageRecordsTest() throws URISyntaxException { + + String validDataFromStorage = "{\"records\":[]}"; + + HttpResponse httpResponse = mock(HttpResponse.class); + when(httpResponse.getBody()).thenReturn(validDataFromStorage); + + when(configurationProperties.getStorageQueryRecordHost()).thenReturn("storageUrl"); + when(this.httpClientHandler.sendRequest(any(), any())).thenReturn(httpResponse); + List<String> idsCopy = new ArrayList<>(); + idsCopy.addAll(ids); + Records storageRecords = this.sut.getStorageRecords(idsCopy); + + assertEquals(0, storageRecords.getRecords().size()); + assertEquals(2, storageRecords.getNotFound().size()); + } + + @Test + public void should_returnStorageRecords_givenRecordIds_noneFound_getValidStorageRecordsTest() throws URISyntaxException { + String validDataFromStorage = "{\"records\":[{\"id\":\"tenant1:doc:1dbf528e0e0549cab7a08f29fbfc8465\", \"version\":1, \"kind\":\"tenant:test:test:1.0.0\"}]}"; HttpResponse httpResponse = mock(HttpResponse.class); -- GitLab