From 80353786264876af457ac34e3cc3acc59a634ebe Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Mon, 19 Apr 2021 12:21:06 +0200
Subject: [PATCH] OZG-531 email validation: allow upperCase character in
 domainPart

---
 .../java/de/itvsh/goofy/common/RegexUtil.java |  2 +-
 .../de/itvsh/goofy/common/RegexUtilTest.java  | 78 ++++++++++++-------
 2 files changed, 51 insertions(+), 29 deletions(-)

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
index 77667907dd..9608e5379f 100644
--- a/goofy-server/src/main/java/de/itvsh/goofy/common/RegexUtil.java
+++ b/goofy-server/src/main/java/de/itvsh/goofy/common/RegexUtil.java
@@ -6,5 +6,5 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 public class RegexUtil {
 
-	public static final String VALIDATION_EMAIL = "[a-zA-Z0-9!#$%&'*+\\/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+\\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?";
+	public static final String VALIDATION_EMAIL = "[a-zA-Z0-9!#$%&'*+\\/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+\\/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?";
 }
\ 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
index 967534f270..902656f146 100644
--- a/goofy-server/src/test/java/de/itvsh/goofy/common/RegexUtilTest.java
+++ b/goofy-server/src/test/java/de/itvsh/goofy/common/RegexUtilTest.java
@@ -34,49 +34,71 @@ public class RegexUtilTest {
 		}
 
 		@Nested
-		class TestDomainDot {
+		class TestDomain {
 
-			@Test
-			void shouldMatchOnOneDot() {
-				shouldMatch("localpart@domain.com");
-			}
+			@Nested
+			class TestDomainDot {
 
-			@Test
-			void shouldNotMatchOnNoneDot() {
-				shouldNotMatch("localpart@domaincom");
+				@Test
+				void shouldMatchOnOneDot() {
+					shouldMatch("localpart@domain.com");
+				}
+
+				@Test
+				void shouldNotMatchOnNoneDot() {
+					shouldNotMatch("localpart@domaincom");
+				}
+
+				@Test
+				void shouldMatchOnMultipleDots() {
+					shouldNotMatch("localpart@domain...com");
+				}
 			}
 
-			@Test
-			void shouldMatchOnMultipleDots() {
-				shouldNotMatch("localpart@domain...com");
+			@Nested
+			class TestDomainCharCaseSensitive {
+
+				@Test
+				void shouldMatchOnLowerCaseChar() {
+					shouldMatch("localpart@domain.com");
+				}
+
+				@Test
+				void shouldMatchOnUpperCaseChar() {
+					shouldMatch("localpart@DOMAIN.COM");
+				}
 			}
 		}
 
 		@Nested
 		class TestLocalPart {
 
-			@Test
-			void shouldMatchOnAtLeastOneChar() {
-				shouldMatch("l@domain.com");
-			}
+			@Nested
+			class TestLocalPartChar {
 
-			@Test
-			void shouldMatchOnNoneChar() {
-				shouldNotMatch("@domain.com");
+				@Test
+				void shouldMatchOnAtLeastOneChar() {
+					shouldMatch("l@domain.com");
+				}
+
+				@Test
+				void shouldMatchOnNoneChar() {
+					shouldNotMatch("@domain.com");
+				}
 			}
-		}
 
-		@Nested
-		class TestLocalPartCase {
+			@Nested
+			class TestLocalPartCharCaseSensitive {
 
-			@Test
-			void shouldAllowUpperCaseChar() {
-				shouldMatch("UPPER_CHAR@domain.com");
-			}
+				@Test
+				void shouldAllowUpperCaseChar() {
+					shouldMatch("UPPER_CHAR@domain.com");
+				}
 
-			@Test
-			void shouldAllowLowerCaseChar() {
-				shouldMatch("lower_char@domain.com");
+				@Test
+				void shouldAllowLowerCaseChar() {
+					shouldMatch("lower_char@domain.com");
+				}
 			}
 		}
 
-- 
GitLab