From 1c5936541e820f68b6cd8d825cccc5eb98fbea0f Mon Sep 17 00:00:00 2001 From: unity-idm-agent Date: Sun, 24 May 2026 18:41:45 +0000 Subject: [PATCH 1/2] UY-XXXX update form layouts after policy reset --- .../GroupDelegationConfigGeneratorImpl.java | 3 +++ .../TestGroupDelegationConfigGenerator.java | 27 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/engine/src/main/java/pl/edu/icm/unity/engine/utils/GroupDelegationConfigGeneratorImpl.java b/engine/src/main/java/pl/edu/icm/unity/engine/utils/GroupDelegationConfigGeneratorImpl.java index 5a747a2787..47689c65a3 100644 --- a/engine/src/main/java/pl/edu/icm/unity/engine/utils/GroupDelegationConfigGeneratorImpl.java +++ b/engine/src/main/java/pl/edu/icm/unity/engine/utils/GroupDelegationConfigGeneratorImpl.java @@ -36,6 +36,7 @@ import pl.edu.icm.unity.base.registration.EnquiryForm; import pl.edu.icm.unity.base.registration.EnquiryFormBuilder; import pl.edu.icm.unity.base.registration.EnquiryFormNotifications; +import pl.edu.icm.unity.base.registration.FormLayoutUtils; import pl.edu.icm.unity.base.registration.FormType; import pl.edu.icm.unity.base.registration.GroupRegistrationParam; import pl.edu.icm.unity.base.registration.ParameterRetrievalSettings; @@ -426,6 +427,7 @@ public void resetFormsPolicies(String formName, FormType formType, List pr for (Long policyDocumentId : projectPolicyDocumentsIds) { addPolicyParam(form.getPolicyAgreements(), policyDocumentId); } + FormLayoutUtils.updateRegistrationFormLayout(form.getFormLayouts(), form); regFormDB.update(form); } else if (formType.equals(FormType.ENQUIRY)) @@ -435,6 +437,7 @@ else if (formType.equals(FormType.ENQUIRY)) for (Long policyDocumentId : projectPolicyDocumentsIds) { addPolicyParam(form.getPolicyAgreements(), policyDocumentId); } + FormLayoutUtils.updateEnquiryLayout(form.getLayout(), form); enqFormDB.update(form); } diff --git a/engine/src/test/java/pl/edu/icm/unity/engine/project/TestGroupDelegationConfigGenerator.java b/engine/src/test/java/pl/edu/icm/unity/engine/project/TestGroupDelegationConfigGenerator.java index 2e055f8fff..fe41a3c07c 100644 --- a/engine/src/test/java/pl/edu/icm/unity/engine/project/TestGroupDelegationConfigGenerator.java +++ b/engine/src/test/java/pl/edu/icm/unity/engine/project/TestGroupDelegationConfigGenerator.java @@ -38,8 +38,12 @@ import pl.edu.icm.unity.base.registration.BaseFormNotifications; import pl.edu.icm.unity.base.registration.EnquiryForm; import pl.edu.icm.unity.base.registration.EnquiryFormBuilder; +import pl.edu.icm.unity.base.registration.FormType; import pl.edu.icm.unity.base.registration.RegistrationForm; import pl.edu.icm.unity.base.registration.RegistrationFormBuilder; +import pl.edu.icm.unity.base.registration.layout.FormLayout; +import pl.edu.icm.unity.base.registration.layout.FormLayoutElement; +import pl.edu.icm.unity.base.registration.layout.FormParameterElement; import pl.edu.icm.unity.base.translation.TranslationProfile; import pl.edu.icm.unity.base.translation.TranslationRule; import pl.edu.icm.unity.engine.api.translation.form.TranslatedRegistrationRequest.AutomaticRequestAction; @@ -244,6 +248,29 @@ public void shouldValidateUpdateEnquiryForm() throws EngineException assertThat(errors.size()).isEqualTo(0); } + @Test + public void shouldUpdateCustomEnquiryLayoutWhenProjectPoliciesAreReset() throws EngineException + { + when(mockPolicyDocumentDB.getByKey(2L)).thenReturn(new StoredPolicyDocument(2L, "Policy")); + EnquiryForm form = new EnquiryFormBuilder() + .withName("aenSuffix") + .withTargetGroups(new String[] { "/" }) + .withType(EnquiryForm.EnquiryType.STICKY) + .withAddedGroupParam() + .withGroupPath("/A/?*/**") + .endGroupParam() + .withLayout(new FormLayout(List.of(new FormParameterElement(FormLayoutElement.GROUP, 0)))) + .build(); + when(mockEnqFormDB.get(eq("aenSuffix"))).thenReturn(form); + + generator.resetFormsPolicies("aenSuffix", FormType.ENQUIRY, List.of(2L)); + + assertThat(form.getPolicyAgreements()).hasSize(1); + assertThat(form.getLayout().getElements()).containsExactly( + new FormParameterElement(FormLayoutElement.GROUP, 0), + new FormParameterElement(FormLayoutElement.POLICY_AGREEMENT, 0)); + } + @Test public void shouldThrowValidationErrorsWhenRegistrationFormIsIncorrect() throws EngineException { From 81a5ffce3a1ca2e51dd8a8734976b42e3d25f41a Mon Sep 17 00:00:00 2001 From: unity-idm-agent Date: Sun, 24 May 2026 18:55:44 +0000 Subject: [PATCH 2/2] Harden policy layout reset test --- .../engine/project/TestGroupDelegationConfigGenerator.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/engine/src/test/java/pl/edu/icm/unity/engine/project/TestGroupDelegationConfigGenerator.java b/engine/src/test/java/pl/edu/icm/unity/engine/project/TestGroupDelegationConfigGenerator.java index fe41a3c07c..743b40f619 100644 --- a/engine/src/test/java/pl/edu/icm/unity/engine/project/TestGroupDelegationConfigGenerator.java +++ b/engine/src/test/java/pl/edu/icm/unity/engine/project/TestGroupDelegationConfigGenerator.java @@ -8,6 +8,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import java.util.Arrays; @@ -269,6 +270,7 @@ public void shouldUpdateCustomEnquiryLayoutWhenProjectPoliciesAreReset() throws assertThat(form.getLayout().getElements()).containsExactly( new FormParameterElement(FormLayoutElement.GROUP, 0), new FormParameterElement(FormLayoutElement.POLICY_AGREEMENT, 0)); + verify(mockEnqFormDB).update(form); } @Test