2525import static org .mockito .ArgumentMatchers .anyLong ;
2626import static org .mockito .ArgumentMatchers .anyMap ;
2727import static org .mockito .ArgumentMatchers .anyString ;
28+ import static org .mockito .ArgumentMatchers .eq ;
2829import static org .mockito .ArgumentMatchers .nullable ;
2930import static org .mockito .Mockito .doNothing ;
3031import static org .mockito .Mockito .doReturn ;
4445import com .cloud .utils .exception .CloudRuntimeException ;
4546import org .apache .cloudstack .api .BaseCmd .HTTPMethod ;
4647import org .apache .cloudstack .api .command .user .vm .ResetVMUserDataCmd ;
48+ import org .apache .cloudstack .api .command .user .vm .DeployVMCmd ;
4749import org .apache .cloudstack .api .command .user .vm .UpdateVMCmd ;
4850import org .apache .cloudstack .api .command .user .volume .ResizeVolumeCmd ;
4951import org .apache .cloudstack .context .CallContext ;
5961import org .mockito .Spy ;
6062import org .mockito .junit .MockitoJUnitRunner ;
6163import org .powermock .core .classloader .annotations .PrepareForTest ;
64+ import org .springframework .test .util .ReflectionTestUtils ;
6265
6366import com .cloud .configuration .Resource ;
67+ import com .cloud .dc .DataCenter ;
6468import com .cloud .dc .DataCenterVO ;
6569import com .cloud .dc .dao .DataCenterDao ;
6670import com .cloud .exception .InsufficientAddressCapacityException ;
6771import com .cloud .exception .InsufficientCapacityException ;
6872import com .cloud .exception .InvalidParameterValueException ;
73+ import com .cloud .exception .ResourceAllocationException ;
6974import com .cloud .exception .ResourceUnavailableException ;
7075import com .cloud .hypervisor .Hypervisor ;
7176import com .cloud .network .NetworkModel ;
8489import com .cloud .storage .dao .VMTemplateDao ;
8590import com .cloud .user .Account ;
8691import com .cloud .user .AccountManager ;
92+ import com .cloud .user .AccountService ;
8793import com .cloud .user .AccountVO ;
8894import com .cloud .user .ResourceLimitService ;
8995import com .cloud .user .UserVO ;
9096import com .cloud .user .dao .AccountDao ;
9197import com .cloud .uservm .UserVm ;
98+ import com .cloud .utils .db .EntityManager ;
9299import com .cloud .vm .dao .NicDao ;
93100import com .cloud .vm .dao .UserVmDao ;
94101import com .cloud .vm .dao .UserVmDetailsDao ;
@@ -135,6 +142,12 @@ public class UserVmManagerImplTest {
135142 @ Mock
136143 private AccountManager accountManager ;
137144
145+ @ Mock
146+ private AccountService accountService ;
147+
148+ @ Mock
149+ private EntityManager entityManager ;
150+
138151 @ Mock
139152 private UserVmDetailsDao userVmDetailVO ;
140153
@@ -174,7 +187,16 @@ public class UserVmManagerImplTest {
174187 @ Mock
175188 private VolumeDao volumeDaoMock ;
176189
177- private long vmId = 1l ;
190+ @ Mock
191+ AccountVO account ;
192+
193+ @ Mock
194+ private ServiceOfferingVO serviceOffering ;
195+
196+ private static final long vmId = 1l ;
197+ private static final long zoneId = 2L ;
198+ private static final long accountId = 3L ;
199+ private static final long serviceOfferingId = 10L ;
178200
179201 private static final long GiB_TO_BYTES = 1024 * 1024 * 1024 ;
180202
@@ -190,7 +212,7 @@ public void beforeTest() {
190212
191213 when (_dcDao .findById (anyLong ())).thenReturn (_dcMock );
192214
193- Mockito .when (userVmDao .findById (Mockito . eq ( vmId ) )).thenReturn (userVmVoMock );
215+ Mockito .when (userVmDao .findById (vmId )).thenReturn (userVmVoMock );
194216
195217 Mockito .when (callerAccount .getType ()).thenReturn (Account .Type .ADMIN );
196218 CallContext .register (callerUser , callerAccount );
@@ -221,14 +243,14 @@ public void validateGuestOsIdForUpdateVirtualMachineCommandTestOsTypeNotFound()
221243 @ Test
222244 public void validateGuestOsIdForUpdateVirtualMachineCommandTestOsTypeFound () {
223245 Mockito .when (updateVmCommand .getOsTypeId ()).thenReturn (1l );
224- Mockito .when (guestOSDao .findById (Mockito . eq ( 1l ) )).thenReturn (Mockito .mock (GuestOSVO .class ));
246+ Mockito .when (guestOSDao .findById (1l )).thenReturn (Mockito .mock (GuestOSVO .class ));
225247
226248 userVmManagerImpl .validateGuestOsIdForUpdateVirtualMachineCommand (updateVmCommand );
227249 }
228250
229251 @ Test (expected = InvalidParameterValueException .class )
230252 public void validateInputsAndPermissionForUpdateVirtualMachineCommandTestVmNotFound () {
231- Mockito .when (userVmDao .findById (Mockito . eq ( vmId ) )).thenReturn (null );
253+ Mockito .when (userVmDao .findById (vmId )).thenReturn (null );
232254
233255 userVmManagerImpl .validateInputsAndPermissionForUpdateVirtualMachineCommand (updateVmCommand );
234256 }
@@ -624,6 +646,7 @@ private DiskOfferingVO prepareDiskOffering(long rootSize, long diskOfferingId, l
624646 return newRootDiskOffering ;
625647 }
626648
649+ <<<<<<< HEAD
627650 private ServiceOfferingVO prepareOfferingsForEncryptionValidation (long diskOfferingId , boolean encryption ) {
628651 ServiceOfferingVO svcOffering = Mockito .mock (ServiceOfferingVO .class );
629652 DiskOfferingVO diskOffering = Mockito .mock (DiskOfferingVO .class );
@@ -874,4 +897,20 @@ public void recoverRootVolumeTestDestroyState() {
874897 Mockito .verify (volumeApiService ).recoverVolume (volumeVOMock .getId ());
875898 Mockito .verify (volumeDaoMock ).attachVolume (volumeVOMock .getId (), vmId , UserVmManagerImpl .ROOT_DEVICE_ID );
876899 }
900+
901+ @ Test (expected = InvalidParameterValueException .class )
902+ public void createVirtualMachineWithInactiveServiceOffering () throws ResourceUnavailableException , InsufficientCapacityException , ResourceAllocationException {
903+ DeployVMCmd deployVMCmd = new DeployVMCmd ();
904+ ReflectionTestUtils .setField (deployVMCmd , "zoneId" , zoneId );
905+ ReflectionTestUtils .setField (deployVMCmd , "serviceOfferingId" , serviceOfferingId );
906+ deployVMCmd ._accountService = accountService ;
907+
908+ when (accountService .finalyzeAccountId (nullable (String .class ), nullable (Long .class ), nullable (Long .class ), eq (true ))).thenReturn (accountId );
909+ when (accountService .getActiveAccountById (accountId )).thenReturn (account );
910+ when (entityManager .findById (DataCenter .class , zoneId )).thenReturn (_dcMock );
911+ when (entityManager .findById (ServiceOffering .class , serviceOfferingId )).thenReturn (serviceOffering );
912+ when (serviceOffering .getState ()).thenReturn (ServiceOffering .State .Inactive );
913+
914+ userVmManagerImpl .createVirtualMachine (deployVMCmd );
915+ }
877916}
0 commit comments