@@ -239,7 +239,33 @@ public void testDefaultCredentialNoGceCheck() throws IOException {
239239 assertEquals (0 , transport .getRequestCount ());
240240 }
241241
242- public void testDefaultCredentialWithCustomMetadataServerAddress () throws IOException {
242+ public void testDefaultCredentialWithInvalidCustomMetadataServerAddress () throws IOException {
243+ MockRequestUrlRecordingTransport transport = new MockRequestUrlRecordingTransport ();
244+ TestDefaultCredentialProvider testProvider = new TestDefaultCredentialProvider ();
245+ testProvider .setEnv ("GCE_METADATA_HOST" , "this::domain.contains.invalid.chars" );
246+
247+ try {
248+ testProvider .getDefaultCredential (transport , JSON_FACTORY );
249+ fail ("No credential expected for default test provider." );
250+ } catch (IOException expected ) {
251+ }
252+ assertTrue (transport .urlWasRequested ("http://169.254.169.254" ));
253+ }
254+
255+ public void testDefaultCredentialWithInvalidCustomMetadataServerPort () throws IOException {
256+ MockRequestUrlRecordingTransport transport = new MockRequestUrlRecordingTransport ();
257+ TestDefaultCredentialProvider testProvider = new TestDefaultCredentialProvider ();
258+ testProvider .setEnv ("GCE_METADATA_HOST" , "test.metadata.server.address:portShouldBeANumber" );
259+
260+ try {
261+ testProvider .getDefaultCredential (transport , JSON_FACTORY );
262+ fail ("No credential expected for default test provider." );
263+ } catch (IOException expected ) {
264+ }
265+ assertTrue (transport .urlWasRequested ("http://169.254.169.254" ));
266+ }
267+
268+ public void testDefaultCredentialWithCustomMetadataServerDomainAddress () throws IOException {
243269 MockRequestUrlRecordingTransport transport = new MockRequestUrlRecordingTransport ();
244270 TestDefaultCredentialProvider testProvider = new TestDefaultCredentialProvider ();
245271 testProvider .setEnv ("GCE_METADATA_HOST" , "test.metadata.server.address" );
@@ -252,6 +278,88 @@ public void testDefaultCredentialWithCustomMetadataServerAddress() throws IOExce
252278 assertTrue (transport .urlWasRequested ("http://test.metadata.server.address" ));
253279 }
254280
281+ public void testDefaultCredentialWithCustomMetadataServerDomainAddressAndCustomPort ()
282+ throws IOException {
283+ MockRequestUrlRecordingTransport transport = new MockRequestUrlRecordingTransport ();
284+ TestDefaultCredentialProvider testProvider = new TestDefaultCredentialProvider ();
285+ testProvider .setEnv ("GCE_METADATA_HOST" , "test.metadata.server.address:8080" );
286+
287+ try {
288+ testProvider .getDefaultCredential (transport , JSON_FACTORY );
289+ fail ("No credential expected for default test provider." );
290+ } catch (IOException expected ) {
291+ }
292+ assertTrue (transport .urlWasRequested ("http://test.metadata.server.address:8080" ));
293+ }
294+
295+ public void testDefaultCredentialWithCustomMetadataServerIPv4Address () throws IOException {
296+ MockRequestUrlRecordingTransport transport = new MockRequestUrlRecordingTransport ();
297+ TestDefaultCredentialProvider testProvider = new TestDefaultCredentialProvider ();
298+ testProvider .setEnv ("GCE_METADATA_HOST" , "169.254.0.1" );
299+
300+ try {
301+ testProvider .getDefaultCredential (transport , JSON_FACTORY );
302+ fail ("No credential expected for default test provider." );
303+ } catch (IOException expected ) {
304+ }
305+ assertTrue (transport .urlWasRequested ("http://169.254.0.1" ));
306+ }
307+
308+ public void testDefaultCredentialWithCustomMetadataServerIPv4AddressAndCustomPort ()
309+ throws IOException {
310+ MockRequestUrlRecordingTransport transport = new MockRequestUrlRecordingTransport ();
311+ TestDefaultCredentialProvider testProvider = new TestDefaultCredentialProvider ();
312+ testProvider .setEnv ("GCE_METADATA_HOST" , "169.254.0.1:8080" );
313+
314+ try {
315+ testProvider .getDefaultCredential (transport , JSON_FACTORY );
316+ fail ("No credential expected for default test provider." );
317+ } catch (IOException expected ) {
318+ }
319+ assertTrue (transport .urlWasRequested ("http://169.254.0.1:8080" ));
320+ }
321+
322+ public void testDefaultCredentialWithCustomMetadataServerIPv6Address () throws IOException {
323+ MockRequestUrlRecordingTransport transport = new MockRequestUrlRecordingTransport ();
324+ TestDefaultCredentialProvider testProvider = new TestDefaultCredentialProvider ();
325+ testProvider .setEnv ("GCE_METADATA_HOST" , "fe80::1" );
326+
327+ try {
328+ testProvider .getDefaultCredential (transport , JSON_FACTORY );
329+ fail ("No credential expected for default test provider." );
330+ } catch (IOException expected ) {
331+ }
332+ assertTrue (transport .urlWasRequested ("http://[fe80::1]" ));
333+ }
334+
335+ public void testDefaultCredentialWithCustomMetadataServerIPv6AddressProvidedWithBrackets ()
336+ throws IOException {
337+ MockRequestUrlRecordingTransport transport = new MockRequestUrlRecordingTransport ();
338+ TestDefaultCredentialProvider testProvider = new TestDefaultCredentialProvider ();
339+ testProvider .setEnv ("GCE_METADATA_HOST" , "[fe80::1]" );
340+
341+ try {
342+ testProvider .getDefaultCredential (transport , JSON_FACTORY );
343+ fail ("No credential expected for default test provider." );
344+ } catch (IOException expected ) {
345+ }
346+ assertTrue (transport .urlWasRequested ("http://[fe80::1]" ));
347+ }
348+
349+ public void testDefaultCredentialWithCustomMetadataServerIPv6AddressAndCustomPort ()
350+ throws IOException {
351+ MockRequestUrlRecordingTransport transport = new MockRequestUrlRecordingTransport ();
352+ TestDefaultCredentialProvider testProvider = new TestDefaultCredentialProvider ();
353+ testProvider .setEnv ("GCE_METADATA_HOST" , "[fe80::1]:8080" );
354+
355+ try {
356+ testProvider .getDefaultCredential (transport , JSON_FACTORY );
357+ fail ("No credential expected for default test provider." );
358+ } catch (IOException expected ) {
359+ }
360+ assertTrue (transport .urlWasRequested ("http://[fe80::1]:8080" ));
361+ }
362+
255363 public void testDefaultCredentialNonExistentFileThrows () throws Exception {
256364 File nonExistentFile = new java .io .File (getTempDirectory (), "DefaultCredentialBadFile.json" );
257365 assertFalse (nonExistentFile .exists ());
0 commit comments