56 lines
1.6 KiB
Java
56 lines
1.6 KiB
Java
package fr.xephi.authme.security;
|
|
|
|
import org.junit.Test;
|
|
|
|
import java.util.regex.Pattern;
|
|
|
|
import static org.hamcrest.MatcherAssert.assertThat;
|
|
import static org.hamcrest.Matchers.equalTo;
|
|
|
|
/**
|
|
* Test for {@link RandomString}.
|
|
*/
|
|
public class RandomStringTest {
|
|
|
|
@Test
|
|
public void shouldGenerateRandomStrings() {
|
|
// given
|
|
int[] lengths = {0, 1, 19, 142, 1872};
|
|
Pattern badChars = Pattern.compile(".*[^0-9a-z].*");
|
|
|
|
// when / then
|
|
for (int length : lengths) {
|
|
String result = RandomString.generate(length);
|
|
assertThat("Result '" + result + "' should have length " + length,
|
|
result.length(), equalTo(length));
|
|
assertThat("Result '" + result + "' should only have characters a-z, 0-9",
|
|
badChars.matcher(result).matches(), equalTo(false));
|
|
}
|
|
}
|
|
|
|
@Test
|
|
public void shouldGenerateRandomHexString() {
|
|
// given
|
|
int[] lengths = {0, 1, 21, 160, 1784};
|
|
Pattern badChars = Pattern.compile(".*[^0-9a-f].*");
|
|
|
|
// when / then
|
|
for (int length : lengths) {
|
|
String result = RandomString.generateHex(length);
|
|
assertThat("Result '" + result + "' should have length " + length,
|
|
result.length(), equalTo(length));
|
|
assertThat("Result '" + result + "' should only have characters a-z, 0-9",
|
|
badChars.matcher(result).matches(), equalTo(false));
|
|
}
|
|
}
|
|
|
|
@Test(expected = IllegalArgumentException.class)
|
|
public void shouldThrowForInvalidLength() {
|
|
// given/when
|
|
RandomString.generate(-3);
|
|
|
|
// then - throw exception
|
|
}
|
|
|
|
}
|