@@ -11,6 +11,149 @@ public class ConnectionUrlTest {
11
11
@ Rule
12
12
public ExpectedException thrown = ExpectedException .none ();
13
13
14
+ @ Test
15
+ public void testMssqlConnectionUrlWithoutPort () {
16
+ String urlString = "jdbc:tc:sqlserver:5.7.34://somehostname" ;
17
+ ConnectionUrl url = ConnectionUrl .newInstance (urlString );
18
+
19
+ assertThat (url .getDatabaseType ()).as ("Database Type value is as expected" ).isEqualTo ("sqlserver" );
20
+ assertThat (url .getImageTag ()).as ("Database Image tag value is as expected" ).contains ("5.7.34" );
21
+ assertThat (url .getDbHostString ()).as ("Database Host String is as expected" ).isEqualTo ("somehostname" );
22
+ assertThat (url .getQueryString ()).as ("Query String value is as expected" ).isNotPresent ();
23
+ assertThat (url .getDatabaseHost ()).as ("Database Host value is as expected" ).contains ("somehostname" );
24
+ assertThat (url .getDatabasePort ()).as ("Database Port value is as expected" ).isNotPresent ();
25
+ assertThat (url .getDatabaseName ()).as ("Database Name value is as expected" ).isEmpty ();
26
+
27
+ assertThat (url .getQueryParameters ()).as ("Parameters are empty" ).isEmpty ();
28
+ }
29
+
30
+ @ Test
31
+ public void testMssqlConnectionUrlWithInstanceName () {
32
+ String urlString = "jdbc:tc:sqlserver:5.7.34://somehostname/someinstance:12345" ;
33
+ ConnectionUrl url = ConnectionUrl .newInstance (urlString );
34
+
35
+ assertThat (url .getDatabaseType ()).as ("Database Type value is as expected" ).isEqualTo ("sqlserver" );
36
+ assertThat (url .getImageTag ()).as ("Database Image tag value is as expected" ).contains ("5.7.34" );
37
+ assertThat (url .getDbHostString ())
38
+ .as ("Database Host String is as expected" )
39
+ .isEqualTo ("somehostname/someinstance:12345" );
40
+ assertThat (url .getQueryString ()).as ("Query String value is as expected" ).isNotPresent ();
41
+ assertThat (url .getDatabaseHost ()).as ("Database Host value is as expected" ).contains ("somehostname" );
42
+ assertThat (url .getDatabasePort ()).as ("Database Port value is as expected" ).contains (12345 );
43
+ assertThat (url .getDatabaseName ()).as ("Database Name value is as expected" ).isEmpty ();
44
+
45
+ assertThat (url .getQueryParameters ()).as ("Parameters are empty" ).isEmpty ();
46
+ }
47
+
48
+ @ Test
49
+ public void testPlainMssqlConnectionUrl () {
50
+ String urlString = "jdbc:tc:sqlserver:5.7.34://somehostname:3306" ;
51
+ ConnectionUrl url = ConnectionUrl .newInstance (urlString );
52
+
53
+ assertThat (url .getDatabaseType ()).as ("Database Type value is as expected" ).isEqualTo ("sqlserver" );
54
+ assertThat (url .getImageTag ()).as ("Database Image tag value is as expected" ).contains ("5.7.34" );
55
+ assertThat (url .getDbHostString ()).as ("Database Host String is as expected" ).isEqualTo ("somehostname:3306" );
56
+ assertThat (url .getQueryString ()).as ("Query String value is as expected" ).isNotPresent ();
57
+ assertThat (url .getDatabaseHost ()).as ("Database Host value is as expected" ).contains ("somehostname" );
58
+ assertThat (url .getDatabasePort ()).as ("Database Port value is as expected" ).contains (3306 );
59
+ assertThat (url .getDatabaseName ()).as ("Database Name value is as expected" ).isEmpty ();
60
+
61
+ assertThat (url .getQueryParameters ()).as ("Parameters are empty" ).isEmpty ();
62
+ }
63
+
64
+ @ Test
65
+ public void testMssqlInitScriptPathCapture () {
66
+ String urlString = "jdbc:tc:sqlserver:5.7.34://somehostname:3306;a=b;c=d;TC_INITSCRIPT=somepath/init_mssql.sql" ;
67
+ ConnectionUrl url = ConnectionUrl .newInstance (urlString );
68
+
69
+ assertThat (url .getInitScriptPath ())
70
+ .as ("Database Type value is as expected" )
71
+ .contains ("somepath/init_mssql.sql" );
72
+ assertThat (url .getQueryString ()).as ("Query String value is as expected" ).contains (";a=b;c=d" );
73
+ assertThat (url .getContainerParameters ())
74
+ .as ("INIT SCRIPT Path exists in Container Parameters" )
75
+ .containsEntry ("TC_INITSCRIPT" , "somepath/init_mssql.sql" );
76
+
77
+ //Parameter sets are unmodifiable
78
+ thrown .expect (UnsupportedOperationException .class );
79
+ url .getContainerParameters ().remove ("TC_INITSCRIPT" );
80
+ url .getQueryParameters ().remove ("a" );
81
+ }
82
+
83
+ @ Test
84
+ public void testMssqlInitFunctionCapture () {
85
+ String urlString =
86
+ "jdbc:tc:sqlserver:5.7.34://somehostname;a=b;c=d;TC_INITFUNCTION=org.testcontainers.jdbc.JDBCDriverTest::sampleInitFunction" ;
87
+ ConnectionUrl url = ConnectionUrl .newInstance (urlString );
88
+
89
+ assertThat (url .getInitFunction ()).as ("Init Function parameter exists" ).isPresent ();
90
+
91
+ assertThat (url .getInitFunction ().get ().getClassName ())
92
+ .as ("Init function class is as expected" )
93
+ .isEqualTo ("org.testcontainers.jdbc.JDBCDriverTest" );
94
+ assertThat (url .getInitFunction ().get ().getMethodName ())
95
+ .as ("Init function class is as expected" )
96
+ .isEqualTo ("sampleInitFunction" );
97
+ }
98
+
99
+ @ Test
100
+ public void testMssqlTmpfsOption () {
101
+ String urlString = "jdbc:tc:sqlserver://somehostname;TC_TMPFS=key:value,key1:value1" ;
102
+ ConnectionUrl url = ConnectionUrl .newInstance (urlString );
103
+
104
+ assertThat (url .getQueryParameters ()).as ("Connection Parameters set is empty" ).isEmpty ();
105
+ assertThat (url .getContainerParameters ()).as ("Container Parameters set is not empty" ).isNotEmpty ();
106
+ assertThat (url .getContainerParameters ())
107
+ .as ("Container Parameter TC_TMPFS is true" )
108
+ .containsEntry ("TC_TMPFS" , "key:value,key1:value1" );
109
+ assertThat (url .getTmpfsOptions ()).as ("tmpfs option key has correct value" ).containsEntry ("key" , "value" );
110
+ assertThat (url .getTmpfsOptions ()).as ("tmpfs option key1 has correct value" ).containsEntry ("key1" , "value1" );
111
+ }
112
+
113
+ @ Test
114
+ public void testMssqlConnectionUrlWithoutDatabaseName () {
115
+ String urlString = "jdbc:tc:sqlserver:5.7.34://somehostname:3306;a=b;c=d;" ;
116
+ ConnectionUrl url = ConnectionUrl .newInstance (urlString );
117
+
118
+ assertThat (url .getDatabaseType ()).as ("Database Type value is as expected" ).isEqualTo ("sqlserver" );
119
+ assertThat (url .getImageTag ()).as ("Database Image tag value is as expected" ).contains ("5.7.34" );
120
+ assertThat (url .getDbHostString ()).as ("Database Host String is as expected" ).isEqualTo ("somehostname:3306" );
121
+ assertThat (url .getQueryString ()).as ("Query String value is as expected" ).contains (";a=b;c=d" );
122
+ assertThat (url .getDatabaseHost ()).as ("Database Host value is as expected" ).contains ("somehostname" );
123
+ assertThat (url .getDatabasePort ()).as ("Database Port value is as expected" ).contains (3306 );
124
+ assertThat (url .getDatabaseName ()).as ("Database Name value is as expected" ).isNotPresent ();
125
+
126
+ assertThat (url .getQueryParameters ()).as ("Parameter a is captured" ).containsEntry ("a" , "b" );
127
+ assertThat (url .getQueryParameters ()).as ("Parameter c is captured" ).containsEntry ("c" , "d" );
128
+ }
129
+
130
+ @ Test
131
+ public void testMssqlConnection () {
132
+ String urlString = "jdbc:tc:sqlserver:5.7.34://somehostname:3306;a=b;c=d;databaseName=database" ;
133
+ ConnectionUrl url = ConnectionUrl .newInstance (urlString );
134
+
135
+ assertThat (url .getDatabaseType ()).as ("Database Type value is as expected" ).isEqualTo ("sqlserver" );
136
+ assertThat (url .getImageTag ()).as ("Database Image tag value is as expected" ).contains ("5.7.34" );
137
+ assertThat (url .getDbHostString ()).as ("Database Host String is as expected" ).isEqualTo ("somehostname:3306" );
138
+ assertThat (url .getQueryString ())
139
+ .as ("Query String value is as expected" )
140
+ .contains (";a=b;c=d;databaseName=database" );
141
+ assertThat (url .getDatabaseHost ()).as ("Database Host value is as expected" ).contains ("somehostname" );
142
+ assertThat (url .getDatabasePort ()).as ("Database Port value is as expected" ).contains (3306 );
143
+ assertThat (url .getDatabaseName ()).as ("Database Name value is as expected" ).contains ("database" );
144
+
145
+ assertThat (url .getQueryParameters ()).as ("Parameter a is captured" ).containsEntry ("a" , "b" );
146
+ assertThat (url .getQueryParameters ()).as ("Parameter c is captured" ).containsEntry ("c" , "d" );
147
+ }
148
+
149
+ @ Test
150
+ public void testMssqlDaemonCapture () {
151
+ String urlString = "jdbc:tc:sqlserver:5.7.34://somehostname/instance:3306;a=b;c=d;TC_DAEMON=true" ;
152
+ ConnectionUrl url = ConnectionUrl .newInstance (urlString );
153
+
154
+ assertThat (url .isInDaemonMode ()).as ("Daemon flag is set to true." ).isTrue ();
155
+ }
156
+
14
157
@ Test
15
158
public void testConnectionUrl1 () {
16
159
String urlString = "jdbc:tc:mysql:5.7.34://somehostname:3306/databasename?a=b&c=d" ;
0 commit comments