Skip to content

Commit 54ab408

Browse files
committed
Cleanup test
1 parent 9afed0e commit 54ab408

1 file changed

Lines changed: 91 additions & 113 deletions

File tree

Lines changed: 91 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package io.jenkins.plugins.casc;
22

3-
import static org.junit.Assert.assertEquals;
4-
import static org.junit.Assert.assertTrue;
3+
import static org.hamcrest.MatcherAssert.assertThat;
4+
import static org.hamcrest.Matchers.containsString;
5+
import static org.hamcrest.Matchers.is;
56

67
import java.net.URL;
78
import jenkins.model.Jenkins;
@@ -11,85 +12,89 @@
1112
import org.junit.Rule;
1213
import org.junit.Test;
1314
import org.jvnet.hudson.test.JenkinsRule;
14-
import org.jvnet.hudson.test.JenkinsRule.WebClient;
1515
import org.jvnet.hudson.test.MockAuthorizationStrategy;
1616

1717
public class ConfigurationAsCodeApiTest {
1818

1919
@Rule
2020
public JenkinsRule j = new JenkinsRule();
2121

22-
@Test
23-
public void testDoConfigure_RequiresPost() throws Exception {
24-
WebClient wc = j.createWebClient();
25-
wc.setThrowExceptionOnFailingStatusCode(false);
26-
27-
WebRequest request = new WebRequest(new URL(j.getURL(), "configuration-as-code/configure"), HttpMethod.GET);
28-
WebResponse response = wc.getPage(request).getWebResponse();
22+
private static final String ENDPOINT = "configuration-as-code/configure";
23+
private static final String YAML_CONTENT_TYPE = "application/yaml";
24+
private static final String ADMIN = "admin";
2925

30-
assertTrue(response.getStatusCode() == 404 || response.getStatusCode() == 405);
26+
private WebRequest webRequest(HttpMethod method) throws Exception {
27+
return new WebRequest(new URL(j.getURL(), ENDPOINT), method);
3128
}
3229

33-
@Test
34-
public void testDoConfigure_Success() throws Exception {
35-
WebClient wc = j.createWebClient();
36-
wc.setThrowExceptionOnFailingStatusCode(false);
30+
private WebRequest yamlPost(String requestBody) throws Exception {
31+
WebRequest request = webRequest(HttpMethod.POST);
32+
request.setAdditionalHeader("Content-Type", YAML_CONTENT_TYPE);
33+
if (requestBody != null) {
34+
request.setRequestBody(requestBody);
35+
}
36+
return request;
37+
}
3738

39+
private void configureAdminSecurity() {
3840
j.jenkins.setSecurityRealm(j.createDummySecurityRealm());
3941
j.jenkins.setAuthorizationStrategy(new MockAuthorizationStrategy()
4042
.grant(Jenkins.ADMINISTER)
4143
.everywhere()
42-
.to("admin"));
43-
44-
WebRequest request = new WebRequest(new URL(j.getURL(), "configuration-as-code/configure"), HttpMethod.POST);
45-
request.setAdditionalHeader("Content-Type", "application/yaml");
46-
request.setRequestBody("jenkins:\n systemMessage: 'Webhook Success'");
47-
48-
wc.withBasicApiToken("admin");
44+
.to(ADMIN));
45+
}
4946

50-
WebResponse response = wc.getPage(request).getWebResponse();
47+
@Test
48+
public void testDoConfigure_RequiresPost() throws Exception {
49+
try (JenkinsRule.WebClient wc = j.createWebClient()) {
50+
wc.setThrowExceptionOnFailingStatusCode(false);
5151

52-
assertEquals(200, response.getStatusCode());
53-
assertEquals("Webhook Success", j.jenkins.getSystemMessage());
52+
WebResponse response = wc.getPage(webRequest(HttpMethod.GET)).getWebResponse();
53+
assertThat(response.getStatusCode(), is(405));
54+
}
5455
}
5556

5657
@Test
57-
public void testDoConfigure_InvalidYaml() throws Exception {
58-
WebClient wc = j.createWebClient();
59-
wc.setThrowExceptionOnFailingStatusCode(false);
58+
public void testDoConfigure_Success() throws Exception {
59+
configureAdminSecurity();
6060

61-
j.jenkins.setSecurityRealm(j.createDummySecurityRealm());
62-
j.jenkins.setAuthorizationStrategy(new MockAuthorizationStrategy()
63-
.grant(Jenkins.ADMINISTER)
64-
.everywhere()
65-
.to("admin"));
61+
try (JenkinsRule.WebClient wc = j.createWebClient().withBasicApiToken(ADMIN)) {
62+
wc.setThrowExceptionOnFailingStatusCode(false);
6663

67-
WebRequest request = new WebRequest(new URL(j.getURL(), "configuration-as-code/configure"), HttpMethod.POST);
64+
WebResponse response = wc.getPage(yamlPost("jenkins:\n systemMessage: 'Webhook Success'"))
65+
.getWebResponse();
6866

69-
request.setAdditionalHeader("Content-Type", "application/yaml");
70-
request.setRequestBody("jenkins:\n systemMessage: [invalid");
67+
assertThat(response.getStatusCode(), is(200));
68+
assertThat(j.jenkins.getSystemMessage(), is("Webhook Success"));
69+
}
70+
}
7171

72-
wc.withBasicApiToken("admin");
72+
@Test
73+
public void testDoConfigure_InvalidYaml() throws Exception {
74+
configureAdminSecurity();
75+
76+
try (JenkinsRule.WebClient wc = j.createWebClient().withBasicApiToken(ADMIN)) {
77+
wc.setThrowExceptionOnFailingStatusCode(false);
7378

74-
WebResponse response = wc.getPage(request).getWebResponse();
79+
WebResponse response =
80+
wc.getPage(yamlPost("jenkins:\n systemMessage: [invalid")).getWebResponse();
7581

76-
assertEquals(400, response.getStatusCode());
77-
assertTrue(response.getContentAsString().contains("message"));
82+
assertThat(response.getStatusCode(), is(400));
83+
assertThat(response.getContentAsString(), containsString("message"));
84+
}
7885
}
7986

8087
@Test
8188
public void testDoConfigure_NonAdminForbidden() throws Exception {
82-
WebClient wc = j.createWebClient();
83-
wc.setThrowExceptionOnFailingStatusCode(false);
84-
85-
WebRequest request = new WebRequest(new URL(j.getURL(), "configuration-as-code/configure"), HttpMethod.POST);
86-
request.setRequestBody("jenkins:\n systemMessage: 'fail'");
87-
88-
wc.withBasicApiToken("user");
89+
try (JenkinsRule.WebClient wc = j.createWebClient().withBasicApiToken("user")) {
90+
wc.setThrowExceptionOnFailingStatusCode(false);
8991

90-
WebResponse response = wc.getPage(request).getWebResponse();
92+
WebRequest request = webRequest(HttpMethod.POST);
93+
request.setRequestBody("jenkins:\n systemMessage: 'fail'");
9194

92-
assertEquals(403, response.getStatusCode());
95+
WebResponse response = wc.getPage(request).getWebResponse();
96+
assertThat(response.getStatusCode(), is(403));
97+
}
9398
}
9499

95100
@Test
@@ -98,89 +103,62 @@ public void testDoConfigure_Unauthenticated() throws Exception {
98103
j.jenkins.setAuthorizationStrategy(
99104
new MockAuthorizationStrategy().grant(Jenkins.READ).everywhere().toEveryone());
100105

101-
WebClient wc = j.createWebClient();
102-
wc.setThrowExceptionOnFailingStatusCode(false);
106+
try (JenkinsRule.WebClient wc = j.createWebClient()) {
107+
wc.setThrowExceptionOnFailingStatusCode(false);
103108

104-
WebRequest request = new WebRequest(new URL(j.getURL(), "configuration-as-code/configure"), HttpMethod.POST);
109+
WebRequest request = webRequest(HttpMethod.POST);
110+
request.setRequestBody("jenkins:\n systemMessage: 'anonymous bypass attempt'");
105111

106-
request.setRequestBody("jenkins:\n systemMessage: 'anonymous bypass attempt'");
107-
108-
WebResponse response = wc.getPage(request).getWebResponse();
109-
110-
assertEquals(403, response.getStatusCode());
112+
WebResponse response = wc.getPage(request).getWebResponse();
113+
assertThat(response.getStatusCode(), is(403));
114+
}
111115
}
112116

113117
@Test
114118
public void testDoConfigure_EmptyBody() throws Exception {
115-
j.jenkins.setSecurityRealm(j.createDummySecurityRealm());
116-
j.jenkins.setAuthorizationStrategy(new MockAuthorizationStrategy()
117-
.grant(Jenkins.ADMINISTER)
118-
.everywhere()
119-
.to("admin"));
119+
configureAdminSecurity();
120120

121-
WebClient wc = j.createWebClient();
121+
try (JenkinsRule.WebClient wc = j.createWebClient().withBasicApiToken(ADMIN)) {
122+
wc.setThrowExceptionOnFailingStatusCode(false);
122123

123-
wc.setThrowExceptionOnFailingStatusCode(false);
124+
WebResponse response = wc.getPage(yamlPost(null)).getWebResponse();
124125

125-
WebRequest request = new WebRequest(new URL(j.getURL(), "configuration-as-code/configure"), HttpMethod.POST);
126-
request.setAdditionalHeader("Content-Type", "application/yaml");
127-
128-
wc.withBasicApiToken("admin");
129-
130-
WebResponse response = wc.getPage(request).getWebResponse();
131-
132-
assertEquals(400, response.getStatusCode());
133-
assertTrue(response.getContentAsString().contains("message"));
126+
assertThat(response.getStatusCode(), is(400));
127+
assertThat(response.getContentAsString(), containsString("message"));
128+
}
134129
}
135130

136131
@Test
137132
public void testDoConfigure_MalformedStructure() throws Exception {
138-
WebClient wc = j.createWebClient();
139-
wc.setThrowExceptionOnFailingStatusCode(false);
140-
141-
j.jenkins.setSecurityRealm(j.createDummySecurityRealm());
142-
j.jenkins.setAuthorizationStrategy(new MockAuthorizationStrategy()
143-
.grant(Jenkins.ADMINISTER)
144-
.everywhere()
145-
.to("admin"));
133+
configureAdminSecurity();
146134

147-
WebRequest request = new WebRequest(new URL(j.getURL(), "configuration-as-code/configure"), HttpMethod.POST);
148-
request.setAdditionalHeader("Content-Type", "application/yaml");
149-
request.setRequestBody("jenkins:\n invalidRoot:\n foo: bar");
135+
try (JenkinsRule.WebClient wc = j.createWebClient().withBasicApiToken(ADMIN)) {
136+
wc.setThrowExceptionOnFailingStatusCode(false);
150137

151-
wc.withBasicApiToken("admin");
138+
WebResponse response = wc.getPage(yamlPost("jenkins:\n invalidRoot:\n foo: bar"))
139+
.getWebResponse();
152140

153-
WebResponse response = wc.getPage(request).getWebResponse();
154-
155-
assertEquals(400, response.getStatusCode());
156-
assertTrue(response.getContentAsString().contains("message"));
141+
assertThat(response.getStatusCode(), is(400));
142+
assertThat(response.getContentAsString(), containsString("message"));
143+
}
157144
}
158145

159146
@Test
160147
public void testDoConfigure_ValidYaml_NoChanges() throws Exception {
161-
j.jenkins.setSecurityRealm(j.createDummySecurityRealm());
162-
j.jenkins.setAuthorizationStrategy(new MockAuthorizationStrategy()
163-
.grant(Jenkins.ADMINISTER)
164-
.everywhere()
165-
.to("admin"));
166-
WebClient wc = j.createWebClient();
167-
wc.withBasicApiToken("admin");
168-
wc.setThrowExceptionOnFailingStatusCode(false);
169-
170-
WebRequest request1 = new WebRequest(new URL(j.getURL(), "configuration-as-code/configure"), HttpMethod.POST);
171-
request1.setAdditionalHeader("Content-Type", "application/yaml");
172-
request1.setRequestBody("jenkins:\n systemMessage: 'Idempotency Test'");
173-
174-
WebResponse response1 = wc.getPage(request1).getWebResponse();
175-
assertEquals(200, response1.getStatusCode());
176-
assertEquals("Idempotency Test", j.jenkins.getSystemMessage());
177-
178-
WebRequest request2 = new WebRequest(new URL(j.getURL(), "configuration-as-code/configure"), HttpMethod.POST);
179-
request2.setAdditionalHeader("Content-Type", "application/yaml");
180-
request2.setRequestBody("jenkins:\n systemMessage: 'Idempotency Test'");
181-
182-
WebResponse response2 = wc.getPage(request2).getWebResponse();
183-
assertEquals(200, response2.getStatusCode());
184-
assertEquals("Idempotency Test", j.jenkins.getSystemMessage());
148+
configureAdminSecurity();
149+
150+
try (JenkinsRule.WebClient wc = j.createWebClient().withBasicApiToken(ADMIN)) {
151+
wc.setThrowExceptionOnFailingStatusCode(false);
152+
153+
WebResponse response1 = wc.getPage(yamlPost("jenkins:\n systemMessage: 'Idempotency Test'"))
154+
.getWebResponse();
155+
assertThat(response1.getStatusCode(), is(200));
156+
assertThat(j.jenkins.getSystemMessage(), is("Idempotency Test"));
157+
158+
WebResponse response2 = wc.getPage(yamlPost("jenkins:\n systemMessage: 'Idempotency Test'"))
159+
.getWebResponse();
160+
assertThat(response2.getStatusCode(), is(200));
161+
assertThat(j.jenkins.getSystemMessage(), is("Idempotency Test"));
162+
}
185163
}
186164
}

0 commit comments

Comments
 (0)