package net.techreadiness.util; import org.junit.Assert; import org.junit.Test; public class TestPasswordComplexity { @Test public void blankGivesZero() { Assert.assertEquals(0, PasswordComplexityEvaluator.getPasswordComplexity(null)); Assert.assertEquals(0, PasswordComplexityEvaluator.getPasswordComplexity("")); } @Test(expected = IllegalArgumentException.class) public void tooBigThrowsException() { // should be too long ... Assert.assertEquals(0, PasswordComplexityEvaluator.getPasswordComplexity("123456789012345678901234567890123")); } @Test public void tooShortOK() { // min numeric Assert.assertEquals(1, PasswordComplexityEvaluator.getPasswordComplexity("1")); } @Test public void minLengthSingleType() { // min numeric, min length Assert.assertEquals(2, PasswordComplexityEvaluator.getPasswordComplexity("12345678")); } @Test public void threeComplexExamples() { // min numeric, min lower, min length Assert.assertEquals(3, PasswordComplexityEvaluator.getPasswordComplexity("a2345678")); // min numeric, min upper, min length Assert.assertEquals(3, PasswordComplexityEvaluator.getPasswordComplexity("A2345678")); // min numeric, min special, min length Assert.assertEquals(3, PasswordComplexityEvaluator.getPasswordComplexity("~2345678")); } @Test public void fourComplexExamples() { // min numeric, min lower, min upper, min length Assert.assertEquals(4, PasswordComplexityEvaluator.getPasswordComplexity("aZ345678")); } @Test public void fiveComplexExamples() { // min numeric, min lower, min upper, min special, min length Assert.assertEquals(5, PasswordComplexityEvaluator.getPasswordComplexity("aZ+45678")); } @Test public void specialExamples() { char[] specials = { '\'', '"', '~', '`', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '-', '+', '=', '}', '{', '[', ']', '|', '\\', ':', ';', '<', ',', '>', '.', '?', '/' }; for (int i = 0; i < specials.length; i++) { Assert.assertEquals(1, PasswordComplexityEvaluator.getPasswordComplexity(String.valueOf(specials[i]))); } } }