Harmonize user and group name validation, again

This commit is contained in:
René Pfeuffer
2019-03-25 15:41:21 +01:00
parent 5aab95b651
commit b1547d2b69
7 changed files with 14 additions and 31 deletions

View File

@@ -110,10 +110,10 @@ public class ValidationUtilTest
assertTrue(ValidationUtil.isNameValid("Test123-git"));
assertTrue(ValidationUtil.isNameValid("Test_user-123.git"));
assertTrue(ValidationUtil.isNameValid("test@scm-manager.de"));
assertTrue(ValidationUtil.isNameValid("test 123"));
assertTrue(ValidationUtil.isNameValid("t"));
// false
assertFalse(ValidationUtil.isNameValid("test 123"));
assertFalse(ValidationUtil.isNameValid(" test 123"));
assertFalse(ValidationUtil.isNameValid(" test 123 "));
assertFalse(ValidationUtil.isNameValid("test 123 "));

View File

@@ -0,0 +1,47 @@
package sonia.scm.util;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import java.util.Collection;
import java.util.List;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;
import static java.util.Arrays.asList;
import static org.junit.Assert.assertFalse;
import static sonia.scm.util.ValidationUtil.REGEX_NAME;
@RunWith(Parameterized.class)
public class ValidationUtil_IllegalCharactersTest {
private static final List<Character> ACCEPTED_CHARS = asList('@', '_', '-', '.');
private final Pattern userGroupPattern=Pattern.compile(REGEX_NAME);
private final String expression;
public ValidationUtil_IllegalCharactersTest(String expression) {
this.expression = expression;
}
@Parameterized.Parameters(name = "{0}")
public static Collection<String[]> createParameters() {
return Stream.concat(IntStream.range(0x20, 0x2f).mapToObj(i -> (char) i), // chars before '0'
Stream.concat(IntStream.range(0x3a, 0x40).mapToObj(i -> (char) i), // chars between '9' and 'A'
Stream.concat(IntStream.range(0x5b, 0x60).mapToObj(i -> (char) i), // chars between 'Z' and 'a'
IntStream.range(0x7b, 0xff).mapToObj(i -> (char) i)))) // chars after 'z'
.filter(c -> !ACCEPTED_CHARS.contains(c))
.flatMap(c -> Stream.of("abc" + c + "xyz", "@" + c, c + "tail"))
.map(c -> new String[] {c})
.collect(Collectors.toList());
}
@Test
public void shouldNotAcceptSpecialCharacters() {
assertFalse(userGroupPattern.matcher(expression).matches());
}
}