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