@@ -294,23 +294,31 @@ public void linkUserDataTest() throws Exception {
294294 Mockito .verify (scriptMock ).execute ();
295295 }
296296
297+ @ SuppressWarnings ("unchecked" )
297298 @ Test (expected = CloudRuntimeException .class )
298299 @ PrepareForTest ({Script .class , ConfigDriveBuilder .class })
299300 public void generateAndRetrieveIsoAsBase64IsoTestGenIsoFailure () throws Exception {
300- PowerMockito .mockStatic (Script .class );
301+ PowerMockito .mockStatic (Script .class , ConfigDriveBuilder . class );
301302
302303 Script scriptMock = Mockito .mock (Script .class );
303304 PowerMockito .whenNew (Script .class ).withAnyArguments ().thenReturn (scriptMock );
304305
305306 Mockito .doReturn ("scriptMessage" ).when (scriptMock ).execute ();
306307
308+ Method method = ReflectionUtils .getMethods (ConfigDriveBuilder .class , ReflectionUtils .withName ("generateAndRetrieveIsoAsBase64Iso" )).iterator ().next ();
309+ PowerMockito .when (ConfigDriveBuilder .class , method ).withArguments (Mockito .any (File .class ), Mockito .any (File .class ), Mockito .any (File .class )).thenCallRealMethod ();
310+
311+ Method getProgramToGenerateIsoMethod = ReflectionUtils .getMethods (ConfigDriveBuilder .class , ReflectionUtils .withName ("getProgramToGenerateIso" )).iterator ().next ();
312+ PowerMockito .when (ConfigDriveBuilder .class , getProgramToGenerateIsoMethod ).withNoArguments ().thenReturn ("/usr/bin/genisoimage" );
313+
307314 ConfigDriveBuilder .generateAndRetrieveIsoAsBase64Iso ("isoFileName" , "driveLabel" , "tempDirName" );
308315 }
309316
317+ @ SuppressWarnings ("unchecked" )
310318 @ Test (expected = CloudRuntimeException .class )
311319 @ PrepareForTest ({File .class , Script .class , ConfigDriveBuilder .class })
312320 public void generateAndRetrieveIsoAsBase64IsoTestIsoTooBig () throws Exception {
313- PowerMockito .mockStatic (File .class , Script .class );
321+ PowerMockito .mockStatic (File .class , Script .class , ConfigDriveBuilder . class );
314322
315323 File fileMock = Mockito .mock (File .class );
316324 PowerMockito .whenNew (File .class ).withAnyArguments ().thenReturn (fileMock );
@@ -321,6 +329,12 @@ public void generateAndRetrieveIsoAsBase64IsoTestIsoTooBig() throws Exception {
321329 Mockito .doReturn (StringUtils .EMPTY ).when (scriptMock ).execute ();
322330 Mockito .doReturn (64L * 1024L * 1024L + 1l ).when (fileMock ).length ();
323331
332+ Method method = ReflectionUtils .getMethods (ConfigDriveBuilder .class , ReflectionUtils .withName ("generateAndRetrieveIsoAsBase64Iso" )).iterator ().next ();
333+ PowerMockito .when (ConfigDriveBuilder .class , method ).withArguments (Mockito .any (File .class ), Mockito .any (File .class ), Mockito .any (File .class )).thenCallRealMethod ();
334+
335+ Method getProgramToGenerateIsoMethod = ReflectionUtils .getMethods (ConfigDriveBuilder .class , ReflectionUtils .withName ("getProgramToGenerateIso" )).iterator ().next ();
336+ PowerMockito .when (ConfigDriveBuilder .class , getProgramToGenerateIsoMethod ).withNoArguments ().thenReturn ("/usr/bin/genisoimage" );
337+
324338 ConfigDriveBuilder .generateAndRetrieveIsoAsBase64Iso ("isoFileName" , "driveLabel" , "tempDirName" );
325339 }
326340
@@ -343,6 +357,9 @@ public void generateAndRetrieveIsoAsBase64IsoTest() throws Exception {
343357 Method method = ReflectionUtils .getMethods (ConfigDriveBuilder .class , ReflectionUtils .withName ("generateAndRetrieveIsoAsBase64Iso" )).iterator ().next ();
344358 PowerMockito .when (ConfigDriveBuilder .class , method ).withArguments (Mockito .any (File .class ), Mockito .any (File .class ), Mockito .any (File .class )).thenCallRealMethod ();
345359
360+ Method getProgramToGenerateIsoMethod = ReflectionUtils .getMethods (ConfigDriveBuilder .class , ReflectionUtils .withName ("getProgramToGenerateIso" )).iterator ().next ();
361+ PowerMockito .when (ConfigDriveBuilder .class , getProgramToGenerateIsoMethod ).withNoArguments ().thenReturn ("/usr/bin/genisoimage" );
362+
346363 ConfigDriveBuilder .generateAndRetrieveIsoAsBase64Iso ("isoFileName" , "driveLabel" , "tempDirName" );
347364
348365 InOrder inOrder = Mockito .inOrder (scriptMock );
@@ -386,4 +403,95 @@ public void createJsonObjectWithVmDataTesT() throws Exception {
386403 Mockito .eq ("content2" ));
387404 }
388405
406+ @ Test
407+ @ PrepareForTest ({File .class , ConfigDriveBuilder .class })
408+ public void getProgramToGenerateIsoTestGenIsoExistsAndIsExecutable () throws Exception {
409+ PowerMockito .mockStatic (File .class );
410+
411+ File genIsoFileMock = Mockito .mock (File .class );
412+ Mockito .doReturn (true ).when (genIsoFileMock ).exists ();
413+ Mockito .doReturn (true ).when (genIsoFileMock ).canExecute ();
414+
415+ PowerMockito .whenNew (File .class ).withArguments ("/usr/bin/genisoimage" ).thenReturn (genIsoFileMock );
416+
417+ ConfigDriveBuilder .getProgramToGenerateIso ();
418+
419+ Mockito .verify (genIsoFileMock , Mockito .times (2 )).exists ();
420+ Mockito .verify (genIsoFileMock ).canExecute ();
421+ Mockito .verify (genIsoFileMock ).getCanonicalPath ();
422+ }
423+
424+ @ Test (expected = CloudRuntimeException .class )
425+ @ PrepareForTest ({File .class , ConfigDriveBuilder .class })
426+ public void getProgramToGenerateIsoTestGenIsoExistsbutNotExecutable () throws Exception {
427+ PowerMockito .mockStatic (File .class );
428+
429+ File genIsoFileMock = Mockito .mock (File .class );
430+ Mockito .doReturn (true ).when (genIsoFileMock ).exists ();
431+ Mockito .doReturn (false ).when (genIsoFileMock ).canExecute ();
432+
433+ PowerMockito .whenNew (File .class ).withArguments ("/usr/bin/genisoimage" ).thenReturn (genIsoFileMock );
434+
435+ ConfigDriveBuilder .getProgramToGenerateIso ();
436+ }
437+
438+ @ Test
439+ @ PrepareForTest ({File .class , ConfigDriveBuilder .class })
440+ public void getProgramToGenerateIsoTestNotGenIsoMkIsoInLinux () throws Exception {
441+ PowerMockito .mockStatic (File .class );
442+
443+ File genIsoFileMock = Mockito .mock (File .class );
444+ Mockito .doReturn (false ).when (genIsoFileMock ).exists ();
445+
446+ File mkIsoProgramInLinuxFileMock = Mockito .mock (File .class );
447+ Mockito .doReturn (true ).when (mkIsoProgramInLinuxFileMock ).exists ();
448+ Mockito .doReturn (true ).when (mkIsoProgramInLinuxFileMock ).canExecute ();
449+
450+ PowerMockito .whenNew (File .class ).withArguments ("/usr/bin/genisoimage" ).thenReturn (genIsoFileMock );
451+ PowerMockito .whenNew (File .class ).withArguments ("/usr/bin/mkisofs" ).thenReturn (mkIsoProgramInLinuxFileMock );
452+
453+ ConfigDriveBuilder .getProgramToGenerateIso ();
454+
455+ Mockito .verify (genIsoFileMock , Mockito .times (1 )).exists ();
456+ Mockito .verify (genIsoFileMock , Mockito .times (0 )).canExecute ();
457+ Mockito .verify (genIsoFileMock , Mockito .times (0 )).getCanonicalPath ();
458+
459+ Mockito .verify (mkIsoProgramInLinuxFileMock , Mockito .times (2 )).exists ();
460+ Mockito .verify (mkIsoProgramInLinuxFileMock , Mockito .times (1 )).canExecute ();
461+ Mockito .verify (mkIsoProgramInLinuxFileMock , Mockito .times (1 )).getCanonicalPath ();
462+ }
463+
464+ @ Test
465+ @ PrepareForTest ({File .class , ConfigDriveBuilder .class })
466+ public void getProgramToGenerateIsoTestMkIsoMac () throws Exception {
467+ PowerMockito .mockStatic (File .class );
468+
469+ File genIsoFileMock = Mockito .mock (File .class );
470+ Mockito .doReturn (false ).when (genIsoFileMock ).exists ();
471+
472+ File mkIsoProgramInLinuxFileMock = Mockito .mock (File .class );
473+ Mockito .doReturn (false ).when (mkIsoProgramInLinuxFileMock ).exists ();
474+
475+ File mkIsoProgramInMacOsFileMock = Mockito .mock (File .class );
476+ Mockito .doReturn (true ).when (mkIsoProgramInMacOsFileMock ).exists ();
477+ Mockito .doReturn (true ).when (mkIsoProgramInMacOsFileMock ).canExecute ();
478+
479+ PowerMockito .whenNew (File .class ).withArguments ("/usr/bin/genisoimage" ).thenReturn (genIsoFileMock );
480+ PowerMockito .whenNew (File .class ).withArguments ("/usr/bin/mkisofs" ).thenReturn (mkIsoProgramInLinuxFileMock );
481+ PowerMockito .whenNew (File .class ).withArguments ("/usr/local/bin/mkisofs" ).thenReturn (mkIsoProgramInMacOsFileMock );
482+
483+ ConfigDriveBuilder .getProgramToGenerateIso ();
484+
485+ Mockito .verify (genIsoFileMock , Mockito .times (1 )).exists ();
486+ Mockito .verify (genIsoFileMock , Mockito .times (0 )).canExecute ();
487+ Mockito .verify (genIsoFileMock , Mockito .times (0 )).getCanonicalPath ();
488+
489+ Mockito .verify (mkIsoProgramInLinuxFileMock , Mockito .times (1 )).exists ();
490+ Mockito .verify (mkIsoProgramInLinuxFileMock , Mockito .times (0 )).canExecute ();
491+ Mockito .verify (mkIsoProgramInLinuxFileMock , Mockito .times (0 )).getCanonicalPath ();
492+
493+ Mockito .verify (mkIsoProgramInMacOsFileMock , Mockito .times (1 )).exists ();
494+ Mockito .verify (mkIsoProgramInMacOsFileMock , Mockito .times (1 )).canExecute ();
495+ Mockito .verify (mkIsoProgramInMacOsFileMock , Mockito .times (1 )).getCanonicalPath ();
496+ }
389497}
0 commit comments