Merge with 2.0.0-m3

This commit is contained in:
René Pfeuffer
2019-03-29 11:54:17 +01:00
9 changed files with 16 additions and 35 deletions

View File

@@ -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\\.\\-_]*$";

View File

@@ -110,13 +110,13 @@ 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 "));
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"));

View File

@@ -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;
} }

View File

@@ -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());
} }
} }

View File

@@ -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);
} }
}; };

View File

@@ -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\\.\\-_@]*$";
}

View File

@@ -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;

View File

@@ -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

View File

@@ -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;