mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-14 09:25:43 +01:00
do not allow slashes ("/") in repository names
This commit is contained in:
@@ -59,8 +59,9 @@ public final class ValidationUtil
|
||||
"^[A-z0-9\\.\\-_@]|[^ ]([A-z0-9\\.\\-_@ ]*[A-z0-9\\.\\-_@]|[^ ])?$";
|
||||
|
||||
/** Field description */
|
||||
private static final String REGEX_REPOSITORYNAME =
|
||||
"(?!^\\.\\.$)(?!^\\.$)(?!.*[\\\\\\[\\]])^[A-z0-9\\.][A-z0-9\\.\\-_/]*$";
|
||||
private static final Pattern REGEX_REPOSITORYNAME = Pattern.compile(
|
||||
"(?!^\\.\\.$)(?!^\\.$)(?!.*[\\\\\\[\\]])^[A-z0-9\\.][A-z0-9\\.\\-_]*$"
|
||||
);
|
||||
|
||||
//~--- constructors ---------------------------------------------------------
|
||||
|
||||
@@ -142,37 +143,15 @@ public final class ValidationUtil
|
||||
}
|
||||
|
||||
/**
|
||||
* Method description
|
||||
* Returns {@code true} if the repository name is valid.
|
||||
*
|
||||
*
|
||||
* @param name
|
||||
* @param name repository name
|
||||
* @since 1.9
|
||||
*
|
||||
* @return
|
||||
* @return {@code true} if repository name is valid
|
||||
*/
|
||||
public static boolean isRepositoryNameValid(String name)
|
||||
{
|
||||
Pattern pattern = Pattern.compile(REGEX_REPOSITORYNAME);
|
||||
boolean result = true;
|
||||
|
||||
if (Util.isNotEmpty(name))
|
||||
{
|
||||
for (String p : Splitter.on('/').split(name))
|
||||
{
|
||||
if (!pattern.matcher(p).matches())
|
||||
{
|
||||
result = false;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
result = false;
|
||||
}
|
||||
|
||||
return result;
|
||||
public static boolean isRepositoryNameValid(String name) {
|
||||
return REGEX_REPOSITORYNAME.matcher(name).matches();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -143,51 +143,21 @@ public class ValidationUtilTest
|
||||
assertFalse(ValidationUtil.isNotContaining("test", "t"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Method description
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testIsRepositoryNameValid()
|
||||
{
|
||||
assertTrue(ValidationUtil.isRepositoryNameValid("scm"));
|
||||
assertTrue(ValidationUtil.isRepositoryNameValid("scm/main"));
|
||||
assertTrue(ValidationUtil.isRepositoryNameValid("scm/plugins/git-plugin"));
|
||||
assertTrue(ValidationUtil.isRepositoryNameValid("s"));
|
||||
assertTrue(ValidationUtil.isRepositoryNameValid("sc"));
|
||||
assertTrue(ValidationUtil.isRepositoryNameValid(".scm/plugins"));
|
||||
|
||||
// issue 142
|
||||
assertFalse(ValidationUtil.isRepositoryNameValid("."));
|
||||
assertFalse(ValidationUtil.isRepositoryNameValid("/"));
|
||||
assertFalse(ValidationUtil.isRepositoryNameValid("scm/plugins/."));
|
||||
assertFalse(ValidationUtil.isRepositoryNameValid("scm/../plugins"));
|
||||
assertFalse(ValidationUtil.isRepositoryNameValid("scm/main/"));
|
||||
assertFalse(ValidationUtil.isRepositoryNameValid("/scm/main/"));
|
||||
|
||||
// issue 144
|
||||
assertFalse(ValidationUtil.isRepositoryNameValid("scm/./main"));
|
||||
assertFalse(ValidationUtil.isRepositoryNameValid("scm//main"));
|
||||
|
||||
// issue 148
|
||||
//J-
|
||||
public void testIsRepositoryNameValid() {
|
||||
String[] validPaths = {
|
||||
"scm",
|
||||
"scm/main",
|
||||
"scm/plugins/git-plugin",
|
||||
"s",
|
||||
"sc",
|
||||
".scm/plugins",
|
||||
".hiddenrepo",
|
||||
"b.",
|
||||
"...",
|
||||
"..c",
|
||||
"d..",
|
||||
"a/b..",
|
||||
"a/..b",
|
||||
"a..c",
|
||||
"a..c"
|
||||
};
|
||||
|
||||
// issue 142, 144 and 148
|
||||
String[] invalidPaths = {
|
||||
".",
|
||||
"/",
|
||||
@@ -228,17 +198,22 @@ public class ValidationUtilTest
|
||||
"abc)abc",
|
||||
"abc[abc",
|
||||
"abc]abc",
|
||||
"abc|abc"
|
||||
"abc|abc",
|
||||
"scm/main",
|
||||
"scm/plugins/git-plugin",
|
||||
".scm/plugins",
|
||||
"a/b..",
|
||||
"a/..b",
|
||||
"scm/main",
|
||||
"scm/plugins/git-plugin",
|
||||
"scm/plugins/git-plugin"
|
||||
};
|
||||
//J+
|
||||
|
||||
for (String path : validPaths)
|
||||
{
|
||||
for (String path : validPaths) {
|
||||
assertTrue(ValidationUtil.isRepositoryNameValid(path));
|
||||
}
|
||||
|
||||
for (String path : invalidPaths)
|
||||
{
|
||||
for (String path : invalidPaths) {
|
||||
assertFalse(ValidationUtil.isRepositoryNameValid(path));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user