@@ -72,6 +72,34 @@ public void extractAddress_ValidJdbcUrlWithDifferentProtocol() {
7272 assertEquals ("192.168.1.100:5432" , result );
7373 }
7474
75+ @ Test
76+ public void extractAddress_ValidJdbcUrlWithLocalhost () {
77+ String jdbcUrl = "jdbc:mysql://localhost:3306/testdb" ;
78+ String result = RouteUtils .extractAddress (jdbcUrl );
79+ assertEquals ("localhost:3306" , result );
80+ }
81+
82+ @ Test
83+ public void extractAddress_ValidJdbcUrlWithDomainName () {
84+ String jdbcUrl = "jdbc:mysql://db.example.com:3306/testdb" ;
85+ String result = RouteUtils .extractAddress (jdbcUrl );
86+ assertEquals ("db.example.com:3306" , result );
87+ }
88+
89+ @ Test
90+ public void extractAddress_ValidJdbcUrlWithMultiLevelSubdomain () {
91+ String jdbcUrl = "jdbc:postgresql://mysql.db.example.com:5432/mydb" ;
92+ String result = RouteUtils .extractAddress (jdbcUrl );
93+ assertEquals ("mysql.db.example.com:5432" , result );
94+ }
95+
96+ @ Test
97+ public void extractAddress_ValidJdbcUrlWithHyphenatedDomain () {
98+ String jdbcUrl = "jdbc:mysql://my-db-server.example.com:3306/testdb" ;
99+ String result = RouteUtils .extractAddress (jdbcUrl );
100+ assertEquals ("my-db-server.example.com:3306" , result );
101+ }
102+
75103 @ Test
76104 public void matchesAuditRoute_EmptyAuditRouteList () {
77105 List <AuditRoute > auditRouteList = new ArrayList <>();
@@ -181,4 +209,67 @@ public void matchesAuditRoute_AllRegex() {
181209 result = RouteUtils .matchesAuditRoute ("1" , "groupIdABC" , auditRouteList );
182210 assertFalse (result );
183211 }
212+
213+ @ Test
214+ public void extractAddress_DomainStartingWithHyphen () {
215+ String jdbcUrl = "jdbc:mysql://-invalid.example.com:3306/testdb" ;
216+ String result = RouteUtils .extractAddress (jdbcUrl );
217+ assertEquals ("-invalid.example.com:3306" , result );
218+ }
219+
220+ @ Test
221+ public void extractAddress_DomainEndingWithHyphen () {
222+ String jdbcUrl = "jdbc:mysql://invalid-.example.com:3306/testdb" ;
223+ String result = RouteUtils .extractAddress (jdbcUrl );
224+ assertEquals ("invalid-.example.com:3306" , result );
225+ }
226+
227+ @ Test
228+ public void extractAddress_DomainStartingWithDot () {
229+ String jdbcUrl = "jdbc:mysql://.invalid.com:3306/testdb" ;
230+ String result = RouteUtils .extractAddress (jdbcUrl );
231+ assertEquals (".invalid.com:3306" , result );
232+ }
233+
234+ @ Test
235+ public void extractAddress_DomainEndingWithDot () {
236+ String jdbcUrl = "jdbc:mysql://invalid.com.:3306/testdb" ;
237+ String result = RouteUtils .extractAddress (jdbcUrl );
238+ assertEquals ("invalid.com.:3306" , result );
239+ }
240+
241+ @ Test
242+ public void extractAddress_JdbcUrlWithQueryParameters () {
243+ String jdbcUrl = "jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC" ;
244+ String result = RouteUtils .extractAddress (jdbcUrl );
245+ assertEquals ("localhost:3306" , result );
246+ }
247+
248+ @ Test
249+ public void extractAddress_JdbcUrlWithQueryParametersAndDomain () {
250+ String jdbcUrl = "jdbc:mysql://db.example.com:3306/testdb?useSSL=false&characterEncoding=utf8" ;
251+ String result = RouteUtils .extractAddress (jdbcUrl );
252+ assertEquals ("db.example.com:3306" , result );
253+ }
254+
255+ @ Test
256+ public void extractAddress_IPv6Address_ReturnsNull () {
257+ String jdbcUrl = "jdbc:mysql://[::1]:3306/testdb" ;
258+ String result = RouteUtils .extractAddress (jdbcUrl );
259+ assertNull (result );
260+ }
261+
262+ @ Test
263+ public void extractAddress_IPv6FullAddress_ReturnsNull () {
264+ String jdbcUrl = "jdbc:mysql://[2001:db8:85a3::8a2e:370:7334]:3306/testdb" ;
265+ String result = RouteUtils .extractAddress (jdbcUrl );
266+ assertNull (result );
267+ }
268+
269+ @ Test
270+ public void extractAddress_DomainWithUnderscore_ReturnsNull () {
271+ String jdbcUrl = "jdbc:mysql://my_server.example.com:3306/testdb" ;
272+ String result = RouteUtils .extractAddress (jdbcUrl );
273+ assertNull (result );
274+ }
184275}
0 commit comments