Skip to content

Commit 2ea6aff

Browse files
authored
fix: Add UUID parameter to safe parameter names (#391)
1 parent 6fd9c1f commit 2ea6aff

2 files changed

Lines changed: 27 additions & 4 deletions

File tree

src/main/java/org/jenkinsci/plugins/gwt/ParameterActionUtil.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,13 @@
1212
import hudson.model.StringParameterValue;
1313
import java.util.List;
1414
import java.util.Map;
15+
import java.util.Set;
1516
import java.util.UUID;
1617

1718
public class ParameterActionUtil {
1819

20+
private static final String UUID_PARAMETER_NAME = "jenkins-generic-webhook-trigger-plugin_uuid";
21+
1922
public static ParametersAction createParameterAction(
2023
final ParametersDefinitionProperty parametersDefinitionProperty,
2124
final Map<String, String> resolvedVariables,
@@ -25,11 +28,9 @@ public static ParametersAction createParameterAction(
2528
final boolean triggerOneBuildPerInvocation = !allowSeveralTriggersPerBuild;
2629
if (triggerOneBuildPerInvocation) {
2730
parameterList.add(new StringParameterValue(
28-
"jenkins-generic-webhook-trigger-plugin_uuid",
29-
UUID.randomUUID().toString(),
30-
null));
31+
UUID_PARAMETER_NAME, UUID.randomUUID().toString(), null));
3132
}
32-
return new ParametersAction(parameterList);
33+
return new ParametersAction(parameterList, Set.of(UUID_PARAMETER_NAME));
3334
}
3435

3536
/** To keep any default values set there. */

src/test/java/org/jenkinsci/plugins/gwt/ParameterActionUtilTest.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,19 @@
22

33
import static org.assertj.core.api.Assertions.assertThat;
44
import static org.jenkinsci.plugins.gwt.ParameterActionUtil.createParameterAction;
5+
import static org.mockito.Mockito.mock;
56

67
import com.google.common.collect.ImmutableMap;
78
import hudson.model.BooleanParameterDefinition;
9+
import hudson.model.FreeStyleBuild;
10+
import hudson.model.FreeStyleProject;
811
import hudson.model.ParametersAction;
912
import hudson.model.ParametersDefinitionProperty;
1013
import hudson.model.StringParameterDefinition;
14+
import java.io.IOException;
1115
import java.util.HashMap;
1216
import java.util.Map;
17+
import org.junit.jupiter.api.AfterEach;
1318
import org.junit.jupiter.api.Test;
1419

1520
class ParameterActionUtilTest {
@@ -113,4 +118,21 @@ void testThatUniqueParameterIsAddedWhenallowSeveralTriggersPerBuildFalse() {
113118
assertThat(actualWithFalse.getAllParameters().get(0).getValue()) //
114119
.isNotNull();
115120
}
121+
122+
@Test
123+
void testThatParameterIsAccessible() throws IOException {
124+
final ParametersDefinitionProperty parametersDefinitionProperty = new ParametersDefinitionProperty();
125+
final ParametersAction actualWithFalse = createParameterAction(parametersDefinitionProperty, Map.of(), false);
126+
FreeStyleBuild mockBuild = new FreeStyleBuild(mock(FreeStyleProject.class));
127+
actualWithFalse.onAttached(mockBuild);
128+
assertThat(actualWithFalse.getParameters()) //
129+
.hasSize(1);
130+
assertThat(actualWithFalse.getParameters().get(0).getValue()) //
131+
.isNotNull();
132+
}
133+
134+
@AfterEach
135+
void tearDown() {
136+
System.clearProperty(ParametersAction.KEEP_UNDEFINED_PARAMETERS_SYSTEM_PROPERTY_NAME);
137+
}
116138
}

0 commit comments

Comments
 (0)