package de.pinyto.ctSESAM; import junit.framework.TestCase; /** * Tests for the PasswordGenerator class. */ public class PasswordGeneratorTest extends TestCase { public void testHashOnceAndGetPassword () { byte[] domain = UTF8.encode("unit.test"); byte[] username = UTF8.encode("hugo"); byte[] kgk = UTF8.encode("secret"); byte[] salt = UTF8.encode("pepper"); try { PasswordGenerator pg = new PasswordGenerator(domain, username, kgk, salt, 2); PasswordSetting setting = new PasswordSetting("unit.test"); setting.setTemplate("xxaxAnxoxx"); assertEquals("a0b/Q3°[4_", pg.getPassword(setting)); } catch (NotHashedException e) { e.printStackTrace(); } } public void testHashOnceAndGetPasswordEmptyInputs () { try { PasswordGenerator pg = new PasswordGenerator( new byte[] {}, new byte[] {}, new byte[] {}, new byte[] {}, 2); PasswordSetting setting = new PasswordSetting("unit.test"); setting.setTemplate("xxaxAnxoxx"); assertEquals("5XmUG8z°_|", pg.getPassword(setting)); } catch (NotHashedException e) { e.printStackTrace(); } } public void testHashOnceAndGetPasswordLengthMax () { try { PasswordGenerator pg = new PasswordGenerator( new byte[] {}, new byte[] {}, new byte[] {}, new byte[] {}, 2); PasswordSetting setting = new PasswordSetting("unit.test"); setting.setTemplate("Aoanxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); assertEquals(81, pg.getPassword(setting).length()); assertEquals( "X=l2&d$n_|Jx}!W_]Kn°=}/r0bBvsf%P(Cb{NIyY=a^zuCvex=fu^($T)7cVwcla{j°YrVyP!^!rZP@w1", pg.getPassword(setting)); } catch (NotHashedException e) { e.printStackTrace(); } } public void testHashOnceAndGetPasswordEmptyInputsZeroHashes () { boolean thrown = false; try { PasswordGenerator pg = new PasswordGenerator( new byte[] {}, new byte[] {}, new byte[] {}, new byte[] {}, 0); PasswordSetting setting = new PasswordSetting("unit.test"); setting.setTemplate("axonA"); pg.getPassword(setting); } catch (NotHashedException e) { thrown = true; } assertTrue(thrown); } public void testNoHashRaisesError () { byte[] domain = UTF8.encode("unit.test"); byte[] username = UTF8.encode("hugo"); byte[] kgk = UTF8.encode("secret"); byte[] salt = UTF8.encode("pepper"); boolean thrown = false; try { PasswordGenerator pg = new PasswordGenerator(domain, username, kgk, salt, 0); PasswordSetting setting = new PasswordSetting("unit.test"); setting.setTemplate("axonA"); pg.getPassword(setting); } catch (NotHashedException e) { thrown = true; } assertTrue(thrown); } public void testHashWithNegativeIterationCountRaisesError () { byte[] domain = UTF8.encode("unit.test"); byte[] username = UTF8.encode("hugo"); byte[] kgk = UTF8.encode("secret"); byte[] salt = UTF8.encode("pepper"); boolean thrown = false; try { PasswordGenerator pg = new PasswordGenerator(domain, username, kgk, salt, -3); PasswordSetting setting = new PasswordSetting("unit.test"); setting.setTemplate("axonA"); pg.getPassword(setting); } catch (NotHashedException e) { thrown = true; } assertTrue(thrown); } }