From 0afa0bf87810d90cf0c1981303359ec876a022d3 Mon Sep 17 00:00:00 2001 From: ssolovyev Date: Mon, 20 Jan 2025 18:08:49 +0300 Subject: [PATCH 1/3] feat: new getContentSha1Sum function --- .../http_request/ResponseContentSupplier.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/main/java/jenkins/plugins/http_request/ResponseContentSupplier.java b/src/main/java/jenkins/plugins/http_request/ResponseContentSupplier.java index b9e4b16f..9dde527e 100644 --- a/src/main/java/jenkins/plugins/http_request/ResponseContentSupplier.java +++ b/src/main/java/jenkins/plugins/http_request/ResponseContentSupplier.java @@ -6,6 +6,8 @@ import java.io.InputStreamReader; import java.io.Serializable; import java.nio.charset.Charset; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -111,6 +113,20 @@ public String getContent() { } } + public String getContentSha1Sum() { + try { + MessageDigest md = MessageDigest.getInstance("SHA-1"); + byte[] result = md.digest(content.getBytes()); + StringBuilder hexString = new StringBuilder(); + for (byte b : result) { + hexString.append(String.format("%02x", b)); + } + return hexString.toString(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + return null; + } + } @Whitelisted public InputStream getContentStream() { return contentStream; From 10488cab6a58e8f586ad46e9e4760c7539987e54 Mon Sep 17 00:00:00 2001 From: ssolovyev Date: Tue, 21 Jan 2025 21:53:27 +0300 Subject: [PATCH 2/3] feat: test coverage --- .../http_request/HttpRequestStepTest.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/test/java/jenkins/plugins/http_request/HttpRequestStepTest.java b/src/test/java/jenkins/plugins/http_request/HttpRequestStepTest.java index f594a778..c9c64e96 100644 --- a/src/test/java/jenkins/plugins/http_request/HttpRequestStepTest.java +++ b/src/test/java/jenkins/plugins/http_request/HttpRequestStepTest.java @@ -277,6 +277,26 @@ public void invalidResponseCodeIsAccepted() throws Exception { j.assertLogNotContains(" while calling " + baseURL(), run); } + @Test + public void responseHashSumCalculated() throws Exception { + // Prepare the server + registerInvalidStatusCode(); + + // Configure the build + WorkflowJob proj = j.jenkins.createProject(WorkflowJob.class, "proj"); + proj.setDefinition(new CpsFlowDefinition( + "def response = httpRequest '"+baseURL()+"/doGET'\n" + + " consoleLogResponseBody: true\n" + + "println('sha1sum: '+response.getContentSha1Sum())\n", + true)); + + // Execute the build + WorkflowRun run = proj.scheduleBuild2(0).get(); + + // Check expectations + j.assertLogContains("sha1sum: *", run); + } + @Test public void reverseRangeFailsTheBuild() throws Exception { // Prepare the server From 9102cc5ded423c9ffb65de48431c33c4f9d68cbf Mon Sep 17 00:00:00 2001 From: ssolovyev Date: Tue, 21 Jan 2025 22:20:41 +0300 Subject: [PATCH 3/3] fix: test coverage --- .../jenkins/plugins/http_request/HttpRequestStepTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/jenkins/plugins/http_request/HttpRequestStepTest.java b/src/test/java/jenkins/plugins/http_request/HttpRequestStepTest.java index c9c64e96..699dde15 100644 --- a/src/test/java/jenkins/plugins/http_request/HttpRequestStepTest.java +++ b/src/test/java/jenkins/plugins/http_request/HttpRequestStepTest.java @@ -280,7 +280,7 @@ public void invalidResponseCodeIsAccepted() throws Exception { @Test public void responseHashSumCalculated() throws Exception { // Prepare the server - registerInvalidStatusCode(); + registerRequestChecker(HttpMode.GET); // Configure the build WorkflowJob proj = j.jenkins.createProject(WorkflowJob.class, "proj"); @@ -294,7 +294,7 @@ public void responseHashSumCalculated() throws Exception { WorkflowRun run = proj.scheduleBuild2(0).get(); // Check expectations - j.assertLogContains("sha1sum: *", run); + j.assertLogContains("sha1sum: ", run); } @Test