11package org .jenkins .plugins .lockableresources .queue ;
22
3+ import static org .junit .jupiter .api .Assertions .assertEquals ;
34import static org .junit .jupiter .api .Assertions .assertFalse ;
5+ import static org .junit .jupiter .api .Assertions .assertNotNull ;
46import static org .junit .jupiter .api .Assertions .assertTrue ;
7+ import static org .mockito .Mockito .mock ;
8+ import static org .mockito .Mockito .when ;
59
10+ import hudson .EnvVars ;
11+ import hudson .model .ParameterValue ;
12+ import hudson .model .ParametersAction ;
13+ import hudson .model .Queue ;
14+ import hudson .model .StringParameterValue ;
15+ import java .util .Collections ;
16+ import java .util .List ;
617import org .junit .jupiter .api .Test ;
718
819class UtilsTest {
920
21+ // -----------------------------------------------------------------------
22+ // containsVariable()
23+ // -----------------------------------------------------------------------
24+
1025 @ Test
1126 void containsVariable () {
1227 assertTrue (Utils .containsVariable ("${MY_PARAM}" ));
@@ -20,4 +35,120 @@ void containsVariable() {
2035 assertFalse (Utils .containsVariable ("$NOT_A_VAR" ));
2136 assertFalse (Utils .containsVariable ("${}" )); // empty var name
2237 }
38+
39+ // -----------------------------------------------------------------------
40+ // getParametersAsEnvVars()
41+ // -----------------------------------------------------------------------
42+
43+ @ Test
44+ void getParametersAsEnvVars_noActions () {
45+ Queue .Item item = mock (Queue .Item .class );
46+ when (item .getActions (ParametersAction .class )).thenReturn (Collections .emptyList ());
47+
48+ EnvVars env = Utils .getParametersAsEnvVars (item );
49+
50+ assertNotNull (env );
51+ assertTrue (env .isEmpty ());
52+ }
53+
54+ @ Test
55+ void getParametersAsEnvVars_singleParam () {
56+ StringParameterValue param = new StringParameterValue ("RESOURCE" , "my-resource" );
57+ ParametersAction action = new ParametersAction (param );
58+
59+ Queue .Item item = mock (Queue .Item .class );
60+ when (item .getActions (ParametersAction .class )).thenReturn (List .of (action ));
61+
62+ EnvVars env = Utils .getParametersAsEnvVars (item );
63+
64+ assertEquals (1 , env .size ());
65+ assertEquals ("my-resource" , env .get ("RESOURCE" ));
66+ }
67+
68+ @ Test
69+ void getParametersAsEnvVars_multipleParams () {
70+ StringParameterValue p1 = new StringParameterValue ("RESOURCE_NAME" , "res-1" );
71+ StringParameterValue p2 = new StringParameterValue ("LABEL" , "team-alpha" );
72+ StringParameterValue p3 = new StringParameterValue ("COUNT" , "3" );
73+ ParametersAction action = new ParametersAction (p1 , p2 , p3 );
74+
75+ Queue .Item item = mock (Queue .Item .class );
76+ when (item .getActions (ParametersAction .class )).thenReturn (List .of (action ));
77+
78+ EnvVars env = Utils .getParametersAsEnvVars (item );
79+
80+ assertEquals (3 , env .size ());
81+ assertEquals ("res-1" , env .get ("RESOURCE_NAME" ));
82+ assertEquals ("team-alpha" , env .get ("LABEL" ));
83+ assertEquals ("3" , env .get ("COUNT" ));
84+ }
85+
86+ @ Test
87+ void getParametersAsEnvVars_multipleActions () {
88+ StringParameterValue p1 = new StringParameterValue ("A" , "val-a" );
89+ ParametersAction action1 = new ParametersAction (p1 );
90+ StringParameterValue p2 = new StringParameterValue ("B" , "val-b" );
91+ ParametersAction action2 = new ParametersAction (p2 );
92+
93+ Queue .Item item = mock (Queue .Item .class );
94+ when (item .getActions (ParametersAction .class )).thenReturn (List .of (action1 , action2 ));
95+
96+ EnvVars env = Utils .getParametersAsEnvVars (item );
97+
98+ assertEquals (2 , env .size ());
99+ assertEquals ("val-a" , env .get ("A" ));
100+ assertEquals ("val-b" , env .get ("B" ));
101+ }
102+
103+ @ Test
104+ void getParametersAsEnvVars_nullValueSkipped () {
105+ ParameterValue nullValParam = mock (ParameterValue .class );
106+ when (nullValParam .getName ()).thenReturn ("NULL_PARAM" );
107+ when (nullValParam .getValue ()).thenReturn (null );
108+
109+ StringParameterValue goodParam = new StringParameterValue ("GOOD" , "ok" );
110+ ParametersAction action = mock (ParametersAction .class );
111+ when (action .getParameters ()).thenReturn (List .of (nullValParam , goodParam ));
112+
113+ Queue .Item item = mock (Queue .Item .class );
114+ when (item .getActions (ParametersAction .class )).thenReturn (List .of (action ));
115+
116+ EnvVars env = Utils .getParametersAsEnvVars (item );
117+
118+ assertEquals (1 , env .size ());
119+ assertEquals ("ok" , env .get ("GOOD" ));
120+ assertFalse (env .containsKey ("NULL_PARAM" ));
121+ }
122+
123+ @ Test
124+ void getParametersAsEnvVars_nonStringValueConvertedToString () {
125+ ParameterValue intParam = mock (ParameterValue .class );
126+ when (intParam .getName ()).thenReturn ("NUM" );
127+ when (intParam .getValue ()).thenReturn (42 );
128+
129+ ParametersAction action = mock (ParametersAction .class );
130+ when (action .getParameters ()).thenReturn (List .of (intParam ));
131+
132+ Queue .Item item = mock (Queue .Item .class );
133+ when (item .getActions (ParametersAction .class )).thenReturn (List .of (action ));
134+
135+ EnvVars env = Utils .getParametersAsEnvVars (item );
136+
137+ assertEquals ("42" , env .get ("NUM" ));
138+ }
139+
140+ @ Test
141+ void getParametersAsEnvVars_laterActionOverridesEarlier () {
142+ StringParameterValue p1 = new StringParameterValue ("KEY" , "first" );
143+ ParametersAction action1 = new ParametersAction (p1 );
144+ StringParameterValue p2 = new StringParameterValue ("KEY" , "second" );
145+ ParametersAction action2 = new ParametersAction (p2 );
146+
147+ Queue .Item item = mock (Queue .Item .class );
148+ when (item .getActions (ParametersAction .class )).thenReturn (List .of (action1 , action2 ));
149+
150+ EnvVars env = Utils .getParametersAsEnvVars (item );
151+
152+ assertEquals ("second" , env .get ("KEY" ));
153+ }
23154}
0 commit comments