RED-9472: seperation of system rules

fixed failing tests

added validatioresponse to rulesresponse
This commit is contained in:
yhampe 2024-10-22 09:56:30 +02:00
parent 7bc31b530b
commit d41acb5797
4 changed files with 25 additions and 13 deletions

View File

@ -1,6 +1,7 @@
package com.iqser.red.service.peristence.v1.server.integration.tests;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.when;
import java.util.ArrayList;
@ -19,7 +20,10 @@ import com.iqser.red.service.peristence.v1.server.integration.service.DossierTem
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType;
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.RulesResponse;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.RulesUpdateRequest;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.RulesUploadRequestModel;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.SystemRulesSeperationRequest;
import com.iqser.red.service.redaction.v1.model.DroolsSyntaxDeprecatedWarnings;
import com.iqser.red.service.redaction.v1.model.DroolsSyntaxErrorMessage;
import com.iqser.red.service.redaction.v1.model.DroolsValidation;
@ -43,6 +47,11 @@ public class RulesTest extends AbstractPersistenceServerServiceTest {
public void testRules() {
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
when(ruleBuilderClient.getRuleFileWithoutSystemRules(any(SystemRulesSeperationRequest.class))).thenReturn(new RulesResponse("lorem ipsum", dossierTemplate.getId(), false));
when(ruleBuilderClient.mergeUserUpdateRules(any(RulesUpdateRequest.class))).thenReturn(new ResponseEntity(new RulesResponse("lorem ipsum dolor sit amet",
dossierTemplate.getId(),
false),
org.springframework.http.HttpStatus.OK));
var response = rulesClient.upload(new RulesUploadRequestModel("lorem ipsum", dossierTemplate.getId(), RuleFileType.ENTITY, false));
assertThat(response.getStatusCode().value()).isEqualTo(HttpStatus.SC_OK);
@ -51,6 +60,9 @@ public class RulesTest extends AbstractPersistenceServerServiceTest {
assertThat(rulesClient.download(dossierTemplate.getId()).getRules()).isEqualTo("lorem ipsum");
response = rulesClient.upload(new RulesUploadRequestModel("lorem ipsum dolor sit amet", dossierTemplate.getId(), RuleFileType.ENTITY, false));
when(ruleBuilderClient.getRuleFileWithoutSystemRules(any(SystemRulesSeperationRequest.class))).thenReturn(new RulesResponse("lorem ipsum dolor sit amet",
dossierTemplate.getId(),
false));
assertThat(response.getStatusCode().value()).isEqualTo(HttpStatus.SC_OK);
assertThat(versionClient.getVersions(List.of(dossierTemplate.getId()))
.get(dossierTemplate.getId()).getRulesVersion()).isEqualTo(4);
@ -72,8 +84,7 @@ public class RulesTest extends AbstractPersistenceServerServiceTest {
// case 1: dry-run true, no error messages just warning messages
when(redactionClient.testRules(new RuleValidationModel(request.getRuleFileType().name(), request.getRules()))).thenReturn(DroolsValidation.builder()
.syntaxErrorMessages(Collections.emptyList())
.deprecatedWarnings(
warningMessages)
.deprecatedWarnings(warningMessages)
.build());
ResponseEntity<DroolsValidationResponse> response = rulesClient.upload(request);
@ -83,13 +94,13 @@ public class RulesTest extends AbstractPersistenceServerServiceTest {
assertThat(response.getBody().getDeprecatedWarnings()).isNotEmpty();
assertThat(versionClient.getVersions(List.of(dossierTemplate.getId()))
.get(dossierTemplate.getId()).getRulesVersion()).isEqualTo(2); //1. beim Anlegen des DossierTemplates; 2. bei provideTestTemplate()
.get(dossierTemplate.getId())
.getRulesVersion()).isEqualTo(3); //1. beim Anlegen des DossierTemplates; 2. bei provideTestTemplate(), 3. beim rules mergen on upload
// case 2: dry-run true, error messages and warning messages
when(redactionClient.testRules(new RuleValidationModel(request.getRuleFileType().name(), request.getRules()))).thenReturn(DroolsValidation.builder()
.syntaxErrorMessages(errorMessages)
.deprecatedWarnings(
warningMessages)
.deprecatedWarnings(warningMessages)
.build());
response = rulesClient.upload(request);
@ -117,8 +128,7 @@ public class RulesTest extends AbstractPersistenceServerServiceTest {
// case 1: dry-run false, error messages and warning messages
when(redactionClient.testRules(new RuleValidationModel(request.getRuleFileType().name(), request.getRules()))).thenReturn(DroolsValidation.builder()
.syntaxErrorMessages(errorMessages)
.deprecatedWarnings(
warningMessages)
.deprecatedWarnings(warningMessages)
.build());
try {
rulesClient.upload(request);
@ -127,13 +137,13 @@ public class RulesTest extends AbstractPersistenceServerServiceTest {
}
assertThat(versionClient.getVersions(List.of(dossierTemplate.getId()))
.get(dossierTemplate.getId()).getRulesVersion()).isEqualTo(2); //1. beim Anlegen des DossierTemplates; 2. bei provideTestTemplate()
.get(dossierTemplate.getId())
.getRulesVersion()).isEqualTo(3); //1. beim Anlegen des DossierTemplates; 2. bei provideTestTemplate(), 3. beim merge von user rules
// case 2: dry-run false, no error messages just warning messages
when(redactionClient.testRules(new RuleValidationModel(request.getRuleFileType().name(), request.getRules()))).thenReturn(DroolsValidation.builder()
.syntaxErrorMessages(Collections.emptyList())
.deprecatedWarnings(
warningMessages)
.deprecatedWarnings(warningMessages)
.build());
ResponseEntity<DroolsValidationResponse> response = rulesClient.upload(request);

View File

@ -5,9 +5,9 @@ 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.HttpStatus;
import org.springframework.http.ResponseEntity;
import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient;
@ -54,7 +54,7 @@ public class VersionsTest extends AbstractPersistenceServerServiceTest {
var rulesUploadRequest = new RulesUploadRequestModel("lorem ipsum", dossier.getDossierTemplateId(), RuleFileType.ENTITY, false);
ResponseEntity<DroolsValidationResponse> rulesResponse = rulesClient.upload(rulesUploadRequest);
assertThat(rulesResponse.getStatusCode().value()).isEqualTo(HttpStatus.OK);
assertThat(rulesResponse.getStatusCode().value()).isEqualTo(HttpStatus.SC_OK);
dictionaryClient.addType(CreateTypeValue.builder()
.type("type_dossier")

View File

@ -165,7 +165,7 @@ public abstract class AbstractPersistenceServerServiceTest {
@MockBean
protected EntityLogService entityLogService;
@MockBean
private RuleBuilderClient ruleBuilderClient;
protected RuleBuilderClient ruleBuilderClient;
@MockBean
protected PDFTronClient pdfTronRedactionClient;
@Autowired

View File

@ -19,5 +19,7 @@ public class RulesResponse {
@Schema(description = "Bad written rules can lead to timeouts or endless processing. This will be detected by the system and all analyse request for the rules will be rejected. This flag indicates that a timeout was detected and you need to fix the rules")
private boolean timeoutDetected;
@Schema(description = "validation result, only set when uploading rules")
private DroolsValidationResponse droolsValidationResponse;
}