diff --git a/goofy-server/src/main/java/de/itvsh/goofy/common/RegexUtil.java b/goofy-server/src/main/java/de/itvsh/goofy/common/RegexUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..a2515e95649b80ee8860c35cdcd62c52fc28f334 --- /dev/null +++ b/goofy-server/src/main/java/de/itvsh/goofy/common/RegexUtil.java @@ -0,0 +1,10 @@ +package de.itvsh.goofy.common; + +import lombok.AccessLevel; +import lombok.NoArgsConstructor; + +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public class RegexUtil { + + public static final String VALIDATION_EMAIL = "[a-z0-9!#$%&'*+\\/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+\\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?"; +} \ No newline at end of file diff --git a/goofy-server/src/main/java/de/itvsh/goofy/vorgang/RedirectRequest.java b/goofy-server/src/main/java/de/itvsh/goofy/vorgang/RedirectRequest.java index ce9be39a56474cd274e8c21c72a155b6e93c467c..091a2c17ed6d4384b98592c3924aa9ef0462fa98 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/vorgang/RedirectRequest.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/vorgang/RedirectRequest.java @@ -2,15 +2,28 @@ package de.itvsh.goofy.vorgang; import static de.itvsh.goofy.common.ValidationMessageCodes.*; -import javax.validation.constraints.NotNull; +import javax.validation.constraints.Email; +import javax.validation.constraints.NotEmpty; import javax.validation.constraints.Size; +import de.itvsh.goofy.common.RegexUtil; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.ToString; + +@Getter +@NoArgsConstructor(access = AccessLevel.PRIVATE) +@AllArgsConstructor(access = AccessLevel.PACKAGE) +@ToString public class RedirectRequest { - @NotNull(message = FIELD_IS_NULL) + @Email(regexp = RegexUtil.VALIDATION_EMAIL, message = FIELD_INVALID) + @NotEmpty(message = FIELD_IS_EMPTY) private String email; - @NotNull(message = FIELD_IS_NULL) @Size(min = 8, message = FIELD_SIZE) + @NotEmpty(message = FIELD_IS_EMPTY) private String password; } \ No newline at end of file diff --git a/goofy-server/src/test/java/de/itvsh/goofy/common/RegexUtilTest.java b/goofy-server/src/test/java/de/itvsh/goofy/common/RegexUtilTest.java new file mode 100644 index 0000000000000000000000000000000000000000..4511f2563f5b4948039d46f0b9762bf3fc69b131 --- /dev/null +++ b/goofy-server/src/test/java/de/itvsh/goofy/common/RegexUtilTest.java @@ -0,0 +1,46 @@ +package de.itvsh.goofy.common; + +import static org.assertj.core.api.Assertions.*; + +import java.util.regex.Pattern; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; + +public class RegexUtilTest { + + @Nested + class TestValidationEMail { + + private final String REGEX = RegexUtil.VALIDATION_EMAIL; + + @ParameterizedTest + @ValueSource(strings = { + "localpart@domain.com", + "local-part-1234567890!#$%&'*+/=?^_`{|}~-.'/&%*@domain.com", + "local-part-@domain.domain.com", + "l@d.c" + }) + void shoulMatchValidEMail(String eMail) { + boolean match = Pattern.matches(REGEX, eMail); + + assertThat(match).isTrue(); + } + + @ParameterizedTest + @ValueSource(strings = { + "local-part@", + "local@part@domain.com", + "local@part@", + "@domain.com", + "local@part@domain.com", + "local@@domain.com", + "local@domaincom" }) + void shoulNotMatchInvalidEmail(String eMail) { + boolean match = Pattern.matches(REGEX, eMail); + + assertThat(match).isFalse(); + } + } +} \ No newline at end of file