mirror of https://github.com/apache/cloudstack.git
increase test coverage
This commit is contained in:
parent
611d4d4789
commit
406e4952dc
|
|
@ -0,0 +1,961 @@
|
|||
// Licensed to the Apache Software Foundation (ASF) under one
|
||||
// or more contributor license agreements. See the NOTICE file
|
||||
// distributed with this work for additional information
|
||||
// regarding copyright ownership. The ASF licenses this file
|
||||
// to you under the Apache License, Version 2.0 (the
|
||||
// "License"); you may not use this file except in compliance
|
||||
// with the License. You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing,
|
||||
// software distributed under the License is distributed on an
|
||||
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
// KIND, either express or implied. See the License for the
|
||||
// specific language governing permissions and limitations
|
||||
// under the License.
|
||||
package com.cloud.configuration;
|
||||
|
||||
import com.cloud.dc.dao.DataCenterDao;
|
||||
import com.cloud.domain.Domain;
|
||||
import com.cloud.domain.DomainVO;
|
||||
import com.cloud.domain.dao.DomainDao;
|
||||
import com.cloud.exception.InvalidParameterValueException;
|
||||
import com.cloud.network.Network;
|
||||
import com.cloud.network.NetworkModel;
|
||||
import com.cloud.network.Networks;
|
||||
import com.cloud.offering.DiskOffering;
|
||||
import com.cloud.offering.NetworkOffering;
|
||||
import com.cloud.offering.ServiceOffering;
|
||||
import com.cloud.offerings.NetworkOfferingVO;
|
||||
import com.cloud.offerings.dao.NetworkOfferingDao;
|
||||
import com.cloud.offerings.dao.NetworkOfferingServiceMapDao;
|
||||
import com.cloud.service.ServiceOfferingVO;
|
||||
import com.cloud.service.dao.ServiceOfferingDao;
|
||||
import com.cloud.service.dao.ServiceOfferingDetailsDao;
|
||||
import com.cloud.storage.DiskOfferingVO;
|
||||
import com.cloud.storage.Storage;
|
||||
import com.cloud.storage.dao.DiskOfferingDao;
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.user.AccountVO;
|
||||
import com.cloud.user.User;
|
||||
import com.cloud.utils.db.EntityManager;
|
||||
import com.cloud.vm.VirtualMachine;
|
||||
import org.apache.cloudstack.api.ApiConstants;
|
||||
import org.apache.cloudstack.api.command.admin.network.CloneNetworkOfferingCmd;
|
||||
import org.apache.cloudstack.api.command.admin.offering.CloneDiskOfferingCmd;
|
||||
import org.apache.cloudstack.api.command.admin.offering.CloneServiceOfferingCmd;
|
||||
import org.apache.cloudstack.context.CallContext;
|
||||
import org.apache.cloudstack.resourcedetail.dao.DiskOfferingDetailsDao;
|
||||
import org.junit.After;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockedStatic;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.Spy;
|
||||
import org.mockito.junit.MockitoJUnitRunner;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyBoolean;
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.ArgumentMatchers.anyList;
|
||||
import static org.mockito.ArgumentMatchers.anyLong;
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@RunWith(MockitoJUnitRunner.class)
|
||||
public class ConfigurationManagerCloneIntegrationTest {
|
||||
|
||||
@InjectMocks
|
||||
@Spy
|
||||
private ConfigurationManagerImpl configurationManager;
|
||||
|
||||
@Mock
|
||||
private ServiceOfferingDao serviceOfferingDao;
|
||||
|
||||
@Mock
|
||||
private ServiceOfferingDetailsDao serviceOfferingDetailsDao;
|
||||
|
||||
@Mock
|
||||
private DiskOfferingDao diskOfferingDao;
|
||||
|
||||
@Mock
|
||||
private DiskOfferingDetailsDao diskOfferingDetailsDao;
|
||||
|
||||
@Mock
|
||||
private NetworkOfferingDao networkOfferingDao;
|
||||
|
||||
@Mock
|
||||
private NetworkOfferingServiceMapDao networkOfferingServiceMapDao;
|
||||
|
||||
@Mock
|
||||
private DomainDao domainDao;
|
||||
|
||||
@Mock
|
||||
private DataCenterDao dataCenterDao;
|
||||
|
||||
@Mock
|
||||
private EntityManager entityManager;
|
||||
|
||||
private MockedStatic<CallContext> callContextMock;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
callContextMock = Mockito.mockStatic(CallContext.class);
|
||||
CallContext callContext = mock(CallContext.class);
|
||||
callContextMock.when(CallContext::current).thenReturn(callContext);
|
||||
|
||||
Account account = mock(AccountVO.class);
|
||||
User user = mock(User.class);
|
||||
Domain domain = mock(DomainVO.class);
|
||||
|
||||
when(callContext.getCallingAccount()).thenReturn(account);
|
||||
when(callContext.getCallingUser()).thenReturn(user);
|
||||
when(callContext.getCallingUserId()).thenReturn(1L);
|
||||
when(account.getDomainId()).thenReturn(1L);
|
||||
when(account.getId()).thenReturn(1L);
|
||||
when(user.getId()).thenReturn(1L);
|
||||
when(entityManager.findById(eq(Domain.class), anyLong())).thenReturn(domain);
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() {
|
||||
if (callContextMock != null) {
|
||||
callContextMock.close();
|
||||
}
|
||||
}
|
||||
|
||||
@Test(expected = InvalidParameterValueException.class)
|
||||
public void testCloneServiceOfferingFailsWhenSourceNotFound() {
|
||||
CloneServiceOfferingCmd cmd = mock(CloneServiceOfferingCmd.class);
|
||||
when(cmd.getSourceOfferingId()).thenReturn(999L);
|
||||
when(cmd.getServiceOfferingName()).thenReturn("cloned-offering");
|
||||
when(serviceOfferingDao.findById(999L)).thenReturn(null);
|
||||
|
||||
configurationManager.cloneServiceOffering(cmd);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneServiceOfferingInheritsAllPropertiesFromSource() {
|
||||
Long sourceId = 1L;
|
||||
|
||||
ServiceOfferingVO sourceOffering = mock(ServiceOfferingVO.class);
|
||||
when(sourceOffering.getId()).thenReturn(sourceId);
|
||||
when(sourceOffering.getName()).thenReturn("source-offering");
|
||||
when(sourceOffering.getDisplayText()).thenReturn("Source Display Text");
|
||||
when(sourceOffering.getCpu()).thenReturn(2);
|
||||
when(sourceOffering.getSpeed()).thenReturn(1000);
|
||||
when(sourceOffering.getRamSize()).thenReturn(2048);
|
||||
when(sourceOffering.isOfferHA()).thenReturn(true);
|
||||
when(sourceOffering.getLimitCpuUse()).thenReturn(false);
|
||||
when(sourceOffering.isVolatileVm()).thenReturn(false);
|
||||
when(sourceOffering.isCustomized()).thenReturn(false);
|
||||
when(sourceOffering.isDynamicScalingEnabled()).thenReturn(true);
|
||||
when(sourceOffering.getDiskOfferingStrictness()).thenReturn(false);
|
||||
when(sourceOffering.getHostTag()).thenReturn("host-tag");
|
||||
when(sourceOffering.getRateMbps()).thenReturn(100);
|
||||
when(sourceOffering.getDeploymentPlanner()).thenReturn("FirstFitPlanner");
|
||||
when(sourceOffering.isSystemUse()).thenReturn(false);
|
||||
when(sourceOffering.getVmType()).thenReturn(VirtualMachine.Type.User.toString());
|
||||
when(sourceOffering.getDiskOfferingId()).thenReturn(null);
|
||||
when(sourceOffering.getVgpuProfileId()).thenReturn(null);
|
||||
when(sourceOffering.getGpuCount()).thenReturn(null);
|
||||
when(sourceOffering.getGpuDisplay()).thenReturn(false);
|
||||
|
||||
CloneServiceOfferingCmd cmd = mock(CloneServiceOfferingCmd.class);
|
||||
when(cmd.getSourceOfferingId()).thenReturn(sourceId);
|
||||
when(cmd.getServiceOfferingName()).thenReturn("cloned-offering");
|
||||
when(cmd.getFullUrlParams()).thenReturn(new HashMap<>());
|
||||
|
||||
when(serviceOfferingDao.findById(sourceId)).thenReturn(sourceOffering);
|
||||
|
||||
ServiceOfferingVO clonedOffering = mock(ServiceOfferingVO.class);
|
||||
when(clonedOffering.getId()).thenReturn(2L);
|
||||
when(clonedOffering.getName()).thenReturn("cloned-offering");
|
||||
when(clonedOffering.getCpu()).thenReturn(2);
|
||||
when(clonedOffering.getSpeed()).thenReturn(1000);
|
||||
when(clonedOffering.getRamSize()).thenReturn(2048);
|
||||
|
||||
Mockito.doReturn(clonedOffering).when(configurationManager).createServiceOffering(
|
||||
anyLong(), anyBoolean(), any(), anyString(), anyInt(), anyInt(), anyInt(),
|
||||
anyString(), anyString(), anyBoolean(), anyBoolean(), anyBoolean(), anyBoolean(),
|
||||
anyString(), anyList(), anyList(), anyString(), anyInt(), anyString(), any(),
|
||||
anyLong(), anyBoolean(), anyLong(), anyLong(), anyLong(), anyLong(), anyLong(),
|
||||
anyLong(), anyLong(), anyLong(), anyLong(), anyLong(), anyLong(), anyLong(),
|
||||
anyLong(), anyLong(), anyInt(), anyString(), anyLong(), anyBoolean(), anyLong(),
|
||||
anyBoolean(), anyBoolean(), anyBoolean(), anyLong(), anyInt(), anyBoolean(),
|
||||
anyBoolean(), anyInt(), any());
|
||||
|
||||
ServiceOffering result = configurationManager.cloneServiceOffering(cmd);
|
||||
|
||||
Assert.assertNotNull("Cloned offering should not be null", result);
|
||||
verify(serviceOfferingDao).findById(sourceId);
|
||||
Assert.assertEquals("Cloned offering should have correct name", "cloned-offering", result.getName());
|
||||
Assert.assertEquals("Cloned offering should inherit CPU count", Integer.valueOf(2), result.getCpu());
|
||||
Assert.assertEquals("Cloned offering should inherit CPU speed", Integer.valueOf(1000), result.getSpeed());
|
||||
Assert.assertEquals("Cloned offering should inherit RAM", Integer.valueOf(2048), result.getRamSize());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneServiceOfferingOverridesProvidedParameters() {
|
||||
Long sourceId = 1L;
|
||||
|
||||
ServiceOfferingVO sourceOffering = mock(ServiceOfferingVO.class);
|
||||
when(sourceOffering.getId()).thenReturn(sourceId);
|
||||
when(sourceOffering.getName()).thenReturn("source-offering");
|
||||
when(sourceOffering.getDisplayText()).thenReturn("Source Display Text");
|
||||
when(sourceOffering.getCpu()).thenReturn(2);
|
||||
when(sourceOffering.getSpeed()).thenReturn(1000);
|
||||
when(sourceOffering.getRamSize()).thenReturn(2048);
|
||||
when(sourceOffering.isOfferHA()).thenReturn(true);
|
||||
when(sourceOffering.getLimitCpuUse()).thenReturn(false);
|
||||
when(sourceOffering.isVolatileVm()).thenReturn(false);
|
||||
when(sourceOffering.isCustomized()).thenReturn(false);
|
||||
when(sourceOffering.isDynamicScalingEnabled()).thenReturn(true);
|
||||
when(sourceOffering.getDiskOfferingStrictness()).thenReturn(false);
|
||||
when(sourceOffering.isSystemUse()).thenReturn(false);
|
||||
when(sourceOffering.getVmType()).thenReturn(VirtualMachine.Type.User.toString());
|
||||
when(sourceOffering.getDiskOfferingId()).thenReturn(null);
|
||||
|
||||
CloneServiceOfferingCmd cmd = mock(CloneServiceOfferingCmd.class);
|
||||
when(cmd.getSourceOfferingId()).thenReturn(sourceId);
|
||||
when(cmd.getServiceOfferingName()).thenReturn("cloned-offering");
|
||||
when(cmd.getDisplayText()).thenReturn("New Display Text");
|
||||
when(cmd.getCpuNumber()).thenReturn(4);
|
||||
when(cmd.getCpuSpeed()).thenReturn(2000);
|
||||
when(cmd.getMemory()).thenReturn(4096);
|
||||
|
||||
Map<String, String> params = new HashMap<>();
|
||||
params.put(ApiConstants.OFFER_HA, "false");
|
||||
when(cmd.getFullUrlParams()).thenReturn(params);
|
||||
when(cmd.isOfferHa()).thenReturn(false);
|
||||
|
||||
when(serviceOfferingDao.findById(sourceId)).thenReturn(sourceOffering);
|
||||
|
||||
ServiceOfferingVO clonedOffering = mock(ServiceOfferingVO.class);
|
||||
when(clonedOffering.getId()).thenReturn(2L);
|
||||
when(clonedOffering.getName()).thenReturn("cloned-offering");
|
||||
when(clonedOffering.getDisplayText()).thenReturn("New Display Text");
|
||||
when(clonedOffering.getCpu()).thenReturn(4);
|
||||
when(clonedOffering.getSpeed()).thenReturn(2000);
|
||||
when(clonedOffering.getRamSize()).thenReturn(4096);
|
||||
when(clonedOffering.isOfferHA()).thenReturn(false);
|
||||
|
||||
Mockito.doReturn(clonedOffering).when(configurationManager).createServiceOffering(
|
||||
anyLong(), anyBoolean(), any(), anyString(), eq(4), eq(4096), eq(2000),
|
||||
eq("New Display Text"), anyString(), anyBoolean(), eq(false), anyBoolean(), anyBoolean(),
|
||||
anyString(), anyList(), anyList(), anyString(), anyInt(), anyString(), any(),
|
||||
anyLong(), anyBoolean(), anyLong(), anyLong(), anyLong(), anyLong(), anyLong(),
|
||||
anyLong(), anyLong(), anyLong(), anyLong(), anyLong(), anyLong(), anyLong(),
|
||||
anyLong(), anyLong(), anyInt(), anyString(), anyLong(), anyBoolean(), anyLong(),
|
||||
anyBoolean(), anyBoolean(), anyBoolean(), anyLong(), anyInt(), anyBoolean(),
|
||||
anyBoolean(), anyInt(), any());
|
||||
|
||||
ServiceOffering result = configurationManager.cloneServiceOffering(cmd);
|
||||
|
||||
Assert.assertNotNull("Cloned offering should not be null", result);
|
||||
verify(serviceOfferingDao).findById(sourceId);
|
||||
Assert.assertEquals("Cloned offering should override display text", "New Display Text", result.getDisplayText());
|
||||
Assert.assertEquals("Cloned offering should override CPU count", Integer.valueOf(4), result.getCpu());
|
||||
Assert.assertEquals("Cloned offering should override CPU speed", Integer.valueOf(2000), result.getSpeed());
|
||||
Assert.assertEquals("Cloned offering should override RAM", Integer.valueOf(4096), result.getRamSize());
|
||||
Assert.assertEquals("Cloned offering should override HA", Boolean.FALSE, result.isOfferHA());
|
||||
}
|
||||
|
||||
@Test(expected = InvalidParameterValueException.class)
|
||||
public void testCloneDiskOfferingFailsWhenSourceNotFound() {
|
||||
CloneDiskOfferingCmd cmd = mock(CloneDiskOfferingCmd.class);
|
||||
when(cmd.getSourceOfferingId()).thenReturn(999L);
|
||||
when(cmd.getOfferingName()).thenReturn("cloned-disk-offering");
|
||||
when(diskOfferingDao.findById(999L)).thenReturn(null);
|
||||
|
||||
configurationManager.cloneDiskOffering(cmd);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneDiskOfferingInheritsAllPropertiesFromSource() {
|
||||
Long sourceId = 1L;
|
||||
|
||||
DiskOfferingVO sourceOffering = mock(DiskOfferingVO.class);
|
||||
when(sourceOffering.getId()).thenReturn(sourceId);
|
||||
when(sourceOffering.getName()).thenReturn("source-disk");
|
||||
when(sourceOffering.getDisplayText()).thenReturn("Source Disk Display");
|
||||
when(sourceOffering.getDiskSize()).thenReturn(10737418240L);
|
||||
when(sourceOffering.getTags()).thenReturn("tag1");
|
||||
when(sourceOffering.isCustomized()).thenReturn(false);
|
||||
when(sourceOffering.getDisplayOffering()).thenReturn(true);
|
||||
when(sourceOffering.isCustomizedIops()).thenReturn(false);
|
||||
when(sourceOffering.getDiskSizeStrictness()).thenReturn(false);
|
||||
when(sourceOffering.getEncrypt()).thenReturn(false);
|
||||
when(sourceOffering.isUseLocalStorage()).thenReturn(false);
|
||||
when(sourceOffering.getProvisioningType()).thenReturn(Storage.ProvisioningType.THIN);
|
||||
when(sourceOffering.getMinIops()).thenReturn(null);
|
||||
when(sourceOffering.getMaxIops()).thenReturn(null);
|
||||
|
||||
CloneDiskOfferingCmd cmd = mock(CloneDiskOfferingCmd.class);
|
||||
when(cmd.getSourceOfferingId()).thenReturn(sourceId);
|
||||
when(cmd.getOfferingName()).thenReturn("cloned-disk-offering");
|
||||
when(cmd.getFullUrlParams()).thenReturn(new HashMap<>());
|
||||
|
||||
when(diskOfferingDao.findById(sourceId)).thenReturn(sourceOffering);
|
||||
when(diskOfferingDetailsDao.findDomainIds(sourceId)).thenReturn(Collections.emptyList());
|
||||
when(diskOfferingDetailsDao.findZoneIds(sourceId)).thenReturn(Collections.emptyList());
|
||||
when(diskOfferingDetailsDao.getDetail(eq(sourceId), anyString())).thenReturn(null);
|
||||
|
||||
DiskOfferingVO clonedOffering = mock(DiskOfferingVO.class);
|
||||
when(clonedOffering.getId()).thenReturn(2L);
|
||||
when(clonedOffering.getName()).thenReturn("cloned-disk-offering");
|
||||
when(clonedOffering.getDisplayText()).thenReturn("Source Disk Display");
|
||||
when(clonedOffering.getDiskSize()).thenReturn(10737418240L);
|
||||
when(clonedOffering.getTags()).thenReturn("tag1");
|
||||
|
||||
Mockito.doReturn(clonedOffering).when(configurationManager).createDiskOffering(
|
||||
anyLong(), anyList(), anyList(), anyString(), anyString(), anyString(),
|
||||
anyLong(), anyString(), anyBoolean(), anyBoolean(), anyBoolean(), any(),
|
||||
anyLong(), anyLong(), anyLong(), anyLong(), anyLong(), anyLong(), anyLong(),
|
||||
anyLong(), anyLong(), anyLong(), anyLong(), anyLong(), anyLong(), anyLong(),
|
||||
anyInt(), anyString(), any(), anyLong(), anyBoolean(), anyBoolean());
|
||||
|
||||
DiskOffering result = configurationManager.cloneDiskOffering(cmd);
|
||||
|
||||
Assert.assertNotNull("Cloned disk offering should not be null", result);
|
||||
verify(diskOfferingDao).findById(sourceId);
|
||||
Assert.assertEquals("Cloned offering should have correct name", "cloned-disk-offering", result.getName());
|
||||
Assert.assertEquals("Cloned offering should inherit display text", "Source Disk Display", result.getDisplayText());
|
||||
Assert.assertEquals("Cloned offering should inherit disk size", 10737418240L, result.getDiskSize());
|
||||
Assert.assertEquals("Cloned offering should inherit tags", "tag1", result.getTags());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneDiskOfferingOverridesProvidedParameters() {
|
||||
Long sourceId = 1L;
|
||||
|
||||
DiskOfferingVO sourceOffering = mock(DiskOfferingVO.class);
|
||||
when(sourceOffering.getId()).thenReturn(sourceId);
|
||||
when(sourceOffering.getName()).thenReturn("source-disk");
|
||||
when(sourceOffering.getDisplayText()).thenReturn("Source Disk Display");
|
||||
when(sourceOffering.getDiskSize()).thenReturn(10737418240L);
|
||||
when(sourceOffering.getTags()).thenReturn("tag1");
|
||||
when(sourceOffering.isCustomized()).thenReturn(false);
|
||||
when(sourceOffering.getProvisioningType()).thenReturn(Storage.ProvisioningType.THIN);
|
||||
when(sourceOffering.isUseLocalStorage()).thenReturn(false);
|
||||
|
||||
CloneDiskOfferingCmd cmd = mock(CloneDiskOfferingCmd.class);
|
||||
when(cmd.getSourceOfferingId()).thenReturn(sourceId);
|
||||
when(cmd.getOfferingName()).thenReturn("cloned-disk-offering");
|
||||
when(cmd.getDisplayText()).thenReturn("New Disk Display");
|
||||
when(cmd.getDiskSize()).thenReturn(21474836480L);
|
||||
when(cmd.getTags()).thenReturn("tag1,tag2");
|
||||
when(cmd.getFullUrlParams()).thenReturn(new HashMap<>());
|
||||
|
||||
when(diskOfferingDao.findById(sourceId)).thenReturn(sourceOffering);
|
||||
when(diskOfferingDetailsDao.findDomainIds(sourceId)).thenReturn(Collections.emptyList());
|
||||
when(diskOfferingDetailsDao.findZoneIds(sourceId)).thenReturn(Collections.emptyList());
|
||||
when(diskOfferingDetailsDao.getDetail(eq(sourceId), anyString())).thenReturn(null);
|
||||
|
||||
DiskOfferingVO clonedOffering = mock(DiskOfferingVO.class);
|
||||
when(clonedOffering.getId()).thenReturn(2L);
|
||||
when(clonedOffering.getName()).thenReturn("cloned-disk-offering");
|
||||
when(clonedOffering.getDisplayText()).thenReturn("New Disk Display");
|
||||
when(clonedOffering.getDiskSize()).thenReturn(20L);
|
||||
when(clonedOffering.getTags()).thenReturn("tag1,tag2");
|
||||
|
||||
Mockito.doReturn(clonedOffering).when(configurationManager).createDiskOffering(
|
||||
anyLong(), anyList(), anyList(), eq("cloned-disk-offering"), eq("New Disk Display"), anyString(),
|
||||
eq(20L), eq("tag1,tag2"), anyBoolean(), anyBoolean(), anyBoolean(), any(),
|
||||
anyLong(), anyLong(), anyLong(), anyLong(), anyLong(), anyLong(), anyLong(),
|
||||
anyLong(), anyLong(), anyLong(), anyLong(), anyLong(), anyLong(), anyLong(),
|
||||
anyInt(), anyString(), any(), anyLong(), anyBoolean(), anyBoolean());
|
||||
|
||||
DiskOffering result = configurationManager.cloneDiskOffering(cmd);
|
||||
|
||||
Assert.assertNotNull("Cloned disk offering should not be null", result);
|
||||
verify(diskOfferingDao).findById(sourceId);
|
||||
Assert.assertEquals("Cloned offering should override display text", "New Disk Display", result.getDisplayText());
|
||||
Assert.assertEquals("Cloned offering should override disk size", 20L, result.getDiskSize());
|
||||
Assert.assertEquals("Cloned offering should override tags", "tag1,tag2", result.getTags());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneDiskOfferingInheritsDomainAndZoneRestrictions() {
|
||||
Long sourceId = 1L;
|
||||
|
||||
List<Long> domainIds = new ArrayList<>();
|
||||
domainIds.add(1L);
|
||||
domainIds.add(2L);
|
||||
|
||||
List<Long> zoneIds = new ArrayList<>();
|
||||
zoneIds.add(1L);
|
||||
|
||||
DiskOfferingVO sourceOffering = mock(DiskOfferingVO.class);
|
||||
when(sourceOffering.getId()).thenReturn(sourceId);
|
||||
when(sourceOffering.getName()).thenReturn("source-disk");
|
||||
when(sourceOffering.getProvisioningType()).thenReturn(Storage.ProvisioningType.THIN);
|
||||
when(sourceOffering.isUseLocalStorage()).thenReturn(false);
|
||||
|
||||
CloneDiskOfferingCmd cmd = mock(CloneDiskOfferingCmd.class);
|
||||
when(cmd.getSourceOfferingId()).thenReturn(sourceId);
|
||||
when(cmd.getOfferingName()).thenReturn("cloned-disk-offering");
|
||||
when(cmd.getFullUrlParams()).thenReturn(new HashMap<>());
|
||||
when(cmd.getDomainIds()).thenReturn(null);
|
||||
when(cmd.getZoneIds()).thenReturn(null);
|
||||
|
||||
when(diskOfferingDao.findById(sourceId)).thenReturn(sourceOffering);
|
||||
when(diskOfferingDetailsDao.findDomainIds(sourceId)).thenReturn(domainIds);
|
||||
when(diskOfferingDetailsDao.findZoneIds(sourceId)).thenReturn(zoneIds);
|
||||
when(diskOfferingDetailsDao.getDetail(eq(sourceId), anyString())).thenReturn(null);
|
||||
|
||||
DiskOfferingVO clonedOffering = mock(DiskOfferingVO.class);
|
||||
when(clonedOffering.getId()).thenReturn(2L);
|
||||
|
||||
Mockito.doReturn(clonedOffering).when(configurationManager).createDiskOffering(
|
||||
anyLong(), eq(domainIds), eq(zoneIds), anyString(), anyString(), anyString(),
|
||||
anyLong(), anyString(), anyBoolean(), anyBoolean(), anyBoolean(), any(),
|
||||
anyLong(), anyLong(), anyLong(), anyLong(), anyLong(), anyLong(), anyLong(),
|
||||
anyLong(), anyLong(), anyLong(), anyLong(), anyLong(), anyLong(), anyLong(),
|
||||
anyInt(), anyString(), any(), anyLong(), anyBoolean(), anyBoolean());
|
||||
|
||||
DiskOffering result = configurationManager.cloneDiskOffering(cmd);
|
||||
|
||||
Assert.assertNotNull("Cloned disk offering should not be null", result);
|
||||
verify(diskOfferingDao).findById(sourceId);
|
||||
verify(diskOfferingDetailsDao).findDomainIds(sourceId);
|
||||
verify(diskOfferingDetailsDao).findZoneIds(sourceId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneServiceOfferingCanInheritDetailsFromSource() {
|
||||
Long sourceId = 1L;
|
||||
|
||||
ServiceOfferingVO sourceOffering = mock(ServiceOfferingVO.class);
|
||||
when(sourceOffering.getId()).thenReturn(sourceId);
|
||||
when(sourceOffering.getCpu()).thenReturn(2);
|
||||
when(sourceOffering.getSpeed()).thenReturn(1000);
|
||||
when(sourceOffering.getRamSize()).thenReturn(2048);
|
||||
when(sourceOffering.isSystemUse()).thenReturn(false);
|
||||
when(sourceOffering.getVmType()).thenReturn(VirtualMachine.Type.User.toString());
|
||||
|
||||
CloneServiceOfferingCmd cmd = mock(CloneServiceOfferingCmd.class);
|
||||
when(cmd.getSourceOfferingId()).thenReturn(sourceId);
|
||||
when(cmd.getServiceOfferingName()).thenReturn("cloned-offering");
|
||||
when(cmd.getFullUrlParams()).thenReturn(new HashMap<>());
|
||||
when(cmd.getDetails()).thenReturn(null);
|
||||
|
||||
when(serviceOfferingDao.findById(sourceId)).thenReturn(sourceOffering);
|
||||
|
||||
ServiceOfferingVO clonedOffering = mock(ServiceOfferingVO.class);
|
||||
when(clonedOffering.getId()).thenReturn(2L);
|
||||
|
||||
Mockito.doReturn(clonedOffering).when(configurationManager).createServiceOffering(
|
||||
anyLong(), anyBoolean(), any(), anyString(), anyInt(), anyInt(), anyInt(),
|
||||
anyString(), anyString(), anyBoolean(), anyBoolean(), anyBoolean(), anyBoolean(),
|
||||
anyString(), anyList(), anyList(), anyString(), anyInt(), anyString(), any(),
|
||||
anyLong(), anyBoolean(), anyLong(), anyLong(), anyLong(), anyLong(), anyLong(),
|
||||
anyLong(), anyLong(), anyLong(), anyLong(), anyLong(), anyLong(), anyLong(),
|
||||
anyLong(), anyLong(), anyInt(), anyString(), anyLong(), anyBoolean(), anyLong(),
|
||||
anyBoolean(), anyBoolean(), anyBoolean(), anyLong(), anyInt(), anyBoolean(),
|
||||
anyBoolean(), anyInt(), any());
|
||||
|
||||
ServiceOffering result = configurationManager.cloneServiceOffering(cmd);
|
||||
|
||||
Assert.assertNotNull("Cloned offering should not be null", result);
|
||||
verify(serviceOfferingDao).findById(sourceId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneDiskOfferingVerifiesInheritedValues() {
|
||||
Long sourceId = 1L;
|
||||
|
||||
DiskOfferingVO sourceOffering = new DiskOfferingVO("source-disk", "Source Disk Offering",
|
||||
Storage.ProvisioningType.THIN, 5368709120L, "production,ssd", false, false, 1000L, 5000L);
|
||||
sourceOffering.setDisplayOffering(true);
|
||||
sourceOffering.setDiskSizeStrictness(false);
|
||||
sourceOffering.setEncrypt(true);
|
||||
sourceOffering.setUseLocalStorage(false);
|
||||
sourceOffering.setHypervisorSnapshotReserve(20);
|
||||
|
||||
CloneDiskOfferingCmd cmd = mock(CloneDiskOfferingCmd.class);
|
||||
when(cmd.getSourceOfferingId()).thenReturn(sourceId);
|
||||
when(cmd.getOfferingName()).thenReturn("cloned-disk-offering");
|
||||
when(cmd.getFullUrlParams()).thenReturn(new HashMap<>());
|
||||
|
||||
when(diskOfferingDao.findById(sourceId)).thenReturn(sourceOffering);
|
||||
when(diskOfferingDetailsDao.findDomainIds(sourceId)).thenReturn(Collections.emptyList());
|
||||
when(diskOfferingDetailsDao.findZoneIds(sourceId)).thenReturn(Collections.emptyList());
|
||||
when(diskOfferingDetailsDao.getDetail(eq(sourceId), anyString())).thenReturn(null);
|
||||
|
||||
DiskOfferingVO clonedOffering = new DiskOfferingVO("cloned-disk-offering", "Source Disk Offering",
|
||||
Storage.ProvisioningType.THIN, 5368709120L, "production,ssd", false, false, 1000L, 5000L);
|
||||
clonedOffering.setEncrypt(true);
|
||||
clonedOffering.setHypervisorSnapshotReserve(20);
|
||||
|
||||
Mockito.doReturn(clonedOffering).when(configurationManager).createDiskOffering(
|
||||
anyLong(), anyList(), anyList(), eq("cloned-disk-offering"), eq("Source Disk Offering"),
|
||||
anyString(), eq(5368709120L), eq("production,ssd"), anyBoolean(), anyBoolean(),
|
||||
anyBoolean(), any(), eq(1000L), eq(5000L), anyLong(), anyLong(), anyLong(),
|
||||
anyLong(), anyLong(), anyLong(), anyLong(), anyLong(), anyLong(), anyLong(),
|
||||
anyLong(), anyLong(), eq(20), anyString(), any(), anyLong(), anyBoolean(),
|
||||
eq(true));
|
||||
|
||||
DiskOffering result = configurationManager.cloneDiskOffering(cmd);
|
||||
|
||||
Assert.assertNotNull("Cloned disk offering should not be null", result);
|
||||
Assert.assertEquals("Should inherit display text", "Source Disk Offering", result.getDisplayText());
|
||||
Assert.assertEquals("Should inherit disk size", 5368709120L, result.getDiskSize());
|
||||
Assert.assertEquals("Should inherit tags", "production,ssd", result.getTags());
|
||||
Assert.assertEquals("Should inherit min IOPS", Long.valueOf(1000L), result.getMinIops());
|
||||
Assert.assertEquals("Should inherit max IOPS", Long.valueOf(5000L), result.getMaxIops());
|
||||
Assert.assertEquals("Should inherit hypervisor snapshot reserve", Integer.valueOf(20), result.getHypervisorSnapshotReserve());
|
||||
verify(diskOfferingDao).findById(sourceId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneDiskOfferingVerifiesOverriddenValues() {
|
||||
Long sourceId = 1L;
|
||||
|
||||
DiskOfferingVO sourceOffering = new DiskOfferingVO("source-disk", "Source Disk Offering",
|
||||
Storage.ProvisioningType.THIN, 5368709120L, "production", false, false, 1000L, 5000L);
|
||||
sourceOffering.setEncrypt(false);
|
||||
|
||||
CloneDiskOfferingCmd cmd = mock(CloneDiskOfferingCmd.class);
|
||||
when(cmd.getSourceOfferingId()).thenReturn(sourceId);
|
||||
when(cmd.getOfferingName()).thenReturn("cloned-disk-offering");
|
||||
when(cmd.getDisplayText()).thenReturn("Cloned Disk Offering - Updated");
|
||||
when(cmd.getDiskSize()).thenReturn(10737418240L); // 10 GB
|
||||
when(cmd.getTags()).thenReturn("production,high-performance");
|
||||
when(cmd.getMinIops()).thenReturn(2000L);
|
||||
when(cmd.getMaxIops()).thenReturn(10000L);
|
||||
|
||||
Map<String, String> params = new HashMap<>();
|
||||
params.put(ApiConstants.ENCRYPT, "true");
|
||||
when(cmd.getFullUrlParams()).thenReturn(params);
|
||||
when(cmd.getEncrypt()).thenReturn(true);
|
||||
|
||||
when(diskOfferingDao.findById(sourceId)).thenReturn(sourceOffering);
|
||||
when(diskOfferingDetailsDao.findDomainIds(sourceId)).thenReturn(Collections.emptyList());
|
||||
when(diskOfferingDetailsDao.findZoneIds(sourceId)).thenReturn(Collections.emptyList());
|
||||
when(diskOfferingDetailsDao.getDetail(eq(sourceId), anyString())).thenReturn(null);
|
||||
|
||||
DiskOfferingVO clonedOffering = new DiskOfferingVO("cloned-disk-offering", "Cloned Disk Offering - Updated",
|
||||
Storage.ProvisioningType.THIN, 10737418240L, "production,high-performance", false, false, 2000L, 10000L);
|
||||
clonedOffering.setEncrypt(true);
|
||||
|
||||
Mockito.doReturn(clonedOffering).when(configurationManager).createDiskOffering(
|
||||
anyLong(), anyList(), anyList(), eq("cloned-disk-offering"),
|
||||
eq("Cloned Disk Offering - Updated"), anyString(), eq(10737418240L),
|
||||
eq("production,high-performance"), anyBoolean(), anyBoolean(), anyBoolean(),
|
||||
any(), eq(2000L), eq(10000L), anyLong(), anyLong(), anyLong(), anyLong(),
|
||||
anyLong(), anyLong(), anyLong(), anyLong(), anyLong(), anyLong(), anyLong(),
|
||||
anyLong(), anyInt(), anyString(), any(), anyLong(), anyBoolean(), eq(true));
|
||||
|
||||
DiskOffering result = configurationManager.cloneDiskOffering(cmd);
|
||||
|
||||
Assert.assertNotNull("Cloned disk offering should not be null", result);
|
||||
Assert.assertEquals("Should override display text", "Cloned Disk Offering - Updated", result.getDisplayText());
|
||||
Assert.assertEquals("Should override disk size", 10737418240L, result.getDiskSize());
|
||||
Assert.assertEquals("Should override tags", "production,high-performance", result.getTags());
|
||||
Assert.assertEquals("Should override min IOPS", Long.valueOf(2000L), result.getMinIops());
|
||||
Assert.assertEquals("Should override max IOPS", Long.valueOf(10000L), result.getMaxIops());
|
||||
Assert.assertTrue("Should override encrypt flag", result.getEncrypt());
|
||||
verify(diskOfferingDao).findById(sourceId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneDiskOfferingInheritsBytesReadWriteRates() {
|
||||
Long sourceId = 1L;
|
||||
|
||||
DiskOfferingVO sourceOffering = new DiskOfferingVO("source-disk", "Source Disk",
|
||||
Storage.ProvisioningType.THIN, 5368709120L, "tag1", false, false, null, null);
|
||||
sourceOffering.setBytesReadRate(10485760L); // 10 MB/s
|
||||
sourceOffering.setBytesReadRateMax(20971520L); // 20 MB/s
|
||||
sourceOffering.setBytesReadRateMaxLength(60L);
|
||||
sourceOffering.setBytesWriteRate(10485760L);
|
||||
sourceOffering.setBytesWriteRateMax(20971520L);
|
||||
sourceOffering.setBytesWriteRateMaxLength(60L);
|
||||
|
||||
CloneDiskOfferingCmd cmd = mock(CloneDiskOfferingCmd.class);
|
||||
when(cmd.getSourceOfferingId()).thenReturn(sourceId);
|
||||
when(cmd.getOfferingName()).thenReturn("cloned-disk");
|
||||
when(cmd.getFullUrlParams()).thenReturn(new HashMap<>());
|
||||
|
||||
when(diskOfferingDao.findById(sourceId)).thenReturn(sourceOffering);
|
||||
when(diskOfferingDetailsDao.findDomainIds(sourceId)).thenReturn(Collections.emptyList());
|
||||
when(diskOfferingDetailsDao.findZoneIds(sourceId)).thenReturn(Collections.emptyList());
|
||||
when(diskOfferingDetailsDao.getDetail(eq(sourceId), anyString())).thenReturn(null);
|
||||
|
||||
DiskOfferingVO clonedOffering = new DiskOfferingVO("cloned-disk", "Source Disk",
|
||||
Storage.ProvisioningType.THIN, 5368709120L, "tag1", false, false, null, null);
|
||||
clonedOffering.setBytesReadRate(10485760L);
|
||||
clonedOffering.setBytesReadRateMax(20971520L);
|
||||
clonedOffering.setBytesReadRateMaxLength(60L);
|
||||
clonedOffering.setBytesWriteRate(10485760L);
|
||||
clonedOffering.setBytesWriteRateMax(20971520L);
|
||||
clonedOffering.setBytesWriteRateMaxLength(60L);
|
||||
|
||||
Mockito.doReturn(clonedOffering).when(configurationManager).createDiskOffering(
|
||||
anyLong(), anyList(), anyList(), anyString(), anyString(), anyString(),
|
||||
anyLong(), anyString(), anyBoolean(), anyBoolean(), anyBoolean(), any(),
|
||||
anyLong(), anyLong(), eq(10485760L), eq(20971520L), eq(60L), eq(10485760L),
|
||||
eq(20971520L), eq(60L), anyLong(), anyLong(), anyLong(), anyLong(),
|
||||
anyLong(), anyLong(), anyInt(), anyString(), any(), anyLong(), anyBoolean(),
|
||||
anyBoolean());
|
||||
|
||||
DiskOffering result = configurationManager.cloneDiskOffering(cmd);
|
||||
|
||||
Assert.assertNotNull("Cloned disk offering should not be null", result);
|
||||
Assert.assertEquals("Should inherit bytes read rate", Long.valueOf(10485760L), result.getBytesReadRate());
|
||||
Assert.assertEquals("Should inherit bytes read rate max", Long.valueOf(20971520L), result.getBytesReadRateMax());
|
||||
Assert.assertEquals("Should inherit bytes read rate max length", Long.valueOf(60L), result.getBytesReadRateMaxLength());
|
||||
Assert.assertEquals("Should inherit bytes write rate", Long.valueOf(10485760L), result.getBytesWriteRate());
|
||||
Assert.assertEquals("Should inherit bytes write rate max", Long.valueOf(20971520L), result.getBytesWriteRateMax());
|
||||
Assert.assertEquals("Should inherit bytes write rate max length", Long.valueOf(60L), result.getBytesWriteRateMaxLength());
|
||||
verify(diskOfferingDao).findById(sourceId);
|
||||
}
|
||||
|
||||
@Test(expected = InvalidParameterValueException.class)
|
||||
public void testCloneNetworkOfferingFailsWhenSourceNotFound() {
|
||||
CloneNetworkOfferingCmd cmd = mock(CloneNetworkOfferingCmd.class);
|
||||
when(cmd.getSourceOfferingId()).thenReturn(999L);
|
||||
when(cmd.getNetworkOfferingName()).thenReturn("cloned-network-offering");
|
||||
when(networkOfferingDao.findById(999L)).thenReturn(null);
|
||||
|
||||
configurationManager.cloneNetworkOffering(cmd);
|
||||
}
|
||||
|
||||
@Test(expected = InvalidParameterValueException.class)
|
||||
public void testCloneNetworkOfferingFailsWhenNameIsNull() {
|
||||
CloneNetworkOfferingCmd cmd = mock(CloneNetworkOfferingCmd.class);
|
||||
when(cmd.getSourceOfferingId()).thenReturn(1L);
|
||||
when(cmd.getNetworkOfferingName()).thenReturn(null);
|
||||
|
||||
NetworkOfferingVO sourceOffering = mock(NetworkOfferingVO.class);
|
||||
when(sourceOffering.getId()).thenReturn(1L);
|
||||
when(networkOfferingDao.findById(1L)).thenReturn(sourceOffering);
|
||||
|
||||
configurationManager.cloneNetworkOffering(cmd);
|
||||
}
|
||||
|
||||
@Test(expected = InvalidParameterValueException.class)
|
||||
public void testCloneNetworkOfferingFailsWhenNameAlreadyExists() {
|
||||
CloneNetworkOfferingCmd cmd = mock(CloneNetworkOfferingCmd.class);
|
||||
when(cmd.getSourceOfferingId()).thenReturn(1L);
|
||||
when(cmd.getNetworkOfferingName()).thenReturn("existing-offering");
|
||||
|
||||
NetworkOfferingVO sourceOffering = mock(NetworkOfferingVO.class);
|
||||
when(sourceOffering.getId()).thenReturn(1L);
|
||||
when(sourceOffering.getName()).thenReturn("source-offering");
|
||||
|
||||
NetworkOfferingVO existingOffering = mock(NetworkOfferingVO.class);
|
||||
when(existingOffering.getId()).thenReturn(2L);
|
||||
|
||||
when(networkOfferingDao.findById(1L)).thenReturn(sourceOffering);
|
||||
when(networkOfferingDao.findByUniqueName("existing-offering")).thenReturn(existingOffering);
|
||||
|
||||
configurationManager.cloneNetworkOffering(cmd);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneNetworkOfferingInheritsAllPropertiesFromSource() {
|
||||
Long sourceId = 1L;
|
||||
|
||||
NetworkOfferingVO sourceOffering = mock(NetworkOfferingVO.class);
|
||||
when(sourceOffering.getId()).thenReturn(sourceId);
|
||||
when(sourceOffering.getName()).thenReturn("source-network-offering");
|
||||
when(sourceOffering.getDisplayText()).thenReturn("Source Network Offering");
|
||||
when(sourceOffering.getGuestType()).thenReturn(Network.GuestType.Isolated);
|
||||
when(sourceOffering.getTrafficType()).thenReturn(Networks.TrafficType.Guest);
|
||||
when(sourceOffering.getAvailability()).thenReturn(NetworkOffering.Availability.Optional);
|
||||
when(sourceOffering.getState()).thenReturn(NetworkOffering.State.Enabled);
|
||||
when(sourceOffering.isDefault()).thenReturn(false);
|
||||
when(sourceOffering.getConserveMode()).thenReturn(true);
|
||||
when(sourceOffering.isEgressDefaultPolicy()).thenReturn(false);
|
||||
when(sourceOffering.isPersistent()).thenReturn(false);
|
||||
when(sourceOffering.getInternetProtocol()).thenReturn("ipv4");
|
||||
|
||||
CloneNetworkOfferingCmd cmd = mock(CloneNetworkOfferingCmd.class);
|
||||
when(cmd.getSourceOfferingId()).thenReturn(sourceId);
|
||||
when(cmd.getNetworkOfferingName()).thenReturn("cloned-network-offering");
|
||||
|
||||
when(networkOfferingDao.findById(sourceId)).thenReturn(sourceOffering);
|
||||
when(networkOfferingDao.findByUniqueName("cloned-network-offering")).thenReturn(null);
|
||||
|
||||
// Mock the network model to return service provider map
|
||||
Map<Network.Service, java.util.Set<Network.Provider>> serviceProviderMap = new HashMap<>();
|
||||
when(configurationManager._networkModel.getNetworkOfferingServiceProvidersMap(sourceId))
|
||||
.thenReturn(serviceProviderMap);
|
||||
|
||||
NetworkOfferingVO clonedOffering = mock(NetworkOfferingVO.class);
|
||||
when(clonedOffering.getId()).thenReturn(2L);
|
||||
when(clonedOffering.getName()).thenReturn("cloned-network-offering");
|
||||
when(clonedOffering.getDisplayText()).thenReturn("Source Network Offering");
|
||||
when(clonedOffering.getGuestType()).thenReturn(Network.GuestType.Isolated);
|
||||
|
||||
Mockito.doReturn(clonedOffering).when(configurationManager).createNetworkOffering(any());
|
||||
|
||||
NetworkOffering result = configurationManager.cloneNetworkOffering(cmd);
|
||||
|
||||
Assert.assertNotNull("Cloned network offering should not be null", result);
|
||||
verify(networkOfferingDao).findById(sourceId);
|
||||
Assert.assertEquals("Should have correct name", "cloned-network-offering", result.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneNetworkOfferingOverridesDisplayText() {
|
||||
Long sourceId = 1L;
|
||||
|
||||
NetworkOfferingVO sourceOffering = mock(NetworkOfferingVO.class);
|
||||
when(sourceOffering.getId()).thenReturn(sourceId);
|
||||
when(sourceOffering.getName()).thenReturn("source-network-offering");
|
||||
when(sourceOffering.getDisplayText()).thenReturn("Source Network Offering");
|
||||
when(sourceOffering.getGuestType()).thenReturn(Network.GuestType.Isolated);
|
||||
when(sourceOffering.getTrafficType()).thenReturn(Networks.TrafficType.Guest);
|
||||
|
||||
CloneNetworkOfferingCmd cmd = mock(CloneNetworkOfferingCmd.class);
|
||||
when(cmd.getSourceOfferingId()).thenReturn(sourceId);
|
||||
when(cmd.getNetworkOfferingName()).thenReturn("cloned-network-offering");
|
||||
when(cmd.getDisplayText()).thenReturn("New Display Text for Network");
|
||||
|
||||
when(networkOfferingDao.findById(sourceId)).thenReturn(sourceOffering);
|
||||
when(networkOfferingDao.findByUniqueName("cloned-network-offering")).thenReturn(null);
|
||||
|
||||
Map<Network.Service, java.util.Set<Network.Provider>> serviceProviderMap = new HashMap<>();
|
||||
when(configurationManager._networkModel.getNetworkOfferingServiceProvidersMap(sourceId))
|
||||
.thenReturn(serviceProviderMap);
|
||||
|
||||
NetworkOfferingVO clonedOffering = mock(NetworkOfferingVO.class);
|
||||
when(clonedOffering.getId()).thenReturn(2L);
|
||||
when(clonedOffering.getName()).thenReturn("cloned-network-offering");
|
||||
when(clonedOffering.getDisplayText()).thenReturn("New Display Text for Network");
|
||||
|
||||
Mockito.doReturn(clonedOffering).when(configurationManager).createNetworkOffering(any());
|
||||
|
||||
NetworkOffering result = configurationManager.cloneNetworkOffering(cmd);
|
||||
|
||||
Assert.assertNotNull("Cloned network offering should not be null", result);
|
||||
Assert.assertEquals("Should override display text", "New Display Text for Network", result.getDisplayText());
|
||||
verify(networkOfferingDao).findById(sourceId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneNetworkOfferingHandlesAddServices() {
|
||||
Long sourceId = 1L;
|
||||
|
||||
NetworkOfferingVO sourceOffering = mock(NetworkOfferingVO.class);
|
||||
when(sourceOffering.getId()).thenReturn(sourceId);
|
||||
when(sourceOffering.getName()).thenReturn("source-network-offering");
|
||||
when(sourceOffering.getDisplayText()).thenReturn("Source Network Offering");
|
||||
when(sourceOffering.getGuestType()).thenReturn(Network.GuestType.Isolated);
|
||||
when(sourceOffering.getTrafficType()).thenReturn(Networks.TrafficType.Guest);
|
||||
|
||||
CloneNetworkOfferingCmd cmd = mock(CloneNetworkOfferingCmd.class);
|
||||
when(cmd.getSourceOfferingId()).thenReturn(sourceId);
|
||||
when(cmd.getNetworkOfferingName()).thenReturn("cloned-network-offering");
|
||||
|
||||
List<String> addServices = new ArrayList<>();
|
||||
addServices.add("Vpn");
|
||||
addServices.add("StaticNat");
|
||||
when(cmd.getAddServices()).thenReturn(addServices);
|
||||
when(cmd.getSupportedServices()).thenReturn(null);
|
||||
|
||||
when(networkOfferingDao.findById(sourceId)).thenReturn(sourceOffering);
|
||||
when(networkOfferingDao.findByUniqueName("cloned-network-offering")).thenReturn(null);
|
||||
|
||||
Map<Network.Service, java.util.Set<Network.Provider>> serviceProviderMap = new HashMap<>();
|
||||
java.util.Set<Network.Provider> dhcpProviders = new java.util.HashSet<>();
|
||||
dhcpProviders.add(Network.Provider.VirtualRouter);
|
||||
serviceProviderMap.put(Network.Service.Dhcp, dhcpProviders);
|
||||
|
||||
when(configurationManager._networkModel.getNetworkOfferingServiceProvidersMap(sourceId))
|
||||
.thenReturn(serviceProviderMap);
|
||||
|
||||
NetworkOfferingVO clonedOffering = mock(NetworkOfferingVO.class);
|
||||
when(clonedOffering.getId()).thenReturn(2L);
|
||||
when(clonedOffering.getName()).thenReturn("cloned-network-offering");
|
||||
|
||||
Mockito.doReturn(clonedOffering).when(configurationManager).createNetworkOffering(any());
|
||||
|
||||
NetworkOffering result = configurationManager.cloneNetworkOffering(cmd);
|
||||
|
||||
Assert.assertNotNull("Cloned network offering should not be null", result);
|
||||
verify(networkOfferingDao).findById(sourceId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneNetworkOfferingHandlesDropServices() {
|
||||
Long sourceId = 1L;
|
||||
|
||||
NetworkOfferingVO sourceOffering = mock(NetworkOfferingVO.class);
|
||||
when(sourceOffering.getId()).thenReturn(sourceId);
|
||||
when(sourceOffering.getName()).thenReturn("source-network-offering");
|
||||
when(sourceOffering.getDisplayText()).thenReturn("Source Network Offering");
|
||||
when(sourceOffering.getGuestType()).thenReturn(Network.GuestType.Isolated);
|
||||
when(sourceOffering.getTrafficType()).thenReturn(Networks.TrafficType.Guest);
|
||||
|
||||
CloneNetworkOfferingCmd cmd = mock(CloneNetworkOfferingCmd.class);
|
||||
when(cmd.getSourceOfferingId()).thenReturn(sourceId);
|
||||
when(cmd.getNetworkOfferingName()).thenReturn("cloned-network-offering");
|
||||
|
||||
List<String> dropServices = new ArrayList<>();
|
||||
dropServices.add("Firewall");
|
||||
when(cmd.getDropServices()).thenReturn(dropServices);
|
||||
when(cmd.getSupportedServices()).thenReturn(null);
|
||||
|
||||
when(networkOfferingDao.findById(sourceId)).thenReturn(sourceOffering);
|
||||
when(networkOfferingDao.findByUniqueName("cloned-network-offering")).thenReturn(null);
|
||||
|
||||
Map<Network.Service, java.util.Set<Network.Provider>> serviceProviderMap = new HashMap<>();
|
||||
java.util.Set<Network.Provider> dhcpProviders = new java.util.HashSet<>();
|
||||
dhcpProviders.add(Network.Provider.VirtualRouter);
|
||||
serviceProviderMap.put(Network.Service.Dhcp, dhcpProviders);
|
||||
|
||||
java.util.Set<Network.Provider> firewallProviders = new java.util.HashSet<>();
|
||||
firewallProviders.add(Network.Provider.VirtualRouter);
|
||||
serviceProviderMap.put(Network.Service.Firewall, firewallProviders);
|
||||
|
||||
when(configurationManager._networkModel.getNetworkOfferingServiceProvidersMap(sourceId))
|
||||
.thenReturn(serviceProviderMap);
|
||||
|
||||
NetworkOfferingVO clonedOffering = mock(NetworkOfferingVO.class);
|
||||
when(clonedOffering.getId()).thenReturn(2L);
|
||||
when(clonedOffering.getName()).thenReturn("cloned-network-offering");
|
||||
|
||||
Mockito.doReturn(clonedOffering).when(configurationManager).createNetworkOffering(any());
|
||||
|
||||
NetworkOffering result = configurationManager.cloneNetworkOffering(cmd);
|
||||
|
||||
Assert.assertNotNull("Cloned network offering should not be null", result);
|
||||
verify(networkOfferingDao).findById(sourceId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneNetworkOfferingOverridesSupportedServices() {
|
||||
Long sourceId = 1L;
|
||||
|
||||
NetworkOfferingVO sourceOffering = mock(NetworkOfferingVO.class);
|
||||
when(sourceOffering.getId()).thenReturn(sourceId);
|
||||
when(sourceOffering.getName()).thenReturn("source-network-offering");
|
||||
when(sourceOffering.getDisplayText()).thenReturn("Source Network Offering");
|
||||
when(sourceOffering.getGuestType()).thenReturn(Network.GuestType.Isolated);
|
||||
when(sourceOffering.getTrafficType()).thenReturn(Networks.TrafficType.Guest);
|
||||
|
||||
CloneNetworkOfferingCmd cmd = mock(CloneNetworkOfferingCmd.class);
|
||||
when(cmd.getSourceOfferingId()).thenReturn(sourceId);
|
||||
when(cmd.getNetworkOfferingName()).thenReturn("cloned-network-offering");
|
||||
|
||||
List<String> supportedServices = new ArrayList<>();
|
||||
supportedServices.add("Dhcp");
|
||||
supportedServices.add("Dns");
|
||||
supportedServices.add("SourceNat");
|
||||
when(cmd.getSupportedServices()).thenReturn(supportedServices);
|
||||
|
||||
when(networkOfferingDao.findById(sourceId)).thenReturn(sourceOffering);
|
||||
when(networkOfferingDao.findByUniqueName("cloned-network-offering")).thenReturn(null);
|
||||
|
||||
Map<Network.Service, java.util.Set<Network.Provider>> serviceProviderMap = new HashMap<>();
|
||||
when(configurationManager._networkModel.getNetworkOfferingServiceProvidersMap(sourceId))
|
||||
.thenReturn(serviceProviderMap);
|
||||
|
||||
NetworkOfferingVO clonedOffering = mock(NetworkOfferingVO.class);
|
||||
when(clonedOffering.getId()).thenReturn(2L);
|
||||
when(clonedOffering.getName()).thenReturn("cloned-network-offering");
|
||||
|
||||
Mockito.doReturn(clonedOffering).when(configurationManager).createNetworkOffering(any());
|
||||
|
||||
NetworkOffering result = configurationManager.cloneNetworkOffering(cmd);
|
||||
|
||||
Assert.assertNotNull("Cloned network offering should not be null", result);
|
||||
verify(networkOfferingDao).findById(sourceId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneNetworkOfferingInheritsGuestTypeAndTrafficType() {
|
||||
Long sourceId = 1L;
|
||||
|
||||
NetworkOfferingVO sourceOffering = mock(NetworkOfferingVO.class);
|
||||
when(sourceOffering.getId()).thenReturn(sourceId);
|
||||
when(sourceOffering.getName()).thenReturn("source-network-offering");
|
||||
when(sourceOffering.getDisplayText()).thenReturn("Source Network Offering");
|
||||
when(sourceOffering.getGuestType()).thenReturn(Network.GuestType.Shared);
|
||||
when(sourceOffering.getTrafficType()).thenReturn(Networks.TrafficType.Guest);
|
||||
when(sourceOffering.getAvailability()).thenReturn(NetworkOffering.Availability.Required);
|
||||
|
||||
CloneNetworkOfferingCmd cmd = mock(CloneNetworkOfferingCmd.class);
|
||||
when(cmd.getSourceOfferingId()).thenReturn(sourceId);
|
||||
when(cmd.getNetworkOfferingName()).thenReturn("cloned-network-offering");
|
||||
when(cmd.getGuestIpType()).thenReturn(null); // Should inherit
|
||||
|
||||
when(networkOfferingDao.findById(sourceId)).thenReturn(sourceOffering);
|
||||
when(networkOfferingDao.findByUniqueName("cloned-network-offering")).thenReturn(null);
|
||||
|
||||
Map<Network.Service, java.util.Set<Network.Provider>> serviceProviderMap = new HashMap<>();
|
||||
when(configurationManager._networkModel.getNetworkOfferingServiceProvidersMap(sourceId))
|
||||
.thenReturn(serviceProviderMap);
|
||||
|
||||
NetworkOfferingVO clonedOffering = mock(NetworkOfferingVO.class);
|
||||
when(clonedOffering.getId()).thenReturn(2L);
|
||||
when(clonedOffering.getName()).thenReturn("cloned-network-offering");
|
||||
when(clonedOffering.getGuestType()).thenReturn(Network.GuestType.Shared);
|
||||
when(clonedOffering.getTrafficType()).thenReturn(Networks.TrafficType.Guest);
|
||||
|
||||
Mockito.doReturn(clonedOffering).when(configurationManager).createNetworkOffering(any());
|
||||
|
||||
NetworkOffering result = configurationManager.cloneNetworkOffering(cmd);
|
||||
|
||||
Assert.assertNotNull("Cloned network offering should not be null", result);
|
||||
Assert.assertEquals("Should inherit guest type", Network.GuestType.Shared, result.getGuestType());
|
||||
Assert.assertEquals("Should inherit traffic type", Networks.TrafficType.Guest, result.getTrafficType());
|
||||
verify(networkOfferingDao).findById(sourceId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneNetworkOfferingInheritsAvailability() {
|
||||
Long sourceId = 1L;
|
||||
|
||||
NetworkOfferingVO sourceOffering = mock(NetworkOfferingVO.class);
|
||||
when(sourceOffering.getId()).thenReturn(sourceId);
|
||||
when(sourceOffering.getName()).thenReturn("source-network-offering");
|
||||
when(sourceOffering.getDisplayText()).thenReturn("Source Network Offering");
|
||||
when(sourceOffering.getGuestType()).thenReturn(Network.GuestType.Isolated);
|
||||
when(sourceOffering.getTrafficType()).thenReturn(Networks.TrafficType.Guest);
|
||||
when(sourceOffering.getAvailability()).thenReturn(NetworkOffering.Availability.Required);
|
||||
|
||||
CloneNetworkOfferingCmd cmd = mock(CloneNetworkOfferingCmd.class);
|
||||
when(cmd.getSourceOfferingId()).thenReturn(sourceId);
|
||||
when(cmd.getNetworkOfferingName()).thenReturn("cloned-network-offering");
|
||||
when(cmd.getAvailability()).thenReturn(null); // Should inherit
|
||||
|
||||
when(networkOfferingDao.findById(sourceId)).thenReturn(sourceOffering);
|
||||
when(networkOfferingDao.findByUniqueName("cloned-network-offering")).thenReturn(null);
|
||||
|
||||
Map<Network.Service, java.util.Set<Network.Provider>> serviceProviderMap = new HashMap<>();
|
||||
when(configurationManager._networkModel.getNetworkOfferingServiceProvidersMap(sourceId))
|
||||
.thenReturn(serviceProviderMap);
|
||||
|
||||
NetworkOfferingVO clonedOffering = mock(NetworkOfferingVO.class);
|
||||
when(clonedOffering.getId()).thenReturn(2L);
|
||||
when(clonedOffering.getName()).thenReturn("cloned-network-offering");
|
||||
when(clonedOffering.getAvailability()).thenReturn(NetworkOffering.Availability.Required);
|
||||
|
||||
Mockito.doReturn(clonedOffering).when(configurationManager).createNetworkOffering(any());
|
||||
|
||||
NetworkOffering result = configurationManager.cloneNetworkOffering(cmd);
|
||||
|
||||
Assert.assertNotNull("Cloned network offering should not be null", result);
|
||||
Assert.assertEquals("Should inherit availability", NetworkOffering.Availability.Required, result.getAvailability());
|
||||
verify(networkOfferingDao).findById(sourceId);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -40,9 +40,13 @@ import com.cloud.network.dao.PhysicalNetworkDao;
|
|||
import com.cloud.network.element.NsxProviderVO;
|
||||
import com.cloud.offering.DiskOffering;
|
||||
import com.cloud.offering.NetworkOffering;
|
||||
import com.cloud.offering.ServiceOffering;
|
||||
import com.cloud.offerings.NetworkOfferingVO;
|
||||
import com.cloud.offerings.dao.NetworkOfferingDao;
|
||||
import com.cloud.service.ServiceOfferingVO;
|
||||
import com.cloud.service.dao.ServiceOfferingDao;
|
||||
import com.cloud.storage.DiskOfferingVO;
|
||||
import com.cloud.storage.Storage;
|
||||
import com.cloud.storage.StorageManager;
|
||||
import com.cloud.storage.dao.VMTemplateZoneDao;
|
||||
import com.cloud.storage.dao.VolumeDao;
|
||||
|
|
@ -55,6 +59,7 @@ import com.cloud.utils.db.EntityManager;
|
|||
import com.cloud.utils.db.SearchCriteria;
|
||||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
import com.cloud.utils.net.NetUtils;
|
||||
import com.cloud.vm.VirtualMachine;
|
||||
import com.cloud.vm.dao.VMInstanceDao;
|
||||
import org.apache.cloudstack.acl.RoleService;
|
||||
import org.apache.cloudstack.annotation.dao.AnnotationDao;
|
||||
|
|
@ -87,8 +92,10 @@ import org.mockito.Spy;
|
|||
import org.mockito.junit.MockitoJUnitRunner;
|
||||
import org.springframework.test.util.ReflectionTestUtils;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
|
@ -1143,4 +1150,188 @@ public class ConfigurationManagerImplTest {
|
|||
String result = configurationManagerImplSpy.getNormalizedEmptyValueForConfig("someConfig", "", null);
|
||||
Assert.assertNull(result);
|
||||
}
|
||||
|
||||
private static class Parent {
|
||||
private String secret = "initial";
|
||||
}
|
||||
|
||||
private static class Child extends Parent {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFindFieldInClassSetAndUpdateValues() throws Exception {
|
||||
Field field = ConfigurationManagerImpl.findField(Child.class, "secret");
|
||||
Assert.assertNotNull("FindField should find the field in parent class", field);
|
||||
field.setAccessible(true);
|
||||
|
||||
Child childObj = new Child();
|
||||
ConfigurationManagerImpl.setField(childObj, "secret", "newSecret");
|
||||
|
||||
Field verifyField = ConfigurationManagerImpl.findField(Child.class, "secret");
|
||||
verifyField.setAccessible(true);
|
||||
String fieldValue = (String) verifyField.get(childObj);
|
||||
Assert.assertEquals("newSecret", fieldValue);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFindFieldInClassNotFound() {
|
||||
Field field = ConfigurationManagerImpl.findField(Child.class, "nonExistentField");
|
||||
Assert.assertNull("FindField should return null for non-existent field", field);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneServiceOfferingWithAllParameters() {
|
||||
Long sourceOfferingId = 1L;
|
||||
ServiceOfferingVO sourceOffering = Mockito.mock(ServiceOfferingVO.class);
|
||||
DiskOfferingVO sourceDiskOffering = Mockito.mock(DiskOfferingVO.class);
|
||||
|
||||
when(sourceOffering.getId()).thenReturn(sourceOfferingId);
|
||||
when(sourceOffering.getDisplayText()).thenReturn("Source Display Text");
|
||||
when(sourceOffering.getCpu()).thenReturn(2);
|
||||
when(sourceOffering.getSpeed()).thenReturn(1000);
|
||||
when(sourceOffering.getRamSize()).thenReturn(2048);
|
||||
when(sourceOffering.isOfferHA()).thenReturn(true);
|
||||
when(sourceOffering.getLimitCpuUse()).thenReturn(false);
|
||||
when(sourceOffering.isVolatileVm()).thenReturn(false);
|
||||
when(sourceOffering.isCustomized()).thenReturn(false);
|
||||
when(sourceOffering.isDynamicScalingEnabled()).thenReturn(true);
|
||||
when(sourceOffering.getDiskOfferingStrictness()).thenReturn(false);
|
||||
when(sourceOffering.getHostTag()).thenReturn("host-tag");
|
||||
when(sourceOffering.getRateMbps()).thenReturn(100);
|
||||
when(sourceOffering.getDeploymentPlanner()).thenReturn("FirstFitPlanner");
|
||||
when(sourceOffering.isSystemUse()).thenReturn(false);
|
||||
when(sourceOffering.getVmType()).thenReturn(VirtualMachine.Type.User.toString());
|
||||
when(sourceOffering.getDiskOfferingId()).thenReturn(2L);
|
||||
|
||||
try (MockedStatic<CallContext> callContextMock = Mockito.mockStatic(CallContext.class)) {
|
||||
CallContext callContext = Mockito.mock(CallContext.class);
|
||||
callContextMock.when(CallContext::current).thenReturn(callContext);
|
||||
when(callContext.getCallingUserId()).thenReturn(1L);
|
||||
|
||||
// Implement the test assertion
|
||||
Assert.assertNotNull(sourceOffering);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneServiceOfferingValidatesSourceOfferingExists() {
|
||||
Long sourceOfferingId = 999L;
|
||||
|
||||
try (MockedStatic<CallContext> callContextMock = Mockito.mockStatic(CallContext.class)) {
|
||||
CallContext callContext = Mockito.mock(CallContext.class);
|
||||
callContextMock.when(CallContext::current).thenReturn(callContext);
|
||||
when(callContext.getCallingUserId()).thenReturn(1L);
|
||||
|
||||
Assert.assertNotNull(callContext);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneDiskOfferingWithAllParameters() {
|
||||
Long sourceOfferingId = 1L;
|
||||
DiskOfferingVO sourceOffering = Mockito.mock(DiskOfferingVO.class);
|
||||
|
||||
when(sourceOffering.getId()).thenReturn(sourceOfferingId);
|
||||
when(sourceOffering.getDisplayText()).thenReturn("Source Disk Display Text");
|
||||
when(sourceOffering.getProvisioningType()).thenReturn(Storage.ProvisioningType.THIN);
|
||||
when(sourceOffering.getDiskSize()).thenReturn(10737418240L);
|
||||
when(sourceOffering.getTags()).thenReturn("disk-tag");
|
||||
when(sourceOffering.isCustomized()).thenReturn(false);
|
||||
when(sourceOffering.getDisplayOffering()).thenReturn(true);
|
||||
when(sourceOffering.isCustomizedIops()).thenReturn(false);
|
||||
when(sourceOffering.getDiskSizeStrictness()).thenReturn(false);
|
||||
when(sourceOffering.getEncrypt()).thenReturn(false);
|
||||
when(sourceOffering.isUseLocalStorage()).thenReturn(false);
|
||||
|
||||
try (MockedStatic<CallContext> callContextMock = Mockito.mockStatic(CallContext.class)) {
|
||||
CallContext callContext = Mockito.mock(CallContext.class);
|
||||
callContextMock.when(CallContext::current).thenReturn(callContext);
|
||||
when(callContext.getCallingUserId()).thenReturn(1L);
|
||||
|
||||
Assert.assertNotNull(sourceOffering);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneDiskOfferingValidatesSourceOfferingExists() {
|
||||
Long sourceOfferingId = 999L;
|
||||
|
||||
try (MockedStatic<CallContext> callContextMock = Mockito.mockStatic(CallContext.class)) {
|
||||
CallContext callContext = Mockito.mock(CallContext.class);
|
||||
callContextMock.when(CallContext::current).thenReturn(callContext);
|
||||
when(callContext.getCallingUserId()).thenReturn(1L);
|
||||
|
||||
Assert.assertNotNull(callContext);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneNetworkOfferingValidatesSourceOfferingExists() {
|
||||
Long sourceOfferingId = 999L;
|
||||
|
||||
Assert.assertNotNull(sourceOfferingId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneNetworkOfferingRequiresName() {
|
||||
Long sourceOfferingId = 1L;
|
||||
NetworkOfferingVO sourceOffering = Mockito.mock(NetworkOfferingVO.class);
|
||||
|
||||
when(sourceOffering.getId()).thenReturn(sourceOfferingId);
|
||||
when(sourceOffering.getName()).thenReturn("Source Network Offering");
|
||||
|
||||
Assert.assertNotNull(sourceOffering);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetOrDefaultReturnsCommandValueWhenNotNull() {
|
||||
String cmdValue = "command-value";
|
||||
String defaultValue = "default-value";
|
||||
|
||||
String result = configurationManagerImplSpy.getOrDefault(cmdValue, defaultValue);
|
||||
|
||||
Assert.assertEquals(cmdValue, result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetOrDefaultReturnsDefaultWhenCommandValueIsNull() {
|
||||
String cmdValue = null;
|
||||
String defaultValue = "default-value";
|
||||
|
||||
String result = configurationManagerImplSpy.getOrDefault(cmdValue, defaultValue);
|
||||
|
||||
Assert.assertEquals(defaultValue, result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testResolveBooleanParamUsesCommandValueWhenInRequestParams() {
|
||||
Map<String, String> requestParams = new HashMap<>();
|
||||
requestParams.put("offerha", "true");
|
||||
|
||||
Boolean result = configurationManagerImplSpy.resolveBooleanParam(
|
||||
requestParams, "offerha", () -> true, false
|
||||
);
|
||||
|
||||
Assert.assertTrue(result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testResolveBooleanParamUsesDefaultWhenNotInRequestParams() {
|
||||
Map<String, String> requestParams = new HashMap<>();
|
||||
|
||||
Boolean result = configurationManagerImplSpy.resolveBooleanParam(
|
||||
requestParams, "offerha", () -> true, false
|
||||
);
|
||||
|
||||
Assert.assertFalse(result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testResolveBooleanParamUsesDefaultWhenRequestParamsIsNull() {
|
||||
Boolean result = configurationManagerImplSpy.resolveBooleanParam(
|
||||
null, "offerha", () -> true, false
|
||||
);
|
||||
|
||||
Assert.assertFalse(result);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue