Skip to content

Commit

Permalink
Merge pull request #1645 from ProgrammeVitam/story_12072-ark-search-got
Browse files Browse the repository at this point in the history
Story #12072: ARK search for GOT
  • Loading branch information
marob authored Feb 16, 2024
2 parents 0f885f7 + 0af37b8 commit 18d603c
Show file tree
Hide file tree
Showing 36 changed files with 908 additions and 176 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -52,5 +52,6 @@ public class RestApi {
public static final String TRANSFER_ACKNOWLEDGMENT = "/transfer-acknowledgment";
public static final String BULK_OPERATION_THRESHOLDS = "/bulk-operations-thresholds";
public static final String UNITS_PERSISTENT_IDENTIFIER = "/units-by-persistent-identifier";
public static final String OBJECTS_PERSISTENT_IDENTIFIER = "/objects-by-persistent-identifier";

}
Original file line number Diff line number Diff line change
Expand Up @@ -238,4 +238,10 @@ public PersistentIdentifierResponseDto findUnitsByPersistentIdentifier(String id
return restTemplate.exchange(uriBuilder.build().toUri(), HttpMethod.GET, request, PersistentIdentifierResponseDto.class).getBody();
}

public PersistentIdentifierResponseDto findObjectsByPersistentIdentifier(String identifier, ExternalHttpContext context) {
final HttpEntity<?> request = new HttpEntity<>(buildHeaders(context));
final UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(getUrl() + RestApi.OBJECTS_PERSISTENT_IDENTIFIER).queryParam("id", identifier);
return restTemplate.exchange(uriBuilder.build().toUri(), HttpMethod.GET, request, PersistentIdentifierResponseDto.class).getBody();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,9 @@
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Objects;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.anyString;
import static org.mockito.Mockito.eq;
Expand Down Expand Up @@ -87,7 +87,7 @@ public void setUp() {
@Test
public void sampleArchiveTest() {
Assertions.assertNotNull(archiveSearchExternalRestClient);
Assertions.assertEquals(RestApi.ARCHIVE_SEARCH_PATH, archiveSearchExternalRestClient.getPathUrl());
assertEquals(RestApi.ARCHIVE_SEARCH_PATH, archiveSearchExternalRestClient.getPathUrl());
}


Expand All @@ -103,7 +103,7 @@ public void when_searchArchiveUnitsByCriteria_rest_template_ok_should_return_ok(
ArchiveUnitsDto response =
archiveSearchExternalRestClient.searchArchiveUnitsByCriteria(defaultContext, query);

Assertions.assertEquals(response, responseEntity);
assertEquals(response, responseEntity);
}

@Test
Expand All @@ -117,7 +117,7 @@ public void whenGetFilingHoldingSChemeRestTemplateOKThenShouldReturnOK() {
VitamUISearchResponseDto response =
archiveSearchExternalRestClient.getFilingHoldingScheme(defaultContext);

Assertions.assertEquals(response, responseEntity);
assertEquals(response, responseEntity);
}


Expand All @@ -136,7 +136,7 @@ public void whenGetexportCsvArchiveUnitsByCriteria_Srvc_ok_ThenShouldReturnOK()
ResponseEntity<Resource> response =
archiveSearchExternalRestClient.exportCsvArchiveUnitsByCriteria(query, defaultContext);

Assertions.assertEquals(response.getBody(), resource);
assertEquals(response.getBody(), resource);
}

@Test
Expand Down Expand Up @@ -164,7 +164,23 @@ public void findUnitsByPersistentIdentifier_ok() throws URISyntaxException {
// When
PersistentIdentifierResponseDto persistentIdentifierResponse = archiveSearchExternalRestClient.findUnitsByPersistentIdentifier(arkId, defaultContext);
// Then
Assertions.assertEquals(persistentIdentifierResponse, result);
assertEquals(persistentIdentifierResponse, result);
verify(restTemplate).exchange(eq(uri), eq(HttpMethod.GET), any(HttpEntity.class), eq(PersistentIdentifierResponseDto.class));
}

@Test
public void findObjectsByPersistentIdentifier_ok() throws URISyntaxException {
// Given
final String arkId = "ark:/225867/001a9d7db5eghxac_binary_master";
final PersistentIdentifierResponseDto result = new PersistentIdentifierResponseDto();
final URI uri = new URI(archiveSearchExternalRestClient.getBaseUrl() + archiveSearchExternalRestClient.getPathUrl()
+ RestApi.OBJECTS_PERSISTENT_IDENTIFIER + "?id=ark:/225867/001a9d7db5eghxac_binary_master");
when(restTemplate.exchange(any(URI.class), any(HttpMethod.class), any(HttpEntity.class), any(Class.class)))
.thenReturn(new ResponseEntity<>(result, HttpStatus.OK));
// When
final PersistentIdentifierResponseDto persistentIdentifierResponse = archiveSearchExternalRestClient.findObjectsByPersistentIdentifier(arkId, defaultContext);
// Then
assertEquals(persistentIdentifierResponse, result);
verify(restTemplate).exchange(eq(uri), eq(HttpMethod.GET), any(HttpEntity.class), eq(PersistentIdentifierResponseDto.class));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -274,10 +274,20 @@ public List<VitamUiOntologyDto> getExternalOntologiesList() {
public PersistentIdentifierResponseDto findUnitsByPersistentIdentifier(
final @RequestParam(value = "id") String arkId
) {
LOGGER.debug("[EXTERNAL] : Get by persistent identifier {}", arkId);
LOGGER.debug("[EXTERNAL] : Get units by persistent identifier {}", arkId);
final PersistentIdentifierResponseDto persistentIdentifierResponse = archivesSearchExternalService.findUnitsByPersistentIdentifier(arkId);
LOGGER.debug("[EXTERNAL] : persistentIdentifierResponse = {}", persistentIdentifierResponse);
return persistentIdentifierResponse;
}

@GetMapping(RestApi.OBJECTS_PERSISTENT_IDENTIFIER)
public PersistentIdentifierResponseDto findObjectsByPersistentIdentifier(
final @RequestParam(value = "id") String arkId
) {
LOGGER.debug("[EXTERNAL] : Get objects by persistent identifier {}", arkId);
final PersistentIdentifierResponseDto persistentIdentifierResponse = archivesSearchExternalService.findObjectsByPersistentIdentifier(arkId);
LOGGER.debug("[EXTERNAL] : persistentIdentifierResponse = {}", persistentIdentifierResponse);
return persistentIdentifierResponse;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -210,4 +210,8 @@ public PersistentIdentifierResponseDto findUnitsByPersistentIdentifier(String ar
return archiveInternalRestClient.findUnitsByPersistentIdentifier(arkId, getInternalHttpContext());
}

public PersistentIdentifierResponseDto findObjectsByPersistentIdentifier(String arkId) {
return archiveInternalRestClient.findObjectsByPersistentIdentifier(arkId, getInternalHttpContext());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,10 @@
import fr.gouv.vitamui.commons.api.logger.VitamUILogger;
import fr.gouv.vitamui.commons.api.logger.VitamUILoggerFactory;
import fr.gouv.vitamui.commons.api.utils.ArchiveSearchConsts;
import fr.gouv.vitamui.commons.vitam.api.dto.PersistentIdentifierResponseDto;
import fr.gouv.vitamui.commons.vitam.api.dto.ResultsDto;
import fr.gouv.vitamui.commons.vitam.api.dto.VitamUISearchResponseDto;
import fr.gouv.vitamui.iam.security.service.ExternalSecurityService;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
Expand All @@ -71,6 +71,10 @@

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatCode;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

@ExtendWith(MockitoExtension.class)
Expand Down Expand Up @@ -98,7 +102,7 @@ class ArchivesSearchExternalControllerTest extends ApiArchiveSearchExternalContr

@Test
void testArchiveController() {
Assertions.assertNotNull(archivesSearchExternalService);
assertNotNull(archivesSearchExternalService);
}


Expand Down Expand Up @@ -151,7 +155,7 @@ void test_searchArchiveUnitsByCriteria_with_ok_criteria_should_return_ok() throw
.when(archivesSearchExternalService.searchArchiveUnitsByCriteria(query))
.thenReturn(expectedResponse);
ArchiveUnitsDto responseDto = archivesSearchExternalController.searchArchiveUnitsByCriteria(query);
Assertions.assertEquals(responseDto, expectedResponse);
assertEquals(responseDto, expectedResponse);
}

@Test
Expand Down Expand Up @@ -184,8 +188,8 @@ void testSearchFilingHoldingSchemeResultsThanReturnVitamUISearchResponseDto() {
VitamUISearchResponseDto filingHoldingSchemeResults =
archivesSearchExternalController.getFillingHoldingScheme();
// Then
Assertions.assertNotNull(filingHoldingSchemeResults);
Assertions.assertEquals(filingHoldingSchemeResults, expectedResponse);
assertNotNull(filingHoldingSchemeResults);
assertEquals(filingHoldingSchemeResults, expectedResponse);
}


Expand All @@ -207,8 +211,8 @@ void test_exportCsvArchiveUnitsByCriteria_with_valid_criteria_should_return_ok()
Resource responseCsv =
archivesSearchExternalController.exportCsvArchiveUnitsByCriteria(query);
// Then
Assertions.assertNotNull(responseCsv);
Assertions.assertEquals(responseCsv, resource);
assertNotNull(responseCsv);
assertEquals(responseCsv, resource);
}

@Test
Expand Down Expand Up @@ -240,7 +244,7 @@ void testArchiveUnitsRulesMassUpdateResultsThanReturnVitamOperationId()
.thenReturn(expectedResponse);

String response = archivesSearchExternalController.updateArchiveUnitsRules(ruleSearchCriteriaDto);
Assertions.assertEquals(response, expectedResponse);
assertEquals(response, expectedResponse);
}

@Test
Expand All @@ -257,7 +261,7 @@ void testLaunchComputedInheritedRulesThenReturnVitamOperationId()
String response = archivesSearchExternalController.computedInheritedRules(searchCriteriaDto);

// Then
Assertions.assertEquals(response, expectedResponse);
assertEquals(response, expectedResponse);
}


Expand All @@ -275,7 +279,7 @@ void testSelectUnitWithInheritedRulesThenReturnVitamOperationId()
ResultsDto response = archivesSearchExternalController.selectUnitWithInheritedRules(searchCriteriaDto);

// Then
Assertions.assertEquals(response, expectedResponse);
assertEquals(response, expectedResponse);
}

@Test
Expand All @@ -294,7 +298,7 @@ void testTransferAcknowledgmentThenReturnVitamOperationDetails()
String response = archivesSearchExternalController.transferAcknowledgment(atrFile, fileName);

// Then
Assertions.assertEquals(response, expectedResponse);
assertEquals(response, expectedResponse);
}

@Test
Expand All @@ -310,6 +314,42 @@ void testGetOntologiesListThenReturnOntologiesValuesList()
List<VitamUiOntologyDto> response = archivesSearchExternalController.getExternalOntologiesList();

// Then
Assertions.assertEquals(response, expectedResponse);
assertEquals(response, expectedResponse);
}

@Test
void testFindUnitsByPersistentIdentifier()
throws PreconditionFailedException {
// Given
final String arkId = "ark:/225867/001a9d7db5eghxac";
final PersistentIdentifierResponseDto expectedResponse = new PersistentIdentifierResponseDto();

// When
Mockito
.when(archivesSearchExternalService.findUnitsByPersistentIdentifier(arkId))
.thenReturn(expectedResponse);
final PersistentIdentifierResponseDto response = archivesSearchExternalController.findUnitsByPersistentIdentifier(arkId);

// Then
verify(archivesSearchExternalService, times(1)).findUnitsByPersistentIdentifier(arkId);
assertEquals(response, expectedResponse);
}

@Test
void testFindObjectsByPersistentIdentifier()
throws PreconditionFailedException {
// Given
final String arkId = "ark:/225867/001a9d7db5eghxac_binary_master";
final PersistentIdentifierResponseDto expectedResponse = new PersistentIdentifierResponseDto();

// When
Mockito
.when(archivesSearchExternalService.findObjectsByPersistentIdentifier(arkId))
.thenReturn(expectedResponse);
final PersistentIdentifierResponseDto response = archivesSearchExternalController.findObjectsByPersistentIdentifier(arkId);

// Then
verify(archivesSearchExternalService, times(1)).findObjectsByPersistentIdentifier(arkId);
assertEquals(response, expectedResponse);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -266,4 +266,10 @@ public PersistentIdentifierResponseDto findUnitsByPersistentIdentifier(String id
return restTemplate.exchange(uriBuilder.build().toUri(), HttpMethod.GET, request, PersistentIdentifierResponseDto.class).getBody();
}

public PersistentIdentifierResponseDto findObjectsByPersistentIdentifier(String identifier, final InternalHttpContext context) {
final HttpEntity<?> request = new HttpEntity<>(buildHeaders(context));
final UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(getUrl() + RestApi.OBJECTS_PERSISTENT_IDENTIFIER).queryParam("id", identifier);
return restTemplate.exchange(uriBuilder.build().toUri(), HttpMethod.GET, request, PersistentIdentifierResponseDto.class).getBody();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.anyString;
import static org.mockito.Mockito.eq;
Expand All @@ -78,7 +78,7 @@ public void setUp() {
@Test
public void sampleArchiveTest() {
Assertions.assertNotNull(archivesSearchExternalRestClient);
Assertions.assertEquals(RestApi.ARCHIVE_SEARCH_PATH, archivesSearchExternalRestClient.getPathUrl());
assertEquals(RestApi.ARCHIVE_SEARCH_PATH, archivesSearchExternalRestClient.getPathUrl());
}


Expand All @@ -95,7 +95,7 @@ public void when_searchArchiveUnitsByCriteria_rest_template_ok_should_return_ok(
.thenReturn(new ResponseEntity<>(responseEntity, HttpStatus.OK));
ArchiveUnitsDto response =
archivesSearchExternalRestClient.searchArchiveUnitsByCriteria(defaultContext, query);
Assertions.assertEquals(response, responseEntity);
assertEquals(response, responseEntity);
}

@Test
Expand All @@ -107,7 +107,7 @@ public void testSearchFilingHoldingSchemeResultsThanReturnVitamUISearchResponseD
.thenReturn(new ResponseEntity<>(responseEntity, HttpStatus.OK));
VitamUISearchResponseDto response =
archivesSearchExternalRestClient.getFilingHoldingScheme(defaultContext);
Assertions.assertEquals(response, responseEntity);
assertEquals(response, responseEntity);
}

@Test
Expand All @@ -124,7 +124,7 @@ public void whenGetexportCsvArchiveUnitsByCriteria_Srvc_ok_ThenShouldReturnOK()
archivesSearchExternalRestClient.exportCsvArchiveUnitsByCriteria(query, defaultContext);


Assertions.assertEquals(response, resource);
assertEquals(response, resource);
}

@Test
Expand All @@ -139,7 +139,23 @@ public void findUnitsByPersistentIdentifier_ok() throws URISyntaxException {
// When
PersistentIdentifierResponseDto persistentIdentifierResponse = archivesSearchExternalRestClient.findUnitsByPersistentIdentifier(arkId, defaultContext);
// Then
Assertions.assertEquals(persistentIdentifierResponse, result);
assertEquals(persistentIdentifierResponse, result);
verify(restTemplate).exchange(eq(uri), eq(HttpMethod.GET), any(HttpEntity.class), eq(PersistentIdentifierResponseDto.class));
}

@Test
public void findObjectsByPersistentIdentifier_ok() throws URISyntaxException {
// Given
final String arkId = "ark:/225867/001a9d7db5eghxac_binary_master";
final PersistentIdentifierResponseDto result = new PersistentIdentifierResponseDto();
final URI uri = new URI(archivesSearchExternalRestClient.getBaseUrl() + archivesSearchExternalRestClient.getPathUrl()
+ RestApi.OBJECTS_PERSISTENT_IDENTIFIER + "?id=ark:/225867/001a9d7db5eghxac_binary_master");
when(restTemplate.exchange(any(URI.class), any(HttpMethod.class), any(HttpEntity.class), any(Class.class)))
.thenReturn(new ResponseEntity<>(result, HttpStatus.OK));
// When
final PersistentIdentifierResponseDto persistentIdentifierResponse = archivesSearchExternalRestClient.findObjectsByPersistentIdentifier(arkId, defaultContext);
// Then
assertEquals(persistentIdentifierResponse, result);
verify(restTemplate).exchange(eq(uri), eq(HttpMethod.GET), any(HttpEntity.class), eq(PersistentIdentifierResponseDto.class));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -344,10 +344,20 @@ public List<VitamUiOntologyDto> getExternalOntologyFieldsList() throws IOExcepti
public PersistentIdentifierResponseDto findUnitsByPersistentIdentifier(
final @RequestParam("id") String arkId
) throws VitamClientException {
LOGGER.debug("[INTERNAL] : Get by persistent identifier {}", arkId);
LOGGER.debug("[INTERNAL] : Get units by persistent identifier {}", arkId);
final PersistentIdentifierResponseDto persistentIdentifierResponse = archiveInternalService.findUnitsByPersistentIdentifier(arkId, externalParametersService.buildVitamContextFromExternalParam());
LOGGER.debug("[INTERNAL] : persistentIdentifierResponse = {}", persistentIdentifierResponse);
return persistentIdentifierResponse;
}

@GetMapping(RestApi.OBJECTS_PERSISTENT_IDENTIFIER)
public PersistentIdentifierResponseDto findObjectsByPersistentIdentifier(
final @RequestParam("id") String arkId
) throws VitamClientException {
LOGGER.debug("[INTERNAL] : Get objects by persistent identifier {}", arkId);
final PersistentIdentifierResponseDto persistentIdentifierResponse = archiveInternalService.findObjectsByPersistentIdentifier(arkId, externalParametersService.buildVitamContextFromExternalParam());
LOGGER.debug("[INTERNAL] : persistentIdentifierResponse = {}", persistentIdentifierResponse);
return persistentIdentifierResponse;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -469,4 +469,15 @@ public PersistentIdentifierResponseDto findUnitsByPersistentIdentifier(String id
}
}

public PersistentIdentifierResponseDto findObjectsByPersistentIdentifier(String identifier, VitamContext vitamContext) throws VitamClientException {
LOGGER.debug("Persistent identifier : {}", identifier);
RequestResponse<JsonNode> response = persistentIdentifierService.findObjectsByPersistentIdentifier(identifier, vitamContext);
try {
return objectMapper.readValue(response.toString(), PersistentIdentifierResponseDto.class);
} catch (JsonProcessingException e) {
LOGGER.error("Response not in good format {}", e);
throw new VitamClientException("Unable to find the GOT", e);
}
}

}
Loading

0 comments on commit 18d603c

Please sign in to comment.