This is an automated email from the ASF dual-hosted git repository.

pvillard31 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/main by this push:
     new e505be833d4 NIFI-16275 Add Parameter Context regression coverage 
(#11610)
e505be833d4 is described below

commit e505be833d447c5b879be0d7a9410d21f2706827
Author: skeossei <[email protected]>
AuthorDate: Wed Sep 2 10:04:11 2026 -0700

    NIFI-16275 Add Parameter Context regression coverage (#11610)
    
    Verify deleting a local override reveals its inherited value and updating a 
referenced local Parameter preserves the raw reference expression.
---
 .../system/parameters/ParameterContextIT.java      | 57 ++++++++++++++++++++++
 1 file changed, 57 insertions(+)

diff --git 
a/nifi-system-tests/nifi-system-test-suite/src/test/java/org/apache/nifi/tests/system/parameters/ParameterContextIT.java
 
b/nifi-system-tests/nifi-system-test-suite/src/test/java/org/apache/nifi/tests/system/parameters/ParameterContextIT.java
index 65dcb282961..78b7e6e129e 100644
--- 
a/nifi-system-tests/nifi-system-test-suite/src/test/java/org/apache/nifi/tests/system/parameters/ParameterContextIT.java
+++ 
b/nifi-system-tests/nifi-system-test-suite/src/test/java/org/apache/nifi/tests/system/parameters/ParameterContextIT.java
@@ -56,6 +56,7 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -1169,6 +1170,62 @@ public class ParameterContextIT extends NiFiSystemIT {
         assertEquals(childContext2.getId(), 
updatedParent.getComponent().getInheritedParameterContexts().get(0).getId());
     }
 
+    @Test
+    public void testDeleteLocalParameterOverrideRevealsInheritedParameter() 
throws NiFiClientException, IOException, InterruptedException {
+        final ParameterContextEntity parentContext = 
getClientUtil().createParameterContext("overrideParent", Map.of("shared", 
"parent-value"));
+        final ParameterContextEntity childContext = 
getClientUtil().createParameterContext("overrideChild",
+                Map.of("shared", "child-value"), 
List.of(parentContext.getId()), null);
+
+        final ParameterContextEntity fetchedChild = 
getNifiClient().getParamContextClient().getParamContext(childContext.getId(), 
true);
+        final ParameterEntity localOverride = 
fetchedChild.getComponent().getParameters().stream()
+                .filter(parameter -> 
"shared".equals(parameter.getParameter().getName()))
+                .findFirst()
+                .orElse(null);
+        assertNotNull(localOverride);
+        assertFalse(localOverride.getParameter().getInherited());
+        assertEquals("child-value", localOverride.getParameter().getValue());
+
+        final ParameterDTO deletionDto = new ParameterDTO();
+        deletionDto.setName("shared");
+        final ParameterEntity deletionEntity = new ParameterEntity();
+        deletionEntity.setParameter(deletionDto);
+        fetchedChild.getComponent().setParameters(Set.of(deletionEntity));
+
+        final ParameterContextUpdateRequestEntity deleteRequest = 
getNifiClient().getParamContextClient().updateParamContext(fetchedChild);
+        
getClientUtil().waitForParameterContextRequestToComplete(childContext.getId(), 
deleteRequest.getRequest().getRequestId());
+
+        final ParameterContextEntity updatedChildLocal = 
getNifiClient().getParamContextClient().getParamContext(childContext.getId(), 
false);
+        assertTrue(updatedChildLocal.getComponent().getParameters().stream()
+                .noneMatch(parameter -> 
"shared".equals(parameter.getParameter().getName())));
+
+        final ParameterContextEntity updatedChildEffective = 
getNifiClient().getParamContextClient().getParamContext(childContext.getId(), 
true);
+        final ParameterEntity inheritedParameter = 
updatedChildEffective.getComponent().getParameters().stream()
+                .filter(parameter -> 
"shared".equals(parameter.getParameter().getName()))
+                .findFirst()
+                .orElse(null);
+        assertNotNull(inheritedParameter);
+        assertTrue(inheritedParameter.getParameter().getInherited());
+        assertEquals("parent-value", 
inheritedParameter.getParameter().getValue());
+        assertEquals(parentContext.getId(), 
inheritedParameter.getParameter().getParameterContext().getId());
+    }
+
+    @Test
+    public void testUpdateReferencedLocalParameterPreservesRawReference() 
throws NiFiClientException, IOException, InterruptedException {
+        final ParameterContextEntity context = 
getClientUtil().createParameterContext("localReferenceContext",
+                Map.of("X", "original", "Y", "#{X}"));
+
+        final ParameterContextUpdateRequestEntity updateRequest = 
updateParameterContext(context, "X", "updated");
+        
getClientUtil().waitForParameterContextRequestToComplete(context.getId(), 
updateRequest.getRequest().getRequestId());
+
+        final ParameterContextEntity updatedContext = 
getNifiClient().getParamContextClient().getParamContext(context.getId(), false);
+        final Map<String, ParameterDTO> parameters = 
updatedContext.getComponent().getParameters().stream()
+                .map(ParameterEntity::getParameter)
+                .collect(Collectors.toMap(ParameterDTO::getName, 
Function.identity()));
+
+        assertEquals("updated", parameters.get("X").getValue());
+        assertEquals("#{X}", parameters.get("Y").getValue());
+    }
+
     @Test
     public void testAssetReferenceAfterRestart() throws NiFiClientException, 
IOException, InterruptedException {
         // Create Parameter Context

Reply via email to