Skip to content

Commit ffbc677

Browse files
author
gdy
committed
continue, tests are almost done
1 parent aea003b commit ffbc677

File tree

6 files changed

+53
-33
lines changed

6 files changed

+53
-33
lines changed

build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ dependencies {
1818
testCompile 'org.mockito:mockito-core:2.0.62-beta'
1919
testCompile 'xmlunit:xmlunit:1.6'
2020

21-
2221
compile 'commons-io:commons-io:2.4'
2322
compile 'com.google.code.gson:gson:2.8.0'
2423
compile 'org.apache.httpcomponents:httpclient:4.5.2'

src/main/java/com/projectkaiser/scm/jenkins/api/IJenkinsApi.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ public interface IJenkinsApi {
1010

1111
JobDetailed getJobDetailed(String jobName);
1212

13-
Long runJob(String jobName);
13+
Long enqueueBuild(String jobName);
1414

15-
void updateJob(String jobName, String jobConfigXML);
15+
void updateJobConfigXml(String jobName, String configXml);
1616

1717
void copyJob(String srcName, String dstName);
1818

src/main/java/com/projectkaiser/scm/jenkins/api/JenkinsApi.java

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,6 @@
1919
import com.projectkaiser.scm.jenkins.data.JobDetailed;
2020
import com.projectkaiser.scm.jenkins.data.JobListElement;
2121

22-
/*
23-
http://localhost:8080/hudson/job/toolkit/api/json
24-
http://gmpxp:8080/hudson/api/json?tree=jobs[name]
25-
http://localhost:8080/hudson/job/toolkit-2/config.xml
26-
*/
27-
2822
public class JenkinsApi implements IJenkinsApi {
2923

3024
private IJenkinsApiFacade facade;
@@ -34,7 +28,7 @@ public JenkinsApi(String baseAddress, String user, String password) {
3428
}
3529

3630
@Override
37-
public Long runJob(String jobName) {
31+
public Long enqueueBuild(String jobName) {
3832
String url = "job/" + encodeUrl(jobName) + "/build";
3933
HttpResponse resp = facade.getResponsePOST(url, null);
4034
Header[] headers = resp.getHeaders("Location");
@@ -113,9 +107,9 @@ public String getJobConfigXml(String jobName) {
113107
}
114108

115109
@Override
116-
public void updateJobConfigXml(String jobName, String jobConfigXML) {
110+
public void updateJobConfigXml(String jobName, String configXml) {
117111
String url = "job/" + encodeUrl(jobName) + "/config.xml";
118-
facade.getResponsePOST(url, jobConfigXML);
112+
facade.getResponsePOST(url, configXml);
119113
}
120114

121115
@Override

src/main/java/com/projectkaiser/scm/jenkins/api/facade/JenkinsApiHttpFacade.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@ private HttpResponse getResponse (HttpRequestBase request) {
8686
processResponse(response);
8787
return response;
8888
} finally {
89-
EntityUtils.consume(response.getEntity());
9089
request.releaseConnection();
9190
}
9291
} catch (Exception e) {

src/main/java/com/projectkaiser/scm/jenkins/data/JobDetailed.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
import java.util.List;
44

5+
import javax.xml.bind.annotation.XmlRootElement;
6+
7+
@XmlRootElement
58
public class JobDetailed {
69

710
String displayName;

src/test/java/com/projectkaiser/scm/jenkins/api/JenkinsApiTest.java

Lines changed: 45 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
package com.projectkaiser.scm.jenkins.api;
22

3-
import static org.junit.Assert.*;
3+
import static org.junit.Assert.assertEquals;
4+
import static org.junit.Assert.assertFalse;
5+
import static org.junit.Assert.assertTrue;
46

57
import java.io.BufferedReader;
8+
import java.io.ByteArrayInputStream;
69
import java.io.IOException;
710
import java.io.InputStream;
811
import java.io.InputStreamReader;
9-
import java.io.StringReader;
1012
import java.io.StringWriter;
11-
import java.util.List;
1213

1314
import javax.xml.parsers.DocumentBuilder;
1415
import javax.xml.parsers.DocumentBuilderFactory;
@@ -21,14 +22,11 @@
2122
import org.junit.Test;
2223
import org.w3c.dom.Document;
2324
import org.w3c.dom.NodeList;
24-
import org.xml.sax.InputSource;
2525
import org.xml.sax.SAXException;
2626

2727
import com.projectkaiser.scm.jenkins.data.JobDetailed;
28-
import com.sun.org.apache.xml.internal.security.utils.XMLUtils;
2928
import com.sun.org.apache.xml.internal.serialize.OutputFormat;
3029
import com.sun.org.apache.xml.internal.serialize.XMLSerializer;
31-
import com.sun.xml.internal.ws.util.xml.XmlUtil;
3230

3331
public class JenkinsApiTest {
3432

@@ -44,6 +42,8 @@ public class JenkinsApiTest {
4442
private static final String TEST_JOB_XML_FN = "TestJob.xml";
4543

4644
private static final String TEST_JOB_NAME = "pk_jenkins_test_job";
45+
46+
private static final String NEW_JOB_NAME = "pk_jenkins_new__test_job";
4747

4848
private String ethalonJobXML = readResource(this.getClass(), TEST_JOB_XML_FN);
4949

@@ -63,6 +63,13 @@ public void setUp() {
6363
public void tearDown() {
6464
api.deleteJob(TEST_JOB_NAME);
6565
}
66+
67+
@Test
68+
public void testGetJobDetailed() {
69+
JobDetailed job = api.getJobDetailed(TEST_JOB_NAME);
70+
assertTrue(job != null);
71+
assertTrue(job.getDisplayName().equals(TEST_JOB_NAME));
72+
}
6673

6774
@Test
6875
public void testCreateJob() throws Exception {
@@ -72,26 +79,48 @@ public void testCreateJob() throws Exception {
7279
}
7380

7481
@Test
75-
public void testRunJob() throws ParserConfigurationException, SAXException, IOException {
76-
Long jobId = api.runJob(TEST_JOB_NAME);
82+
public void testEnqueueBuild() throws Exception {
83+
Long jobId = api.enqueueBuild(TEST_JOB_NAME);
7784
assertTrue(jobId > 0);
78-
7985
}
80-
86+
8187

8288
public void JenkinsAPITest() throws ParserConfigurationException, SAXException, IOException {
8389
String config = api.getJobConfigXml("test job");
8490
api.createJob("newe4job", config);
8591
}
8692

93+
8794
@Test
8895
public void testChangeJob() throws ParserConfigurationException, SAXException, IOException {
89-
api.getJobDetailed(jobName)
90-
api.up
9196
Document doc = getJobDocument(TEST_JOB_NAME);
9297
NodeList nodes = doc.getElementsByTagName("disabled");
93-
nodes.item(0).setNodeValue("true");
94-
updateJob(jobName, doc);
98+
nodes.item(0).setTextContent("true");
99+
updateJob(TEST_JOB_NAME, doc);
100+
101+
doc = getJobDocument(TEST_JOB_NAME);
102+
nodes = doc.getElementsByTagName("disabled");
103+
assertEquals(nodes.item(0).getTextContent(), "true");
104+
}
105+
106+
@Test
107+
public void testCopyJob() {
108+
api.copyJob(TEST_JOB_NAME, NEW_JOB_NAME);
109+
try {
110+
assertTrue(api.getJobsList().contains(NEW_JOB_NAME));
111+
} finally {
112+
api.deleteJob(NEW_JOB_NAME);
113+
}
114+
}
115+
116+
@Test
117+
public void testDeleteJob() {
118+
api.deleteJob(TEST_JOB_NAME);
119+
try {
120+
assertFalse(api.getJobsList().contains(TEST_JOB_NAME));
121+
} finally {
122+
api.createJob(TEST_JOB_NAME, ethalonJobXML);
123+
}
95124
}
96125

97126
private void updateJob(String jobName, Document doc) throws IOException {
@@ -108,12 +137,8 @@ private Document getJobDocument(String jobName) throws ParserConfigurationExcept
108137
String xml = api.getJobConfigXml(jobName);
109138
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
110139
DocumentBuilder db = dbf.newDocumentBuilder();
111-
112-
StringReader sr = new StringReader(xml);
113-
InputSource is = new InputSource(sr);
114-
is.setEncoding("UTF-8");
115-
116-
Document doc = db.parse(is);
140+
ByteArrayInputStream input = new ByteArrayInputStream(xml.getBytes("UTF-8"));
141+
Document doc = db.parse(input);
117142
return doc;
118143
}
119144

0 commit comments

Comments
 (0)