@@ -252,4 +252,104 @@ public void addDefaultConnectionCollationTestUriDefiningCharacterEncodingKeepsIt
252252
253253 Assert .assertEquals (uri , TransactionLegacy .addDefaultConnectionCollation (uri ));
254254 }
255+
256+ @ Test
257+ public void shouldPinConnectionCollationTestUriWithHostContainingTheParameterNamesReturnsTrue () {
258+ Assert .assertTrue (TransactionLegacy .shouldPinConnectionCollation ("jdbc:mysql://characterEncoding:5555/name" ));
259+ Assert .assertTrue (TransactionLegacy .shouldPinConnectionCollation ("jdbc:mysql://connectionCollation.example.com:5555/name?someParams" ));
260+ }
261+
262+ @ Test
263+ public void shouldPinConnectionCollationTestUriWithDatabaseNameContainingTheParameterNamesReturnsTrue () {
264+ Assert .assertTrue (TransactionLegacy .shouldPinConnectionCollation ("jdbc:mysql://host:5555/connectionCollation" ));
265+ Assert .assertTrue (TransactionLegacy .shouldPinConnectionCollation ("jdbc:mysql://host:5555/characterEncoding?someParams" ));
266+ }
267+
268+ @ Test
269+ public void shouldPinConnectionCollationTestParameterValueContainingTheParameterNamesReturnsTrue () {
270+ Assert .assertTrue (TransactionLegacy .shouldPinConnectionCollation ("jdbc:mysql://host:5555/name?user=connectionCollation" ));
271+ Assert .assertTrue (TransactionLegacy .shouldPinConnectionCollation ("jdbc:mysql://host:5555/name?user=characterEncoding&someParams" ));
272+ }
273+
274+ @ Test
275+ public void shouldPinConnectionCollationTestUriDefiningTheParametersAsTheFirstOneReturnsFalse () {
276+ Assert .assertFalse (TransactionLegacy .shouldPinConnectionCollation ("jdbc:mysql://host:5555/name?connectionCollation=utf8mb4_unicode_ci" ));
277+ Assert .assertFalse (TransactionLegacy .shouldPinConnectionCollation ("jdbc:mysql://host:5555/name?characterEncoding=UTF-8&someParams" ));
278+ }
279+
280+ @ Test
281+ public void addDefaultConnectionCollationTestUriWithHostContainingTheParameterNamesAddsTheDefaultCollation () {
282+ String result = TransactionLegacy .addDefaultConnectionCollation ("jdbc:mysql://characterEncoding.example.com:5555/name" );
283+
284+ Assert .assertEquals ("jdbc:mysql://characterEncoding.example.com:5555/name?connectionCollation=utf8mb4_general_ci" , result );
285+ }
286+
287+ @ Test
288+ public void addDefaultConnectionCollationTestUriWithDatabaseNameContainingTheParameterNamesAddsTheDefaultCollation () {
289+ String result = TransactionLegacy .addDefaultConnectionCollation ("jdbc:mysql://host:5555/connectionCollation?someParams" );
290+
291+ Assert .assertEquals ("jdbc:mysql://host:5555/connectionCollation?someParams&connectionCollation=utf8mb4_general_ci" , result );
292+ }
293+
294+ @ Test
295+ public void getConnectionUriAndDriverTestWithUriWhoseDatabaseNameContainsTheParameterNamePinsTheDefaultCollation () {
296+ properties .setProperty ("db.cloud.uri" , "jdbc:mysql://host:5555/characterEncoding" );
297+
298+ Pair <String , String > result = TransactionLegacy .getConnectionUriAndDriver (properties , null , false , "cloud" );
299+
300+ Assert .assertEquals ("jdbc:mysql://host:5555/characterEncoding?connectionCollation=utf8mb4_general_ci" , result .first ());
301+ }
302+
303+ @ Test
304+ public void getConnectionUriAndDriverTestWithoutUriAndDatabaseNameContainingTheParameterNamePinsTheDefaultCollation () {
305+ properties .setProperty ("db.cloud.uri" , "" );
306+ properties .setProperty ("db.cloud.driver" , "driver" );
307+ properties .setProperty ("db.cloud.name" , "connectionCollation" );
308+
309+ Pair <String , String > result = TransactionLegacy .getConnectionUriAndDriver (properties , null , false , "cloud" );
310+
311+ Assert .assertEquals ("driver://host:5555/connectionCollation?autoReconnect=false&someParams&scrollTolerantForwardOnly=true"
312+ + "&connectionCollation=utf8mb4_general_ci" , result .first ());
313+ }
314+
315+ @ Test
316+ public void containsUriParamTestParamDefinedAsTheFirstOneReturnsTrue () {
317+ Assert .assertTrue (TransactionLegacy .containsUriParam ("jdbc:mysql://host:5555/name?serverTimezone=UTC" , "serverTimezone" ));
318+ }
319+
320+ @ Test
321+ public void containsUriParamTestParamDefinedAfterOtherParamsReturnsTrue () {
322+ Assert .assertTrue (TransactionLegacy .containsUriParam ("jdbc:mysql://host:5555/name?someParams&serverTimezone=UTC" , "serverTimezone" ));
323+ }
324+
325+ @ Test
326+ public void containsUriParamTestOnlyTheUriParamsReturnsTrue () {
327+ Assert .assertTrue (TransactionLegacy .containsUriParam ("serverTimezone=UTC&someParams" , "serverTimezone" ));
328+ }
329+
330+ @ Test
331+ public void containsUriParamTestParamIsPartOfTheHostOrOfTheDatabaseNameReturnsFalse () {
332+ Assert .assertFalse (TransactionLegacy .containsUriParam ("jdbc:mysql://serverTimezone:5555/name" , "serverTimezone" ));
333+ Assert .assertFalse (TransactionLegacy .containsUriParam ("jdbc:mysql://host:5555/serverTimezone?someParams" , "serverTimezone" ));
334+ }
335+
336+ @ Test
337+ public void containsUriParamTestParamIsTheValueOfAnotherParamReturnsFalse () {
338+ Assert .assertFalse (TransactionLegacy .containsUriParam ("jdbc:mysql://host:5555/name?user=serverTimezone" , "serverTimezone" ));
339+ }
340+
341+ @ Test
342+ public void containsUriParamTestParamIsNotDefinedReturnsFalse () {
343+ Assert .assertFalse (TransactionLegacy .containsUriParam ("jdbc:mysql://host:5555/name?someParams" , "serverTimezone" ));
344+ }
345+
346+ @ Test
347+ public void containsUriParamTestNullConnectionUriReturnsFalse () {
348+ Assert .assertFalse (TransactionLegacy .containsUriParam (null , "serverTimezone" ));
349+ }
350+
351+ @ Test
352+ public void containsUriParamTestIsCaseInsensitive () {
353+ Assert .assertTrue (TransactionLegacy .containsUriParam ("jdbc:mysql://host:5555/name?SERVERTIMEZONE=UTC" , "serverTimezone" ));
354+ }
255355}
0 commit comments