/* See LICENSE for licensing and NOTICE for copyright. */
package org.cryptacular.bean;
import org.cryptacular.FailListener;
import org.cryptacular.spec.CodecSpec;
import org.cryptacular.spec.DigestSpec;
import org.cryptacular.util.ByteUtil;
import org.cryptacular.util.CodecUtil;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
/**
* Unit test for {@link EncodingHashBean}.
*
* @author Middleware Services
*/
@Listeners(FailListener.class)
public class EncodingHashBeanTest
{
@DataProvider(name = "hash-data")
public Object[][] getHashData()
{
return
new Object[][] {
{
new EncodingHashBean(CodecSpec.BASE64, new DigestSpec("SHA1"), 1, false),
new Object[] {
CodecUtil.b64("7FHsteHnm6XQsJT1TTKbxw=="),
CodecUtil.b64("ehp6PCnojSegFpRvStqQ9A=="),
},
"Oadnuuj7QsRPUuMBiu+dmlT6qzU=",
},
{
new EncodingHashBean(CodecSpec.BASE64, new DigestSpec("SHA1"), 1, true),
new Object[] {
CodecUtil.b64("7FHsteHnm6XQsJT1TTKbxw=="),
CodecUtil.b64("ehp6PCnojSegFpRvStqQ9A=="),
CodecUtil.b64("/siCJIPstwM="),
},
"uRt+VlmPzfGOPjSGoZLTxpvd1dP+yIIkg+y3Aw==",
},
{
new EncodingHashBean(CodecSpec.HEX, new DigestSpec("SHA256"), 3, false),
new Object[] {
CodecUtil.b64("7FHsteHnm6XQsJT1TTKbxw=="),
CodecUtil.b64("ehp6PCnojSegFpRvStqQ9A=="),
},
"3a1edec6aef6d1736bec63130755690c07f04d7e7139d8fd685cc2d989961b79",
},
{
new EncodingHashBean(CodecSpec.HEX, new DigestSpec("SHA256"), 3, true),
new Object[] {
CodecUtil.b64("7FHsteHnm6XQsJT1TTKbxw=="),
CodecUtil.b64("ehp6PCnojSegFpRvStqQ9A=="),
CodecUtil.b64("DH9M1lDibNU="),
},
"79f2868e7f72ed18cd67858e8ffe589c6090d696f7ff298e021faf5855fd41a10c7f4cd650e26cd5",
},
};
}
@DataProvider(name = "compare-data")
public Object[][] getCompareData()
{
return
new Object[][] {
{
new EncodingHashBean(CodecSpec.BASE64, new DigestSpec("SHA1"), 1, false),
"7fyOZXGp+gKMziV/2Px7RIMkxyI2O1H8",
new Object[] {ByteUtil.toBytes("password"), },
},
{
new EncodingHashBean(CodecSpec.BASE64, new DigestSpec("SHA1"), 1, true),
"lrb+YkKHqoGbFtxYd0B5567N6ZYwqwvWQwvoSg==",
new Object[] {ByteUtil.toBytes("password"), },
},
};
}
@Test(dataProvider = "hash-data")
public void testHash(final EncodingHashBean bean, final Object[] input, final String expected)
throws Exception
{
assertEquals(bean.hash(input), expected);
}
@Test(dataProvider = "compare-data")
public void testCompare(final EncodingHashBean bean, final String hash, final Object[] input)
throws Exception
{
assertTrue(bean.compare(hash, input));
}
}