From 5cf163d888a01a303fffd24a49fe5b53a615eb02 Mon Sep 17 00:00:00 2001 From: Nicolas Vazquez Date: Sun, 21 Oct 2018 14:03:04 -0300 Subject: [PATCH] server: Unify templates/ISOs checksum API output (#2911) Unify checksum API output for templates and ISOs: not list the checksum algorithm on: KVM direct downloads On in progress normal template downloads. The algorithm is shown on the listtemplates API, but after it is downloaded it is not shown anymore. --- .../api/query/dao/TemplateJoinDaoImpl.java | 5 +-- .../utils/security/DigestHelper.java | 15 +++++++++ .../utils/security/DigestHelperTest.java | 31 +++++++++++++++++-- 3 files changed, 46 insertions(+), 5 deletions(-) diff --git a/server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java b/server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java index 4f1984257ed..c0d57d7e4af 100644 --- a/server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java +++ b/server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java @@ -25,6 +25,7 @@ import java.util.Set; import javax.inject.Inject; +import org.apache.cloudstack.utils.security.DigestHelper; import org.apache.log4j.Logger; import org.springframework.stereotype.Component; @@ -188,7 +189,7 @@ public class TemplateJoinDaoImpl extends GenericDaoBaseWithTagInformation checksum.indexOf("{"); + } + + /** + * Returns the checksum HASH from the checksum value which can have the following formats: {ALG}HASH or HASH + */ + public static String getHashValueFromChecksumValue(String checksum) { + return isAlgorithmPresent(checksum) ? new ChecksumValue(checksum).getChecksum() : checksum; + } } diff --git a/utils/src/test/java/org/apache/cloudstack/utils/security/DigestHelperTest.java b/utils/src/test/java/org/apache/cloudstack/utils/security/DigestHelperTest.java index 4a6e3f7960a..eac234ef2fc 100644 --- a/utils/src/test/java/org/apache/cloudstack/utils/security/DigestHelperTest.java +++ b/utils/src/test/java/org/apache/cloudstack/utils/security/DigestHelperTest.java @@ -26,6 +26,9 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + public class DigestHelperTest { private final static String INPUT_STRING = "01234567890123456789012345678901234567890123456789012345678901234567890123456789\n"; @@ -46,17 +49,17 @@ public class DigestHelperTest { @Test public void check_SHA256() throws Exception { - Assert.assertTrue(DigestHelper.check(SHA256_CHECKSUM, inputStream)); + assertTrue(DigestHelper.check(SHA256_CHECKSUM, inputStream)); } @Test public void check_SHA1() throws Exception { - Assert.assertTrue(DigestHelper.check(SHA1_CHECKSUM, inputStream)); + assertTrue(DigestHelper.check(SHA1_CHECKSUM, inputStream)); } @Test public void check_MD5() throws Exception { - Assert.assertTrue(DigestHelper.check(MD5_CHECKSUM, inputStream)); + assertTrue(DigestHelper.check(MD5_CHECKSUM, inputStream)); } @Test @@ -127,6 +130,28 @@ public class DigestHelperTest { String checksum = SHA256_CHECKSUM + "XXXXX"; DigestHelper.validateChecksumString(checksum); } + + @Test + public void testIsAlgorithmPresentPositiveCase() { + assertTrue(DigestHelper.isAlgorithmSupported(SHA256_CHECKSUM)); + } + + @Test + public void testIsAlgorithmPresentnegativeCase() { + assertTrue(DigestHelper.isAlgorithmSupported(SHA256_NO_PREFIX_CHECKSUM)); + } + + @Test + public void testGetHashValueFromChecksumValuePrefixPresent() { + String checksum = DigestHelper.getHashValueFromChecksumValue(SHA256_CHECKSUM); + assertEquals(SHA256_NO_PREFIX_CHECKSUM, checksum); + } + + @Test + public void testGetHashValueFromChecksumValueNoPrefixPresent() { + String checksum = DigestHelper.getHashValueFromChecksumValue(SHA256_NO_PREFIX_CHECKSUM); + assertEquals(SHA256_NO_PREFIX_CHECKSUM, checksum); + } } //Generated with love by TestMe :) Please report issues and submit feature requests at: http://weirddev.com/forum#!/testme \ No newline at end of file