Merge branch 'RED-10057' into 'master'

RED-10057: legalBasisMapVersion missing in /status endpoint

Closes RED-10057

See merge request redactmanager/persistence-service!746
This commit is contained in:
Maverick Studer 2024-09-19 09:41:46 +02:00
commit a96372e542
4 changed files with 104 additions and 1 deletions

View File

@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.RestController;
import com.iqser.red.service.persistence.management.v1.processor.service.AccessControlService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DictionaryPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.LegalBasisMappingPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.RulesPersistenceService;
import com.iqser.red.service.persistence.service.v1.api.external.resource.VersionsResource;
import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType;
@ -27,6 +28,7 @@ public class VersionsController implements VersionsResource {
private final DictionaryPersistenceService dictionaryPersistenceService;
private final RulesPersistenceService rulesPersistenceService;
private final AccessControlService accessControlService;
private final LegalBasisMappingPersistenceService legalBasisMappingPersistenceService;
@Override
@ -35,7 +37,9 @@ public class VersionsController implements VersionsResource {
var result = new HashMap<String, VersionsResponse>();
dossierTemplateIds.forEach(rsId -> {
VersionsResponse response = new VersionsResponse(dictionaryPersistenceService.getVersion(rsId), rulesPersistenceService.getVersion(rsId, RuleFileType.ENTITY));
VersionsResponse response = new VersionsResponse(dictionaryPersistenceService.getVersion(rsId),
rulesPersistenceService.getVersion(rsId, RuleFileType.ENTITY),
legalBasisMappingPersistenceService.getVersion(rsId));
result.put(rsId, response);
});

View File

@ -0,0 +1,10 @@
package com.iqser.red.service.peristence.v1.server.integration.client;
import org.springframework.cloud.openfeign.FeignClient;
import com.iqser.red.service.persistence.service.v1.api.external.resource.LegalBasisMappingResource;
@FeignClient(name = "LegalBasisMappingClient", url = "http://localhost:${server.port}")
public interface LegalBasisMappingClient extends LegalBasisMappingResource {
}

View File

@ -0,0 +1,86 @@
package com.iqser.red.service.peristence.v1.server.integration.tests;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.List;
import java.util.Map;
import org.apache.http.HttpStatus;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient;
import com.iqser.red.service.peristence.v1.server.integration.client.LegalBasisMappingClient;
import com.iqser.red.service.peristence.v1.server.integration.client.RulesClient;
import com.iqser.red.service.peristence.v1.server.integration.client.VersionClient;
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider;
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
import com.iqser.red.service.persistence.service.v1.api.shared.model.CreateTypeValue;
import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType;
import com.iqser.red.service.persistence.service.v1.api.shared.model.VersionsResponse;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.legalbasis.LegalBasis;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.DroolsValidationResponse;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.RulesUploadRequestModel;
public class VersionsTest extends AbstractPersistenceServerServiceTest {
@Autowired
private DossierTesterAndProvider dossierTesterAndProvider;
@Autowired
private RulesClient rulesClient;
@Autowired
private VersionClient versionClient;
@Autowired
private DictionaryClient dictionaryClient;
@Autowired
private LegalBasisMappingClient legalBasisMapClient;
@Test
public void testVersionsResponse() {
var dossier = dossierTesterAndProvider.provideTestDossier();
Map<String, VersionsResponse> initialVersionsMap = versionClient.getVersions(List.of(dossier.getDossierTemplateId()));
VersionsResponse initialVersions = initialVersionsMap.get(dossier.getDossierTemplateId());
assertThat(initialVersions).isNotNull();
long initialDictionaryVersion = initialVersions.getDictionaryVersion();
long initialRulesVersion = initialVersions.getRulesVersion();
long initialLegalBasisMapVersion = initialVersions.getLegalBasisMapVersion();
var rulesUploadRequest = new RulesUploadRequestModel("lorem ipsum", dossier.getDossierTemplateId(), RuleFileType.ENTITY, false);
ResponseEntity<DroolsValidationResponse> rulesResponse = rulesClient.upload(rulesUploadRequest);
assertThat(rulesResponse.getStatusCode().value()).isEqualTo(HttpStatus.SC_OK);
dictionaryClient.addType(CreateTypeValue.builder()
.type("type_dossier")
.label("Dossier Redactions")
.hexColor("#fcba03")
.rank(100)
.description("Something")
.addToDictionaryAction(false)
.dossierTemplateId(dossier.getDossierTemplateId())
.build());
LegalBasis legalBasis = new LegalBasis();
legalBasis.setName("Test Legal Basis");
legalBasis.setDescription("This is a test legal basis.");
legalBasis.setReason("Test Reason");
legalBasis.setTechnicalName("test_legal_basis");
legalBasisMapClient.addOrUpdateLegalBasis(dossier.getDossierTemplateId(), legalBasis);
Map<String, VersionsResponse> updatedVersionsMap = versionClient.getVersions(List.of(dossier.getDossierTemplateId()));
VersionsResponse updatedVersions = updatedVersionsMap.get(dossier.getDossierTemplateId());
assertThat(updatedVersions.getRulesVersion()).isEqualTo(initialRulesVersion + 1);
assertThat(updatedVersions.getDictionaryVersion()).isEqualTo(initialDictionaryVersion + 1);
assertThat(updatedVersions.getLegalBasisMapVersion()).isEqualTo(initialLegalBasisMapVersion + 1);
}
}

View File

@ -13,4 +13,7 @@ public class VersionsResponse {
@Schema(description = "The current rules version.")
long rulesVersion;
@Schema(description = "The current legal basis mapping version.")
long legalBasisMapVersion;
}