mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-10 23:45:44 +01:00
Merge with 2.0.0-m3
This commit is contained in:
@@ -53,8 +53,8 @@ public final class ValidationUtil
|
|||||||
"^[A-Za-z0-9][\\w.-]*@[A-Za-z0-9][\\w\\-\\.]*\\.[A-Za-z0-9][A-Za-z0-9-]+$";
|
"^[A-Za-z0-9][\\w.-]*@[A-Za-z0-9][\\w\\-\\.]*\\.[A-Za-z0-9][A-Za-z0-9-]+$";
|
||||||
|
|
||||||
/** Field description */
|
/** Field description */
|
||||||
private static final String REGEX_NAME =
|
public static final String REGEX_NAME =
|
||||||
"^[A-Za-z0-9\\.\\-_@]|[^ ]([A-Za-z0-9\\.\\-_@ ]*[A-Za-z0-9\\.\\-_@]|[^ ])?$";
|
"^[A-Za-z0-9\\.\\-_][A-Za-z0-9\\.\\-_@]*$";
|
||||||
|
|
||||||
public static final String REGEX_REPOSITORYNAME = "(?!^\\.\\.$)(?!^\\.$)(?!.*[\\\\\\[\\]])^[A-Za-z0-9\\.][A-Za-z0-9\\.\\-_]*$";
|
public static final String REGEX_REPOSITORYNAME = "(?!^\\.\\.$)(?!^\\.$)(?!.*[\\\\\\[\\]])^[A-Za-z0-9\\.][A-Za-z0-9\\.\\-_]*$";
|
||||||
|
|
||||||
|
|||||||
@@ -110,10 +110,10 @@ public class ValidationUtilTest
|
|||||||
assertTrue(ValidationUtil.isNameValid("Test123-git"));
|
assertTrue(ValidationUtil.isNameValid("Test123-git"));
|
||||||
assertTrue(ValidationUtil.isNameValid("Test_user-123.git"));
|
assertTrue(ValidationUtil.isNameValid("Test_user-123.git"));
|
||||||
assertTrue(ValidationUtil.isNameValid("test@scm-manager.de"));
|
assertTrue(ValidationUtil.isNameValid("test@scm-manager.de"));
|
||||||
assertTrue(ValidationUtil.isNameValid("test 123"));
|
|
||||||
assertTrue(ValidationUtil.isNameValid("t"));
|
assertTrue(ValidationUtil.isNameValid("t"));
|
||||||
|
|
||||||
// false
|
// false
|
||||||
|
assertFalse(ValidationUtil.isNameValid("test 123"));
|
||||||
assertFalse(ValidationUtil.isNameValid(" test 123"));
|
assertFalse(ValidationUtil.isNameValid(" test 123"));
|
||||||
assertFalse(ValidationUtil.isNameValid(" test 123 "));
|
assertFalse(ValidationUtil.isNameValid(" test 123 "));
|
||||||
assertFalse(ValidationUtil.isNameValid("test 123 "));
|
assertFalse(ValidationUtil.isNameValid("test 123 "));
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package sonia.scm.api.v2;
|
package sonia.scm.util;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
@@ -13,18 +13,18 @@ import java.util.stream.Stream;
|
|||||||
|
|
||||||
import static java.util.Arrays.asList;
|
import static java.util.Arrays.asList;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
import static sonia.scm.api.v2.ValidationConstraints.USER_GROUP_PATTERN;
|
import static sonia.scm.util.ValidationUtil.REGEX_NAME;
|
||||||
|
|
||||||
@RunWith(Parameterized.class)
|
@RunWith(Parameterized.class)
|
||||||
public class ValidationConstraints_IllegalCharactersTest {
|
public class ValidationUtil_IllegalCharactersTest {
|
||||||
|
|
||||||
private static final List<Character> ACCEPTED_CHARS = asList('@', '_', '-', '.');
|
private static final List<Character> ACCEPTED_CHARS = asList('@', '_', '-', '.');
|
||||||
|
|
||||||
private final Pattern userGroupPattern=Pattern.compile(USER_GROUP_PATTERN);
|
private final Pattern userGroupPattern=Pattern.compile(REGEX_NAME);
|
||||||
|
|
||||||
private final String expression;
|
private final String expression;
|
||||||
|
|
||||||
public ValidationConstraints_IllegalCharactersTest(String expression) {
|
public ValidationUtil_IllegalCharactersTest(String expression) {
|
||||||
this.expression = expression;
|
this.expression = expression;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -37,7 +37,6 @@ package sonia.scm.repository.spi;
|
|||||||
import com.google.common.annotations.VisibleForTesting;
|
import com.google.common.annotations.VisibleForTesting;
|
||||||
import com.google.common.base.Strings;
|
import com.google.common.base.Strings;
|
||||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||||
import org.checkerframework.common.value.qual.UnknownVal;
|
|
||||||
import org.eclipse.jgit.api.Git;
|
import org.eclipse.jgit.api.Git;
|
||||||
import org.eclipse.jgit.api.errors.GitAPIException;
|
import org.eclipse.jgit.api.errors.GitAPIException;
|
||||||
import org.eclipse.jgit.lib.Ref;
|
import org.eclipse.jgit.lib.Ref;
|
||||||
@@ -118,8 +117,8 @@ public class GitBranchesCommand extends AbstractGitCommand implements BranchesCo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@UnknownVal
|
|
||||||
Optional<Ref> getRepositoryHeadRef(Git git) {
|
Optional<Ref> getRepositoryHeadRef(Git git) {
|
||||||
return GitUtil.getRepositoryHeadRef(git.getRepository());
|
return GitUtil.getRepositoryHeadRef(git.getRepository());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package sonia.scm.repository.spi;
|
package sonia.scm.repository.spi;
|
||||||
|
|
||||||
import org.checkerframework.common.value.qual.UnknownVal;
|
|
||||||
import org.eclipse.jgit.api.Git;
|
import org.eclipse.jgit.api.Git;
|
||||||
import org.eclipse.jgit.api.ListBranchCommand;
|
import org.eclipse.jgit.api.ListBranchCommand;
|
||||||
import org.eclipse.jgit.api.errors.GitAPIException;
|
import org.eclipse.jgit.api.errors.GitAPIException;
|
||||||
@@ -57,7 +56,7 @@ class GitBranchesCommandTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@UnknownVal Optional<Ref> getRepositoryHeadRef(Git git) {
|
Optional<Ref> getRepositoryHeadRef(Git git) {
|
||||||
return of(master);
|
return of(master);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
package sonia.scm.api.v2;
|
|
||||||
|
|
||||||
public final class ValidationConstraints {
|
|
||||||
|
|
||||||
private ValidationConstraints() {}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A user or group name should not start with <code>@</code> or a whitespace
|
|
||||||
* and it not contains whitespaces
|
|
||||||
* and the characters: . - _ @ are allowed
|
|
||||||
*/
|
|
||||||
public static final String USER_GROUP_PATTERN = "^[A-Za-z0-9\\.\\-_][A-Za-z0-9\\.\\-_@]*$";
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -7,14 +7,13 @@ import de.otto.edison.hal.Links;
|
|||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
import sonia.scm.util.ValidationUtil;
|
||||||
|
|
||||||
import javax.validation.constraints.Pattern;
|
import javax.validation.constraints.Pattern;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import static sonia.scm.api.v2.ValidationConstraints.USER_GROUP_PATTERN;
|
|
||||||
|
|
||||||
@Getter @Setter @NoArgsConstructor
|
@Getter @Setter @NoArgsConstructor
|
||||||
public class GroupDto extends HalRepresentation {
|
public class GroupDto extends HalRepresentation {
|
||||||
|
|
||||||
@@ -22,7 +21,7 @@ public class GroupDto extends HalRepresentation {
|
|||||||
private String description;
|
private String description;
|
||||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||||
private Instant lastModified;
|
private Instant lastModified;
|
||||||
@Pattern(regexp = USER_GROUP_PATTERN)
|
@Pattern(regexp = ValidationUtil.REGEX_NAME)
|
||||||
private String name;
|
private String name;
|
||||||
private String type;
|
private String type;
|
||||||
private Map<String, String> properties;
|
private Map<String, String> properties;
|
||||||
|
|||||||
@@ -7,19 +7,18 @@ import lombok.NoArgsConstructor;
|
|||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
import org.hibernate.validator.constraints.NotEmpty;
|
import org.hibernate.validator.constraints.NotEmpty;
|
||||||
|
import sonia.scm.util.ValidationUtil;
|
||||||
|
|
||||||
import javax.validation.constraints.Pattern;
|
import javax.validation.constraints.Pattern;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
import static sonia.scm.api.v2.ValidationConstraints.USER_GROUP_PATTERN;
|
|
||||||
|
|
||||||
@Getter @Setter @ToString @NoArgsConstructor
|
@Getter @Setter @ToString @NoArgsConstructor
|
||||||
public class RepositoryPermissionDto extends HalRepresentation {
|
public class RepositoryPermissionDto extends HalRepresentation {
|
||||||
|
|
||||||
public static final String GROUP_PREFIX = "@";
|
public static final String GROUP_PREFIX = "@";
|
||||||
|
|
||||||
@Pattern(regexp = USER_GROUP_PATTERN)
|
@Pattern(regexp = ValidationUtil.REGEX_NAME)
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
@NotEmpty
|
@NotEmpty
|
||||||
|
|||||||
@@ -9,13 +9,12 @@ import lombok.NoArgsConstructor;
|
|||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import org.hibernate.validator.constraints.Email;
|
import org.hibernate.validator.constraints.Email;
|
||||||
import org.hibernate.validator.constraints.NotEmpty;
|
import org.hibernate.validator.constraints.NotEmpty;
|
||||||
|
import sonia.scm.util.ValidationUtil;
|
||||||
|
|
||||||
import javax.validation.constraints.Pattern;
|
import javax.validation.constraints.Pattern;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import static sonia.scm.api.v2.ValidationConstraints.USER_GROUP_PATTERN;
|
|
||||||
|
|
||||||
@NoArgsConstructor @Getter @Setter
|
@NoArgsConstructor @Getter @Setter
|
||||||
public class UserDto extends HalRepresentation {
|
public class UserDto extends HalRepresentation {
|
||||||
private boolean active;
|
private boolean active;
|
||||||
@@ -26,7 +25,7 @@ public class UserDto extends HalRepresentation {
|
|||||||
private Instant lastModified;
|
private Instant lastModified;
|
||||||
@NotEmpty @Email
|
@NotEmpty @Email
|
||||||
private String mail;
|
private String mail;
|
||||||
@Pattern(regexp = USER_GROUP_PATTERN)
|
@Pattern(regexp = ValidationUtil.REGEX_NAME)
|
||||||
private String name;
|
private String name;
|
||||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||||
private String password;
|
private String password;
|
||||||
|
|||||||
Reference in New Issue
Block a user