/* * Copyright 2001-2013 Geert Bevin (gbevin[remove] at uwyn dot com) * Licensed under the Apache License, Version 2.0 (the "License") */ package com.uwyn.rife.tools; import junit.framework.TestCase; import java.util.Random; import java.util.regex.Pattern; public class TestPasswordGenerator extends TestCase { public TestPasswordGenerator(String name) { super(name); } public void testIllegalArguments() { try { PasswordGenerator.get(0); fail(); } catch (IllegalArgumentException e) { assertTrue(true); } try { PasswordGenerator.get(1, 3); fail(); } catch (IllegalArgumentException e) { assertTrue(true); } } public void testLength() { String password; password = PasswordGenerator.get(10); assertEquals(10, password.length()); password = PasswordGenerator.get(20); assertEquals(20, password.length()); password = PasswordGenerator.get(30); assertEquals(30, password.length()); } public void testDefaultMixed() { String password; Pattern mixed_pattern; password = PasswordGenerator.get(10); mixed_pattern = Pattern.compile("^[a-zA-Z0-9]{10}$"); assertTrue(mixed_pattern.matcher(password).matches()); password = PasswordGenerator.get(98); mixed_pattern = Pattern.compile("^[a-zA-Z0-9]{98}$"); assertTrue(mixed_pattern.matcher(password).matches()); password = PasswordGenerator.get(12); mixed_pattern = Pattern.compile("^[a-zA-Z0-9]{12}$"); assertTrue(mixed_pattern.matcher(password).matches()); password = PasswordGenerator.get(32); mixed_pattern = Pattern.compile("^[a-zA-Z0-9]{32}$"); assertTrue(mixed_pattern.matcher(password).matches()); password = PasswordGenerator.get(75); mixed_pattern = Pattern.compile("^[a-zA-Z0-9]{75}$"); assertTrue(mixed_pattern.matcher(password).matches()); } public void testMixed() { String password; Pattern mixed_pattern; password = PasswordGenerator.get(10, PasswordGenerator.MIXED); mixed_pattern = Pattern.compile("^[a-zA-Z0-9]{10}$"); assertTrue(mixed_pattern.matcher(password).matches()); password = PasswordGenerator.get(98, PasswordGenerator.MIXED); mixed_pattern = Pattern.compile("^[a-zA-Z0-9]{98}$"); assertTrue(mixed_pattern.matcher(password).matches()); password = PasswordGenerator.get(12, PasswordGenerator.MIXED); mixed_pattern = Pattern.compile("^[a-zA-Z0-9]{12}$"); assertTrue(mixed_pattern.matcher(password).matches()); password = PasswordGenerator.get(32, PasswordGenerator.MIXED); mixed_pattern = Pattern.compile("^[a-zA-Z0-9]{32}$"); assertTrue(mixed_pattern.matcher(password).matches()); password = PasswordGenerator.get(75, PasswordGenerator.MIXED); mixed_pattern = Pattern.compile("^[a-zA-Z0-9]{75}$"); assertTrue(mixed_pattern.matcher(password).matches()); } public void testDigitsOnly() { String password; Pattern mixed_pattern; password = PasswordGenerator.get(10, PasswordGenerator.DIGITS_ONLY); mixed_pattern = Pattern.compile("^[0-9]{10}$"); assertTrue(mixed_pattern.matcher(password).matches()); password = PasswordGenerator.get(98, PasswordGenerator.DIGITS_ONLY); mixed_pattern = Pattern.compile("^[0-9]{98}$"); assertTrue(mixed_pattern.matcher(password).matches()); password = PasswordGenerator.get(12, PasswordGenerator.DIGITS_ONLY); mixed_pattern = Pattern.compile("^[0-9]{12}$"); assertTrue(mixed_pattern.matcher(password).matches()); password = PasswordGenerator.get(32, PasswordGenerator.DIGITS_ONLY); mixed_pattern = Pattern.compile("^[0-9]{32}$"); assertTrue(mixed_pattern.matcher(password).matches()); password = PasswordGenerator.get(75, PasswordGenerator.DIGITS_ONLY); mixed_pattern = Pattern.compile("^[0-9]{75}$"); assertTrue(mixed_pattern.matcher(password).matches()); } public void testLettersOnly() { String password; Pattern mixed_pattern; password = PasswordGenerator.get(10, PasswordGenerator.LETTERS_ONLY); mixed_pattern = Pattern.compile("^[a-zA-Z]{10}$"); assertTrue(mixed_pattern.matcher(password).matches()); password = PasswordGenerator.get(98, PasswordGenerator.LETTERS_ONLY); mixed_pattern = Pattern.compile("^[a-zA-Z]{98}$"); assertTrue(mixed_pattern.matcher(password).matches()); password = PasswordGenerator.get(12, PasswordGenerator.LETTERS_ONLY); mixed_pattern = Pattern.compile("^[a-zA-Z]{12}$"); assertTrue(mixed_pattern.matcher(password).matches()); password = PasswordGenerator.get(32, PasswordGenerator.LETTERS_ONLY); mixed_pattern = Pattern.compile("^[a-zA-Z]{32}$"); assertTrue(mixed_pattern.matcher(password).matches()); password = PasswordGenerator.get(75, PasswordGenerator.LETTERS_ONLY); mixed_pattern = Pattern.compile("^[a-zA-Z]{75}$"); assertTrue(mixed_pattern.matcher(password).matches()); } public void testRandom() { Random random1 = new Random(System.currentTimeMillis()); Random random2 = new Random("the seed".hashCode()); assertTrue(!PasswordGenerator.get(random1, 10, PasswordGenerator.MIXED).equals(PasswordGenerator.get(random2, 10, PasswordGenerator.MIXED))); assertTrue(!PasswordGenerator.get(random1, 10, PasswordGenerator.MIXED).equals(PasswordGenerator.get(random2, 10, PasswordGenerator.MIXED))); assertTrue(!PasswordGenerator.get(random1, 10, PasswordGenerator.MIXED).equals(PasswordGenerator.get(random2, 10, PasswordGenerator.MIXED))); assertTrue(!PasswordGenerator.get(random1, 10, PasswordGenerator.MIXED).equals(PasswordGenerator.get(random2, 10, PasswordGenerator.MIXED))); assertTrue(!PasswordGenerator.get(random1, 10, PasswordGenerator.MIXED).equals(PasswordGenerator.get(random2, 10, PasswordGenerator.MIXED))); } }