merge with branch issue-142

This commit is contained in:
Sebastian Sdorra
2012-05-11 17:16:25 +02:00
5 changed files with 83 additions and 4 deletions

View File

@@ -52,10 +52,12 @@ public class ValidationUtil
private static final String REGEX_NAME = "^[A-z0-9\\.\\-_]+$";
/** Field description */
private static final String REGEX_REPOSITORYNAME = "^[A-z0-9\\.\\-_/]+$";
private static final String REGEX_REPOSITORYNAME =
"^[A-z0-9][A-z0-9\\.\\-_/]*$";
/** Field description */
private static final String REGEX_USERNAME = "^[A-z0-9\\.\\-_@]|[^ ]([A-z0-9\\.\\-_@ ]*[A-z0-9\\.\\-_@]|[^ ])?$";
private static final String REGEX_USERNAME =
"^[A-z0-9\\.\\-_@]|[^ ]([A-z0-9\\.\\-_@ ]*[A-z0-9\\.\\-_@]|[^ ])?$";
//~--- get methods ----------------------------------------------------------
@@ -139,7 +141,9 @@ public class ValidationUtil
*/
public static boolean isRepositoryNameValid(String name)
{
return Util.isNotEmpty(name) && name.matches(REGEX_REPOSITORYNAME);
return Util.isNotEmpty(name) && name.matches(REGEX_REPOSITORYNAME)
&&!name.contains("..") &&!name.endsWith("/.") &&!name.endsWith(".")
&&!name.endsWith("/") &&!name.contains("/./") &&!name.contains("//");
}
/**

View File

@@ -130,6 +130,33 @@ 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"));
// issue 142
assertFalse(ValidationUtil.isRepositoryNameValid("."));
assertFalse(ValidationUtil.isRepositoryNameValid("/"));
assertFalse(ValidationUtil.isRepositoryNameValid(".scm/plugins"));
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"));
}
/**
* Method description
*

View File

@@ -55,6 +55,9 @@
<link rel="stylesheet" type="text/css" href="resources/extjs/resources/css/xtheme-scmslate.css" />
<link rel="stylesheet" type="text/css" href="resources/css/style.css" />
<!-- core overrides -->
<script type="text/javascript" src="resources/js/sonia.core.js"></script>
<!-- extjs -->
<script type="text/javascript" src="resources/extjs/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="resources/extjs/ext-all-debug.js"></script>

View File

@@ -53,7 +53,13 @@ Ext.apply(Ext.form.VTypes, {
// repository name validator
repositoryName: function(val){
return /^[A-z0-9\.\-_\/]+$/.test(val);
return /^[A-z0-9][A-z0-9\.\-_\/]*$/.test(val)
&& ! val.contains('..')
&& ! val.endsWith('/.')
&& ! val.endsWith('/')
&& ! val.endsWith('.')
&& ! val.contains('/./')
&& ! val.contains('//');
},
repositoryNameText: 'The name of the repository is invalid.',

View File

@@ -0,0 +1,39 @@
/* *
* Copyright (c) 2010, Sebastian Sdorra
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. Neither the name of SCM-Manager; nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* http://bitbucket.org/sdorra/scm-manager
*
*/
String.prototype.endsWith = function(suffix) {
return this.indexOf(suffix, this.length - suffix.length) !== -1;
};
String.prototype.contains = function(val) {
return this.indexOf(val) >= 0;
};