16
16
17
17
package com .google .cloud .spanner .jdbc ;
18
18
19
- import static org .hamcrest .CoreMatchers .equalTo ;
20
- import static org .hamcrest .CoreMatchers .is ;
21
- import static org .hamcrest .CoreMatchers .nullValue ;
22
- import static org .junit .Assert .assertThat ;
19
+ import static com .google .common .truth .Truth .assertThat ;
20
+ import static org .junit .Assert .fail ;
23
21
24
- import com .google .auth .oauth2 .GoogleCredentials ;
25
22
import com .google .auth .oauth2 .ServiceAccountCredentials ;
26
23
import com .google .cloud .spanner .SpannerOptions ;
27
24
import java .util .Arrays ;
@@ -35,22 +32,38 @@ public class ConnectionOptionsTest {
35
32
ConnectionOptionsTest .class .getResource ("test-key.json" ).getFile ();
36
33
private static final String DEFAULT_HOST = "https://spanner.googleapis.com" ;
37
34
35
+ @ Test
36
+ public void testBuildWithURIWithDots () {
37
+ ConnectionOptions .Builder builder = ConnectionOptions .newBuilder ();
38
+ builder .setUri (
39
+ "cloudspanner:/projects/some-company.com:test-project-123/instances/test-instance-123/databases/test-database-123" );
40
+ builder .setCredentialsUrl (FILE_TEST_PATH );
41
+ ConnectionOptions options = builder .build ();
42
+ assertThat (options .getHost ()).isEqualTo (DEFAULT_HOST );
43
+ assertThat (options .getProjectId ()).isEqualTo ("some-company.com:test-project-123" );
44
+ assertThat (options .getInstanceId ()).isEqualTo ("test-instance-123" );
45
+ assertThat (options .getDatabaseName ()).isEqualTo ("test-database-123" );
46
+ assertThat (options .getCredentials ())
47
+ .isEqualTo (new CredentialsService ().createCredentials (FILE_TEST_PATH ));
48
+ assertThat (options .isAutocommit ()).isEqualTo (ConnectionOptions .DEFAULT_AUTOCOMMIT );
49
+ assertThat (options .isReadOnly ()).isEqualTo (ConnectionOptions .DEFAULT_READONLY );
50
+ }
51
+
38
52
@ Test
39
53
public void testBuildWithValidURIAndCredentialsFileURL () {
40
54
ConnectionOptions .Builder builder = ConnectionOptions .newBuilder ();
41
55
builder .setUri (
42
56
"cloudspanner:/projects/test-project-123/instances/test-instance-123/databases/test-database-123" );
43
57
builder .setCredentialsUrl (FILE_TEST_PATH );
44
58
ConnectionOptions options = builder .build ();
45
- assertThat (options .getHost (), is (equalTo (DEFAULT_HOST )));
46
- assertThat (options .getProjectId (), is (equalTo ("test-project-123" )));
47
- assertThat (options .getInstanceId (), is (equalTo ("test-instance-123" )));
48
- assertThat (options .getDatabaseName (), is (equalTo ("test-database-123" )));
49
- assertThat (
50
- (GoogleCredentials ) options .getCredentials (),
51
- is (equalTo (new CredentialsService ().createCredentials (FILE_TEST_PATH ))));
52
- assertThat (options .isAutocommit (), is (equalTo (ConnectionOptions .DEFAULT_AUTOCOMMIT )));
53
- assertThat (options .isReadOnly (), is (equalTo (ConnectionOptions .DEFAULT_READONLY )));
59
+ assertThat (options .getHost ()).isEqualTo (DEFAULT_HOST );
60
+ assertThat (options .getProjectId ()).isEqualTo ("test-project-123" );
61
+ assertThat (options .getInstanceId ()).isEqualTo ("test-instance-123" );
62
+ assertThat (options .getDatabaseName ()).isEqualTo ("test-database-123" );
63
+ assertThat (options .getCredentials ())
64
+ .isEqualTo (new CredentialsService ().createCredentials (FILE_TEST_PATH ));
65
+ assertThat (options .isAutocommit ()).isEqualTo (ConnectionOptions .DEFAULT_AUTOCOMMIT );
66
+ assertThat (options .isReadOnly ()).isEqualTo (ConnectionOptions .DEFAULT_READONLY );
54
67
}
55
68
56
69
@ Test
@@ -60,15 +73,14 @@ public void testBuildWithValidURIAndProperties() {
60
73
"cloudspanner:/projects/test-project-123/instances/test-instance-123/databases/test-database-123?autocommit=false;readonly=true" );
61
74
builder .setCredentialsUrl (FILE_TEST_PATH );
62
75
ConnectionOptions options = builder .build ();
63
- assertThat (options .getHost (), is (equalTo (DEFAULT_HOST )));
64
- assertThat (options .getProjectId (), is (equalTo ("test-project-123" )));
65
- assertThat (options .getInstanceId (), is (equalTo ("test-instance-123" )));
66
- assertThat (options .getDatabaseName (), is (equalTo ("test-database-123" )));
67
- assertThat (
68
- (GoogleCredentials ) options .getCredentials (),
69
- is (equalTo (new CredentialsService ().createCredentials (FILE_TEST_PATH ))));
70
- assertThat (options .isAutocommit (), is (equalTo (false )));
71
- assertThat (options .isReadOnly (), is (equalTo (true )));
76
+ assertThat (options .getHost ()).isEqualTo (DEFAULT_HOST );
77
+ assertThat (options .getProjectId ()).isEqualTo ("test-project-123" );
78
+ assertThat (options .getInstanceId ()).isEqualTo ("test-instance-123" );
79
+ assertThat (options .getDatabaseName ()).isEqualTo ("test-database-123" );
80
+ assertThat (options .getCredentials ())
81
+ .isEqualTo (new CredentialsService ().createCredentials (FILE_TEST_PATH ));
82
+ assertThat (options .isAutocommit ()).isEqualTo (false );
83
+ assertThat (options .isReadOnly ()).isEqualTo (true );
72
84
}
73
85
74
86
@ Test
@@ -78,15 +90,14 @@ public void testBuildWithHostAndValidURI() {
78
90
"cloudspanner://test-spanner.googleapis.com/projects/test-project-123/instances/test-instance-123/databases/test-database-123" );
79
91
builder .setCredentialsUrl (FILE_TEST_PATH );
80
92
ConnectionOptions options = builder .build ();
81
- assertThat (options .getHost (), is (equalTo ("https://test-spanner.googleapis.com" )));
82
- assertThat (options .getProjectId (), is (equalTo ("test-project-123" )));
83
- assertThat (options .getInstanceId (), is (equalTo ("test-instance-123" )));
84
- assertThat (options .getDatabaseName (), is (equalTo ("test-database-123" )));
85
- assertThat (
86
- (GoogleCredentials ) options .getCredentials (),
87
- is (equalTo (new CredentialsService ().createCredentials (FILE_TEST_PATH ))));
88
- assertThat (options .isAutocommit (), is (equalTo (ConnectionOptions .DEFAULT_AUTOCOMMIT )));
89
- assertThat (options .isReadOnly (), is (equalTo (ConnectionOptions .DEFAULT_READONLY )));
93
+ assertThat (options .getHost ()).isEqualTo ("https://test-spanner.googleapis.com" );
94
+ assertThat (options .getProjectId ()).isEqualTo ("test-project-123" );
95
+ assertThat (options .getInstanceId ()).isEqualTo ("test-instance-123" );
96
+ assertThat (options .getDatabaseName ()).isEqualTo ("test-database-123" );
97
+ assertThat (options .getCredentials ())
98
+ .isEqualTo (new CredentialsService ().createCredentials (FILE_TEST_PATH ));
99
+ assertThat (options .isAutocommit ()).isEqualTo (ConnectionOptions .DEFAULT_AUTOCOMMIT );
100
+ assertThat (options .isReadOnly ()).isEqualTo (ConnectionOptions .DEFAULT_READONLY );
90
101
}
91
102
92
103
@ Test
@@ -96,15 +107,14 @@ public void testBuildWithLocalhostPortAndValidURI() {
96
107
"cloudspanner://localhost:8443/projects/test-project-123/instances/test-instance-123/databases/test-database-123" );
97
108
builder .setCredentialsUrl (FILE_TEST_PATH );
98
109
ConnectionOptions options = builder .build ();
99
- assertThat (options .getHost (), is (equalTo ("https://localhost:8443" )));
100
- assertThat (options .getProjectId (), is (equalTo ("test-project-123" )));
101
- assertThat (options .getInstanceId (), is (equalTo ("test-instance-123" )));
102
- assertThat (options .getDatabaseName (), is (equalTo ("test-database-123" )));
103
- assertThat (
104
- (GoogleCredentials ) options .getCredentials (),
105
- is (equalTo (new CredentialsService ().createCredentials (FILE_TEST_PATH ))));
106
- assertThat (options .isAutocommit (), is (equalTo (ConnectionOptions .DEFAULT_AUTOCOMMIT )));
107
- assertThat (options .isReadOnly (), is (equalTo (ConnectionOptions .DEFAULT_READONLY )));
110
+ assertThat (options .getHost ()).isEqualTo ("https://localhost:8443" );
111
+ assertThat (options .getProjectId ()).isEqualTo ("test-project-123" );
112
+ assertThat (options .getInstanceId ()).isEqualTo ("test-instance-123" );
113
+ assertThat (options .getDatabaseName ()).isEqualTo ("test-database-123" );
114
+ assertThat (options .getCredentials ())
115
+ .isEqualTo (new CredentialsService ().createCredentials (FILE_TEST_PATH ));
116
+ assertThat (options .isAutocommit ()).isEqualTo (ConnectionOptions .DEFAULT_AUTOCOMMIT );
117
+ assertThat (options .isReadOnly ()).isEqualTo (ConnectionOptions .DEFAULT_READONLY );
108
118
}
109
119
110
120
@ Test
@@ -114,21 +124,20 @@ public void testBuildWithDefaultProjectPlaceholder() {
114
124
"cloudspanner:/projects/default_project_id/instances/test-instance-123/databases/test-database-123" );
115
125
builder .setCredentialsUrl (FILE_TEST_PATH );
116
126
ConnectionOptions options = builder .build ();
117
- assertThat (options .getHost (), is ( equalTo ( DEFAULT_HOST )) );
127
+ assertThat (options .getHost ()). isEqualTo ( DEFAULT_HOST );
118
128
String projectId = SpannerOptions .getDefaultProjectId ();
119
129
if (projectId == null ) {
120
130
projectId =
121
131
((ServiceAccountCredentials ) new CredentialsService ().createCredentials (FILE_TEST_PATH ))
122
132
.getProjectId ();
123
133
}
124
- assertThat (options .getProjectId (), is (equalTo (projectId )));
125
- assertThat (options .getInstanceId (), is (equalTo ("test-instance-123" )));
126
- assertThat (options .getDatabaseName (), is (equalTo ("test-database-123" )));
127
- assertThat (
128
- (GoogleCredentials ) options .getCredentials (),
129
- is (equalTo (new CredentialsService ().createCredentials (FILE_TEST_PATH ))));
130
- assertThat (options .isAutocommit (), is (equalTo (ConnectionOptions .DEFAULT_AUTOCOMMIT )));
131
- assertThat (options .isReadOnly (), is (equalTo (ConnectionOptions .DEFAULT_READONLY )));
134
+ assertThat (options .getProjectId ()).isEqualTo (projectId );
135
+ assertThat (options .getInstanceId ()).isEqualTo ("test-instance-123" );
136
+ assertThat (options .getDatabaseName ()).isEqualTo ("test-database-123" );
137
+ assertThat (options .getCredentials ())
138
+ .isEqualTo (new CredentialsService ().createCredentials (FILE_TEST_PATH ));
139
+ assertThat (options .isAutocommit ()).isEqualTo (ConnectionOptions .DEFAULT_AUTOCOMMIT );
140
+ assertThat (options .isReadOnly ()).isEqualTo (ConnectionOptions .DEFAULT_READONLY );
132
141
}
133
142
134
143
@ Test
@@ -203,129 +212,112 @@ public void testBuilderSetUri() {
203
212
}
204
213
205
214
private void setInvalidUri (ConnectionOptions .Builder builder , String uri ) {
206
- boolean invalid = false ;
207
215
try {
208
216
builder .setUri (uri );
217
+ fail (uri + " should be considered an invalid uri" );
209
218
} catch (IllegalArgumentException e ) {
210
- invalid = true ;
211
219
}
212
- assertThat (uri + " should be considered an invalid uri" , invalid , is (true ));
213
220
}
214
221
215
222
private void setInvalidProperty (
216
223
ConnectionOptions .Builder builder , String uri , String expectedInvalidProperties ) {
217
- boolean invalid = false ;
218
224
try {
219
225
builder .setUri (uri );
226
+ fail ("missing expected exception" );
220
227
} catch (IllegalArgumentException e ) {
221
- invalid = e .getMessage ().contains (expectedInvalidProperties );
228
+ assertThat ( e .getMessage () ).contains (expectedInvalidProperties );
222
229
}
223
- assertThat (uri + " should contain invalid properties" , invalid , is (true ));
224
230
}
225
231
226
232
@ Test
227
233
public void testParseUriProperty () {
228
234
final String baseUri =
229
235
"cloudspanner:/projects/test-project-123/instances/test-instance/databases/test-database" ;
230
236
231
- assertThat (ConnectionOptions .parseUriProperty (baseUri , "autocommit" ), is (nullValue ()));
232
- assertThat (
233
- ConnectionOptions .parseUriProperty (baseUri + "?autocommit=true" , "autocommit" ),
234
- is (equalTo ("true" )));
237
+ assertThat (ConnectionOptions .parseUriProperty (baseUri , "autocommit" )).isNull ();
238
+ assertThat (ConnectionOptions .parseUriProperty (baseUri + "?autocommit=true" , "autocommit" ))
239
+ .isEqualTo ("true" );
240
+ assertThat (ConnectionOptions .parseUriProperty (baseUri + "?autocommit=false" , "autocommit" ))
241
+ .isEqualTo ("false" );
242
+ assertThat (ConnectionOptions .parseUriProperty (baseUri + "?autocommit=true;" , "autocommit" ))
243
+ .isEqualTo ("true" );
244
+ assertThat (ConnectionOptions .parseUriProperty (baseUri + "?autocommit=false;" , "autocommit" ))
245
+ .isEqualTo ("false" );
235
246
assertThat (
236
- ConnectionOptions .parseUriProperty (baseUri + "?autocommit=false" , "autocommit" ),
237
- is (equalTo ("false" )));
247
+ ConnectionOptions .parseUriProperty (
248
+ baseUri + "?autocommit=true;readOnly=false" , "autocommit" ))
249
+ .isEqualTo ("true" );
238
250
assertThat (
239
- ConnectionOptions .parseUriProperty (baseUri + "?autocommit=true;" , "autocommit" ),
240
- is (equalTo ("true" )));
251
+ ConnectionOptions .parseUriProperty (
252
+ baseUri + "?autocommit=false;readOnly=false" , "autocommit" ))
253
+ .isEqualTo ("false" );
241
254
assertThat (
242
- ConnectionOptions .parseUriProperty (baseUri + "?autocommit=false;" , "autocommit" ),
243
- is (equalTo ("false" )));
255
+ ConnectionOptions .parseUriProperty (
256
+ baseUri + "?readOnly=false;autocommit=true" , "autocommit" ))
257
+ .isEqualTo ("true" );
244
258
assertThat (
245
- ConnectionOptions .parseUriProperty (
246
- baseUri + "?autocommit=true;readOnly =false" , "autocommit" ),
247
- is ( equalTo ( "true" )) );
259
+ ConnectionOptions .parseUriProperty (
260
+ baseUri + "?readOnly=false;autocommit =false" , "autocommit" ))
261
+ . isEqualTo ( "false" );
248
262
assertThat (
249
- ConnectionOptions .parseUriProperty (
250
- baseUri + "?autocommit =false;readOnly=false " , "autocommit" ),
251
- is ( equalTo ( "false" )) );
263
+ ConnectionOptions .parseUriProperty (
264
+ baseUri + "?readOnly =false;autocommit=true;foo=bar " , "autocommit" ))
265
+ . isEqualTo ( "true" );
252
266
assertThat (
253
- ConnectionOptions .parseUriProperty (
254
- baseUri + "?readOnly=false;autocommit=true" , "autocommit" ),
255
- is (equalTo ("true" )));
256
- assertThat (
257
- ConnectionOptions .parseUriProperty (
258
- baseUri + "?readOnly=false;autocommit=false" , "autocommit" ),
259
- is (equalTo ("false" )));
260
- assertThat (
261
- ConnectionOptions .parseUriProperty (
262
- baseUri + "?readOnly=false;autocommit=true;foo=bar" , "autocommit" ),
263
- is (equalTo ("true" )));
264
- assertThat (
265
- ConnectionOptions .parseUriProperty (
266
- baseUri + "?readOnly=false;autocommit=false;foo=bar" , "autocommit" ),
267
- is (equalTo ("false" )));
267
+ ConnectionOptions .parseUriProperty (
268
+ baseUri + "?readOnly=false;autocommit=false;foo=bar" , "autocommit" ))
269
+ .isEqualTo ("false" );
268
270
269
271
// case insensitive
270
- assertThat (
271
- ConnectionOptions .parseUriProperty (baseUri + "?AutoCommit=true" , "autocommit" ),
272
- is (equalTo ("true" )));
273
- assertThat (
274
- ConnectionOptions .parseUriProperty (baseUri + "?AutoCommit=false" , "autocommit" ),
275
- is (equalTo ("false" )));
272
+ assertThat (ConnectionOptions .parseUriProperty (baseUri + "?AutoCommit=true" , "autocommit" ))
273
+ .isEqualTo ("true" );
274
+ assertThat (ConnectionOptions .parseUriProperty (baseUri + "?AutoCommit=false" , "autocommit" ))
275
+ .isEqualTo ("false" );
276
276
277
277
// ; instead of ? before the properties is ok
278
- assertThat (
279
- ConnectionOptions .parseUriProperty (baseUri + ";autocommit=true" , "autocommit" ),
280
- is (equalTo ("true" )));
278
+ assertThat (ConnectionOptions .parseUriProperty (baseUri + ";autocommit=true" , "autocommit" ))
279
+ .isEqualTo ("true" );
281
280
282
281
// forgot the ? or ; before the properties
283
- assertThat (
284
- ConnectionOptions .parseUriProperty (baseUri + "autocommit=true" , "autocommit" ),
285
- is (nullValue ()));
282
+ assertThat (ConnectionOptions .parseUriProperty (baseUri + "autocommit=true" , "autocommit" ))
283
+ .isNull ();
286
284
// substring is not ok
287
- assertThat (
288
- ConnectionOptions .parseUriProperty (baseUri + "?isautocommit=true" , "autocommit" ),
289
- is (nullValue ()));
285
+ assertThat (ConnectionOptions .parseUriProperty (baseUri + "?isautocommit=true" , "autocommit" ))
286
+ .isNull ();
290
287
}
291
288
292
289
@ Test
293
290
public void testParseProperties () {
294
291
final String baseUri =
295
292
"cloudspanner:/projects/test-project-123/instances/test-instance/databases/test-database" ;
296
- assertThat (
297
- ConnectionOptions .parseProperties (baseUri + "?autocommit=true" ),
298
- is (equalTo (Arrays .asList ("autocommit" ))));
299
- assertThat (
300
- ConnectionOptions .parseProperties (baseUri + "?autocommit=true;readonly=false" ),
301
- is (equalTo (Arrays .asList ("autocommit" , "readonly" ))));
302
- assertThat (
303
- ConnectionOptions .parseProperties (baseUri + "?autocommit=true;READONLY=false" ),
304
- is (equalTo (Arrays .asList ("autocommit" , "READONLY" ))));
305
- assertThat (
306
- ConnectionOptions .parseProperties (baseUri + ";autocommit=true;readonly=false" ),
307
- is (equalTo (Arrays .asList ("autocommit" , "readonly" ))));
308
- assertThat (
309
- ConnectionOptions .parseProperties (baseUri + ";autocommit=true;readonly=false;" ),
310
- is (equalTo (Arrays .asList ("autocommit" , "readonly" ))));
293
+ assertThat (ConnectionOptions .parseProperties (baseUri + "?autocommit=true" ))
294
+ .isEqualTo (Arrays .asList ("autocommit" ));
295
+ assertThat (ConnectionOptions .parseProperties (baseUri + "?autocommit=true;readonly=false" ))
296
+ .isEqualTo (Arrays .asList ("autocommit" , "readonly" ));
297
+ assertThat (ConnectionOptions .parseProperties (baseUri + "?autocommit=true;READONLY=false" ))
298
+ .isEqualTo (Arrays .asList ("autocommit" , "READONLY" ));
299
+ assertThat (ConnectionOptions .parseProperties (baseUri + ";autocommit=true;readonly=false" ))
300
+ .isEqualTo (Arrays .asList ("autocommit" , "readonly" ));
301
+ assertThat (ConnectionOptions .parseProperties (baseUri + ";autocommit=true;readonly=false;" ))
302
+ .isEqualTo (Arrays .asList ("autocommit" , "readonly" ));
311
303
}
312
304
313
305
@ Test
314
306
public void testParsePropertiesSpecifiedMultipleTimes () {
315
307
final String baseUri =
316
308
"cloudspanner:/projects/test-project-123/instances/test-instance/databases/test-database" ;
317
309
assertThat (
318
- ConnectionOptions .parseUriProperty (
319
- baseUri + "?autocommit=true;autocommit=false" , "autocommit" ),
320
- is ( equalTo ( "true" )) );
310
+ ConnectionOptions .parseUriProperty (
311
+ baseUri + "?autocommit=true;autocommit=false" , "autocommit" ))
312
+ . isEqualTo ( "true" );
321
313
assertThat (
322
- ConnectionOptions .parseUriProperty (
323
- baseUri + "?autocommit=false;autocommit=true" , "autocommit" ),
324
- is ( equalTo ( "false" )) );
314
+ ConnectionOptions .parseUriProperty (
315
+ baseUri + "?autocommit=false;autocommit=true" , "autocommit" ))
316
+ . isEqualTo ( "false" );
325
317
assertThat (
326
- ConnectionOptions .parseUriProperty (
327
- baseUri + ";autocommit=false;readonly=false;autocommit=true" , "autocommit" ),
328
- is ( equalTo ( "false" )) );
318
+ ConnectionOptions .parseUriProperty (
319
+ baseUri + ";autocommit=false;readonly=false;autocommit=true" , "autocommit" ))
320
+ . isEqualTo ( "false" );
329
321
ConnectionOptions .newBuilder ()
330
322
.setUri (
331
323
"cloudspanner:/projects/test-project-123/instances/test-instance/databases/test-database"
0 commit comments