package org.springframework.crypto.digest;
import junit.framework.TestCase;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* @author Rob Harrop
*/
public class MessageDigestFactoryBeanTests extends TestCase {
private static final String ALGORITHM = "SHA";
public void testGetObjectType() {
MessageDigestFactoryBean bean = new MessageDigestFactoryBean();
assertEquals("Invalid class.", bean.getObjectType(), MessageDigest.class);
}
public void testGetSingleton() throws Exception {
MessageDigestFactoryBean bean = new MessageDigestFactoryBean();
bean.setAlgorithm(ALGORITHM);
bean.afterPropertiesSet();
MessageDigest digest = (MessageDigest) bean.getObject();
assertNotNull("Digest is null", digest);
assertEquals("Invalid algorithm", ALGORITHM, digest.getAlgorithm());
}
public void testGetNonSingleton() throws Exception {
MessageDigestFactoryBean bean = new MessageDigestFactoryBean();
bean.setAlgorithm(ALGORITHM);
bean.setSingleton(false);
bean.afterPropertiesSet();
MessageDigest digest = (MessageDigest) bean.getObject();
assertNotNull("Digest is null", digest);
assertEquals("Invalid algorithm", ALGORITHM, digest.getAlgorithm());
MessageDigest digest2 = (MessageDigest) bean.getObject();
assertTrue("MessageDigest objects should be different", digest != digest2);
}
public void testInvalidTransformation() throws Exception {
MessageDigestFactoryBean bean = new MessageDigestFactoryBean();
bean.setAlgorithm("DEF");
try {
bean.afterPropertiesSet();
fail("Invalid algorithm should throw NoSuchAlgorithmException");
} catch (NoSuchAlgorithmException ex) {
// success
}
}
}