33import static org .junit .Assert .assertEquals ;
44import static org .junit .Assert .assertTrue ;
55
6- import jakarta .servlet .ServletRequest ;
76import java .net .URL ;
87import jenkins .model .Jenkins ;
98import org .htmlunit .HttpMethod ;
@@ -22,16 +21,7 @@ public class ConfigurationAsCodeApiTest {
2221
2322 @ Test
2423 public void testDoConfigure_RequiresPost () throws Exception {
25- j .jenkins .setSecurityRealm (j .createDummySecurityRealm ());
26-
27- j .jenkins .setAuthorizationStrategy (new MockAuthorizationStrategy ()
28- .grant (jenkins .model .Jenkins .ADMINISTER )
29- .everywhere ()
30- .to ("admin" ));
31-
3224 WebClient wc = j .createWebClient ();
33- j .jenkins .setSecurityRealm (j .createDummySecurityRealm ());
34- wc .login ("admin" , "admin" );
3525 wc .setThrowExceptionOnFailingStatusCode (false );
3626
3727 WebRequest request = new WebRequest (new URL (j .getURL (), "configuration-as-code/configure" ), HttpMethod .GET );
@@ -42,28 +32,20 @@ public void testDoConfigure_RequiresPost() throws Exception {
4232
4333 @ Test
4434 public void testDoConfigure_Success () throws Exception {
45- j .jenkins .setSecurityRealm (j .createDummySecurityRealm ());
35+ WebClient wc = j .createWebClient ();
36+ wc .setThrowExceptionOnFailingStatusCode (false );
4637
38+ j .jenkins .setSecurityRealm (j .createDummySecurityRealm ());
4739 j .jenkins .setAuthorizationStrategy (new MockAuthorizationStrategy ()
48- .grant (jenkins . model . Jenkins .ADMINISTER )
40+ .grant (Jenkins .ADMINISTER )
4941 .everywhere ()
5042 .to ("admin" ));
5143
52- WebClient wc = j .createWebClient ();
53- j .jenkins .setSecurityRealm (j .createDummySecurityRealm ());
54- wc .login ("admin" , "admin" );
55- wc .setThrowExceptionOnFailingStatusCode (false );
56-
5744 WebRequest request = new WebRequest (new URL (j .getURL (), "configuration-as-code/configure" ), HttpMethod .POST );
5845 request .setAdditionalHeader ("Content-Type" , "application/yaml" );
5946 request .setRequestBody ("jenkins:\n systemMessage: 'Webhook Success'" );
6047
61- var crumbIssuer = j .jenkins .getCrumbIssuer ();
62-
63- if (crumbIssuer != null ) {
64- request .setAdditionalHeader (
65- crumbIssuer .getCrumbRequestField (), crumbIssuer .getCrumb ((ServletRequest ) null ));
66- }
48+ wc .withBasicApiToken ("admin" );
6749
6850 WebResponse response = wc .getPage (request ).getWebResponse ();
6951
@@ -73,28 +55,21 @@ public void testDoConfigure_Success() throws Exception {
7355
7456 @ Test
7557 public void testDoConfigure_InvalidYaml () throws Exception {
76- j .jenkins .setSecurityRealm (j .createDummySecurityRealm ());
58+ WebClient wc = j .createWebClient ();
59+ wc .setThrowExceptionOnFailingStatusCode (false );
7760
61+ j .jenkins .setSecurityRealm (j .createDummySecurityRealm ());
7862 j .jenkins .setAuthorizationStrategy (new MockAuthorizationStrategy ()
79- .grant (jenkins . model . Jenkins .ADMINISTER )
63+ .grant (Jenkins .ADMINISTER )
8064 .everywhere ()
8165 .to ("admin" ));
8266
83- WebClient wc = j .createWebClient ();
84- j .jenkins .setSecurityRealm (j .createDummySecurityRealm ());
85- wc .login ("admin" , "admin" );
86- wc .setThrowExceptionOnFailingStatusCode (false );
87-
8867 WebRequest request = new WebRequest (new URL (j .getURL (), "configuration-as-code/configure" ), HttpMethod .POST );
8968
69+ request .setAdditionalHeader ("Content-Type" , "application/yaml" );
9070 request .setRequestBody ("jenkins:\n systemMessage: [invalid" );
9171
92- var crumbIssuer = j .jenkins .getCrumbIssuer ();
93-
94- if (crumbIssuer != null ) {
95- request .setAdditionalHeader (
96- crumbIssuer .getCrumbRequestField (), crumbIssuer .getCrumb ((ServletRequest ) null ));
97- }
72+ wc .withBasicApiToken ("admin" );
9873
9974 WebResponse response = wc .getPage (request ).getWebResponse ();
10075
@@ -114,18 +89,12 @@ public void testDoConfigure_NonAdminForbidden() throws Exception {
11489 .to ("admin" ));
11590
11691 WebClient wc = j .createWebClient ();
117- wc .login ("user" , "user" );
11892 wc .setThrowExceptionOnFailingStatusCode (false );
11993
12094 WebRequest request = new WebRequest (new URL (j .getURL (), "configuration-as-code/configure" ), HttpMethod .POST );
12195 request .setRequestBody ("jenkins:\n systemMessage: 'fail'" );
12296
123- var crumbIssuer = j .jenkins .getCrumbIssuer ();
124-
125- if (crumbIssuer != null ) {
126- request .setAdditionalHeader (
127- crumbIssuer .getCrumbRequestField (), crumbIssuer .getCrumb ((ServletRequest ) null ));
128- }
97+ wc .withBasicApiToken ("user" );
12998
13099 WebResponse response = wc .getPage (request ).getWebResponse ();
131100
@@ -152,28 +121,6 @@ public void testDoConfigure_Unauthenticated() throws Exception {
152121 assertEquals (403 , response .getStatusCode ());
153122 }
154123
155- @ Test
156- public void testDoConfigure_MissingCrumb () throws Exception {
157- j .jenkins .setSecurityRealm (j .createDummySecurityRealm ());
158- j .jenkins .setAuthorizationStrategy (new MockAuthorizationStrategy ()
159- .grant (Jenkins .ADMINISTER )
160- .everywhere ()
161- .to ("admin" ));
162-
163- WebClient wc = j .createWebClient ();
164- wc .login ("admin" , "admin" );
165- wc .setThrowExceptionOnFailingStatusCode (false );
166-
167- WebRequest request = new WebRequest (new URL (j .getURL (), "configuration-as-code/configure" ), HttpMethod .POST );
168-
169- request .setRequestBody ("jenkins:\n systemMessage: 'no crumb'" );
170-
171- WebResponse response = wc .getPage (request ).getWebResponse ();
172-
173- assertEquals (403 , response .getStatusCode ());
174- assertTrue (response .getContentAsString ().contains ("No valid crumb" ));
175- }
176-
177124 @ Test
178125 public void testDoConfigure_EmptyBody () throws Exception {
179126 j .jenkins .setSecurityRealm (j .createDummySecurityRealm ());
@@ -183,19 +130,13 @@ public void testDoConfigure_EmptyBody() throws Exception {
183130 .to ("admin" ));
184131
185132 WebClient wc = j .createWebClient ();
186- wc .login ("admin" , "admin" );
187133
188134 wc .setThrowExceptionOnFailingStatusCode (false );
189135
190136 WebRequest request = new WebRequest (new URL (j .getURL (), "configuration-as-code/configure" ), HttpMethod .POST );
191137 request .setAdditionalHeader ("Content-Type" , "application/yaml" );
192138
193- var crumbIssuer = j .jenkins .getCrumbIssuer ();
194-
195- if (crumbIssuer != null ) {
196- request .setAdditionalHeader (
197- crumbIssuer .getCrumbRequestField (), crumbIssuer .getCrumb ((ServletRequest ) null ));
198- }
139+ wc .withBasicApiToken ("admin" );
199140
200141 WebResponse response = wc .getPage (request ).getWebResponse ();
201142
@@ -205,28 +146,20 @@ public void testDoConfigure_EmptyBody() throws Exception {
205146
206147 @ Test
207148 public void testDoConfigure_MalformedStructure () throws Exception {
208- j .jenkins .setSecurityRealm (j .createDummySecurityRealm ());
149+ WebClient wc = j .createWebClient ();
150+ wc .setThrowExceptionOnFailingStatusCode (false );
209151
152+ j .jenkins .setSecurityRealm (j .createDummySecurityRealm ());
210153 j .jenkins .setAuthorizationStrategy (new MockAuthorizationStrategy ()
211- .grant (jenkins . model . Jenkins .ADMINISTER )
154+ .grant (Jenkins .ADMINISTER )
212155 .everywhere ()
213156 .to ("admin" ));
214157
215- WebClient wc = j .createWebClient ();
216- j .jenkins .setSecurityRealm (j .createDummySecurityRealm ());
217- wc .login ("admin" , "admin" );
218- wc .setThrowExceptionOnFailingStatusCode (false );
219-
220158 WebRequest request = new WebRequest (new URL (j .getURL (), "configuration-as-code/configure" ), HttpMethod .POST );
221159 request .setAdditionalHeader ("Content-Type" , "application/yaml" );
222160 request .setRequestBody ("jenkins:\n invalidRoot:\n foo: bar" );
223161
224- var crumbIssuer = j .jenkins .getCrumbIssuer ();
225-
226- if (crumbIssuer != null ) {
227- request .setAdditionalHeader (
228- crumbIssuer .getCrumbRequestField (), crumbIssuer .getCrumb ((ServletRequest ) null ));
229- }
162+ wc .withBasicApiToken ("admin" );
230163
231164 WebResponse response = wc .getPage (request ).getWebResponse ();
232165
@@ -241,19 +174,13 @@ public void testDoConfigure_ValidYaml_NoChanges() throws Exception {
241174 .grant (Jenkins .ADMINISTER )
242175 .everywhere ()
243176 .to ("admin" ));
244-
245177 WebClient wc = j .createWebClient ();
246- wc .login ( "admin" , "admin" );
178+ wc .withBasicApiToken ( "admin" );
247179 wc .setThrowExceptionOnFailingStatusCode (false );
248180
249181 WebRequest request1 = new WebRequest (new URL (j .getURL (), "configuration-as-code/configure" ), HttpMethod .POST );
250182 request1 .setAdditionalHeader ("Content-Type" , "application/yaml" );
251183 request1 .setRequestBody ("jenkins:\n systemMessage: 'Idempotency Test'" );
252- var crumbIssuer = j .jenkins .getCrumbIssuer ();
253- if (crumbIssuer != null ) {
254- request1 .setAdditionalHeader (
255- crumbIssuer .getCrumbRequestField (), crumbIssuer .getCrumb ((ServletRequest ) null ));
256- }
257184
258185 WebResponse response1 = wc .getPage (request1 ).getWebResponse ();
259186 assertEquals (200 , response1 .getStatusCode ());
@@ -262,37 +189,9 @@ public void testDoConfigure_ValidYaml_NoChanges() throws Exception {
262189 WebRequest request2 = new WebRequest (new URL (j .getURL (), "configuration-as-code/configure" ), HttpMethod .POST );
263190 request2 .setAdditionalHeader ("Content-Type" , "application/yaml" );
264191 request2 .setRequestBody ("jenkins:\n systemMessage: 'Idempotency Test'" );
265- if (crumbIssuer != null ) {
266- request2 .setAdditionalHeader (
267- crumbIssuer .getCrumbRequestField (), crumbIssuer .getCrumb ((ServletRequest ) null ));
268- }
269192
270193 WebResponse response2 = wc .getPage (request2 ).getWebResponse ();
271-
272194 assertEquals (200 , response2 .getStatusCode ());
273195 assertEquals ("Idempotency Test" , j .jenkins .getSystemMessage ());
274196 }
275-
276- @ Test
277- public void testDoConfigure_WithApiToken_NoCrumb () throws Exception {
278- j .jenkins .setSecurityRealm (j .createDummySecurityRealm ());
279- j .jenkins .setAuthorizationStrategy (new MockAuthorizationStrategy ()
280- .grant (Jenkins .ADMINISTER )
281- .everywhere ()
282- .to ("admin" ));
283-
284- WebClient wc = j .createWebClient ();
285-
286- wc .withBasicApiToken ("admin" );
287- wc .setThrowExceptionOnFailingStatusCode (false );
288-
289- WebRequest request = new WebRequest (new URL (j .getURL (), "configuration-as-code/configure" ), HttpMethod .POST );
290- request .setAdditionalHeader ("Content-Type" , "application/yaml" );
291- request .setRequestBody ("jenkins:\n systemMessage: 'API Token Success'" );
292-
293- WebResponse response = wc .getPage (request ).getWebResponse ();
294-
295- assertEquals (200 , response .getStatusCode ());
296- assertEquals ("API Token Success" , j .jenkins .getSystemMessage ());
297- }
298197}
0 commit comments