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