Skip to content

Commit 147a534

Browse files
committed
add tests
1 parent b9d656b commit 147a534

File tree

3 files changed

+152
-5
lines changed

3 files changed

+152
-5
lines changed

api/src/main/java/org/apache/cloudstack/api/response/NetworkResponse.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ public class NetworkResponse extends BaseResponseWithAssociatedNetwork implement
193193

194194
@SerializedName(ApiConstants.VPC_ACCESS)
195195
@Param(description = "Whether the calling account has access to this network's VPC", since = "4.20")
196-
private boolean vpcAccess;
196+
private Boolean vpcAccess;
197197

198198
@SerializedName(ApiConstants.VPC_ID)
199199
@Param(description = "VPC the network belongs to")
@@ -499,7 +499,7 @@ public void setVpcAccess(boolean vpcAccess) {
499499
this.vpcAccess = vpcAccess;
500500
}
501501

502-
public boolean getVpcAccess() {
502+
public Boolean getVpcAccess() {
503503
return vpcAccess;
504504
}
505505

server/src/main/java/com/cloud/api/ApiResponseHelper.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1144,7 +1144,7 @@ public IPAddressResponse createIPAddressResponse(ResponseView view, IpAddress ip
11441144
return ipResponse;
11451145
}
11461146

1147-
private void setVpcIdInResponse(Long vpcId, Consumer<String> vpcUuidSetter, Consumer<String> vpcNameSetter, Consumer<Boolean> vpcAccessSetter) {
1147+
protected void setVpcIdInResponse(Long vpcId, Consumer<String> vpcUuidSetter, Consumer<String> vpcNameSetter, Consumer<Boolean> vpcAccessSetter) {
11481148
if (vpcId == null) {
11491149
return;
11501150
}
@@ -1164,7 +1164,7 @@ private void setVpcIdInResponse(Long vpcId, Consumer<String> vpcUuidSetter, Cons
11641164
vpcUuidSetter.accept(vpc.getUuid());
11651165
}
11661166

1167-
private void setAclIdInResponse(Network network, NetworkResponse response) {
1167+
protected void setAclIdInResponse(Network network, NetworkResponse response) {
11681168
if (network.getNetworkACLId() == null) {
11691169
return;
11701170
}
@@ -1174,7 +1174,7 @@ private void setAclIdInResponse(Network network, NetworkResponse response) {
11741174
return;
11751175
}
11761176

1177-
if (!response.getVpcAccess() && acl.getVpcId() != 0) {
1177+
if (Boolean.FALSE.equals(response.getVpcAccess()) && acl.getVpcId() != 0) {
11781178
logger.debug("[{}] not set in response, since caller does not have access to it.", acl);
11791179
return;
11801180
}

server/src/test/java/com/cloud/api/ApiResponseHelperTest.java

Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import com.cloud.capacity.Capacity;
2020
import com.cloud.configuration.Resource;
2121
import com.cloud.domain.DomainVO;
22+
import com.cloud.exception.PermissionDeniedException;
23+
import com.cloud.network.Network;
2224
import com.cloud.network.PublicIpQuarantine;
2325
import com.cloud.network.as.AutoScaleVmGroup;
2426
import com.cloud.network.as.AutoScaleVmGroupVO;
@@ -29,6 +31,8 @@
2931
import com.cloud.network.dao.LoadBalancerVO;
3032
import com.cloud.network.dao.NetworkServiceMapDao;
3133
import com.cloud.network.dao.NetworkVO;
34+
import com.cloud.network.vpc.NetworkACL;
35+
import com.cloud.network.vpc.VpcVO;
3236
import com.cloud.storage.VMTemplateVO;
3337
import com.cloud.usage.UsageVO;
3438
import com.cloud.user.Account;
@@ -46,6 +50,7 @@
4650
import org.apache.cloudstack.api.response.AutoScaleVmProfileResponse;
4751
import org.apache.cloudstack.api.response.DirectDownloadCertificateResponse;
4852
import org.apache.cloudstack.api.response.IpQuarantineResponse;
53+
import org.apache.cloudstack.api.response.NetworkResponse;
4954
import org.apache.cloudstack.api.response.NicSecondaryIpResponse;
5055
import org.apache.cloudstack.api.response.UnmanagedInstanceResponse;
5156
import org.apache.cloudstack.api.response.UsageRecordResponse;
@@ -105,6 +110,13 @@ public class ApiResponseHelperTest {
105110
@Mock
106111
IPAddressDao ipAddressDaoMock;
107112

113+
@Mock
114+
VpcVO vpcVOMock;
115+
116+
@Mock
117+
NetworkACL networkACLMock;
118+
119+
108120
@Spy
109121
@InjectMocks
110122
ApiResponseHelper apiResponseHelper = new ApiResponseHelper();
@@ -123,6 +135,9 @@ public class ApiResponseHelperTest {
123135

124136
static long autoScaleUserId = 7L;
125137

138+
static final String A_NAME = "name";
139+
static final String A_UUID = "021f94d4-73f9-4a9a-b003-1df9dd968a09";
140+
126141
@Before
127142
public void injectMocks() throws SecurityException, NoSuchFieldException,
128143
IllegalArgumentException, IllegalAccessException {
@@ -481,4 +496,136 @@ public void testCapacityListingForSingleNonGpuType() {
481496
Assert.assertTrue(apiResponseHelper.capacityListingForSingleNonGpuType(List.of(c1, c2)));
482497
Assert.assertFalse(apiResponseHelper.capacityListingForSingleNonGpuType(List.of(c1, c2, c3)));
483498
}
499+
500+
@Test
501+
public void setVpcIdInResponseTestNullVpcIdReturnNull() {
502+
NetworkResponse networkResponse = new NetworkResponse();
503+
504+
apiResponseHelper.setVpcIdInResponse(null, networkResponse::setVpcId, networkResponse::setVpcName, networkResponse::setVpcAccess);
505+
Assert.assertNull(networkResponse.getVpcId());
506+
Assert.assertNull(networkResponse.getVpcName());
507+
Assert.assertNull(networkResponse.getVpcAccess());
508+
}
509+
510+
@Test
511+
public void setVpcIdInResponseTestNullVpcReturnNull() {
512+
NetworkResponse networkResponse = new NetworkResponse();
513+
514+
try (MockedStatic<ApiDBUtils> utils = Mockito.mockStatic(ApiDBUtils.class)) {
515+
utils.when(() -> ApiDBUtils.findVpcById(1L)).thenReturn(null);
516+
apiResponseHelper.setVpcIdInResponse(1L, networkResponse::setVpcId, networkResponse::setVpcName, networkResponse::setVpcAccess);
517+
}
518+
Assert.assertNull(networkResponse.getVpcId());
519+
Assert.assertNull(networkResponse.getVpcName());
520+
Assert.assertNull(networkResponse.getVpcAccess());
521+
}
522+
523+
@Test
524+
public void setVpcIdInResponseCallerHasAccessReturnVpcAccessTrueAndVpcIdAndVpcName() {
525+
NetworkResponse networkResponse = new NetworkResponse();
526+
Mockito.when(vpcVOMock.getName()).thenReturn(A_NAME);
527+
Mockito.when(vpcVOMock.getUuid()).thenReturn(A_UUID);
528+
529+
try (MockedStatic<ApiDBUtils> utils = Mockito.mockStatic(ApiDBUtils.class)) {
530+
utils.when(() -> ApiDBUtils.findVpcById(1L)).thenReturn(vpcVOMock);
531+
apiResponseHelper.setVpcIdInResponse(1L, networkResponse::setVpcId, networkResponse::setVpcName, networkResponse::setVpcAccess);
532+
};
533+
Assert.assertEquals(A_UUID, networkResponse.getVpcId());
534+
Assert.assertEquals(A_NAME, networkResponse.getVpcName());
535+
Assert.assertTrue(networkResponse.getVpcAccess());
536+
}
537+
538+
@Test
539+
public void setVpcIdInResponseCallerDoesNotHaveAccessReturnVpcAccessFalseAndVpcIdAndVpcName() {
540+
NetworkResponse networkResponse = new NetworkResponse();
541+
Mockito.when(vpcVOMock.getName()).thenReturn(A_NAME);
542+
Mockito.when(vpcVOMock.getUuid()).thenReturn(A_UUID);
543+
544+
try (MockedStatic<ApiDBUtils> utils = Mockito.mockStatic(ApiDBUtils.class)) {
545+
utils.when(() -> ApiDBUtils.findVpcById(1L)).thenReturn(vpcVOMock);
546+
Mockito.doThrow(PermissionDeniedException.class).when(accountManagerMock).checkAccess(Mockito.any(), Mockito.any(), Mockito.anyBoolean(), Mockito.any());
547+
apiResponseHelper.setVpcIdInResponse(1L, networkResponse::setVpcId, networkResponse::setVpcName, networkResponse::setVpcAccess);
548+
};
549+
Assert.assertEquals(A_UUID, networkResponse.getVpcId());
550+
Assert.assertEquals(A_NAME, networkResponse.getVpcName());
551+
Assert.assertFalse(networkResponse.getVpcAccess());
552+
}
553+
554+
@Test
555+
public void setAclIdInResponseTestNullNetworkAclIdReturnNull() {
556+
NetworkResponse networkResponse = new NetworkResponse();
557+
Network networkMock = Mockito.mock(Network.class);
558+
Mockito.when(networkMock.getNetworkACLId()).thenReturn(null);
559+
560+
apiResponseHelper.setAclIdInResponse(networkMock, networkResponse);
561+
Assert.assertNull(networkResponse.getAclId());
562+
Assert.assertNull(networkResponse.getAclName());
563+
}
564+
565+
@Test
566+
public void setAclIdInResponseTestNullAclReturnNull() {
567+
NetworkResponse networkResponse = new NetworkResponse();
568+
Network networkMock = Mockito.mock(Network.class);
569+
Mockito.when(networkMock.getNetworkACLId()).thenReturn(1L);
570+
571+
try (MockedStatic<ApiDBUtils> utils = Mockito.mockStatic(ApiDBUtils.class)) {
572+
utils.when(() -> ApiDBUtils.findByNetworkACLId(1L)).thenReturn(null);
573+
apiResponseHelper.setAclIdInResponse(networkMock, networkResponse);
574+
}
575+
Assert.assertNull(networkResponse.getAclId());
576+
Assert.assertNull(networkResponse.getAclName());
577+
}
578+
579+
@Test
580+
public void setAclIdInResponseTestCallerDoesNotHaveAccessReturnNull() {
581+
NetworkResponse networkResponse = new NetworkResponse();
582+
networkResponse.setVpcAccess(false);
583+
Network networkMock = Mockito.mock(Network.class);
584+
Mockito.when(networkMock.getNetworkACLId()).thenReturn(1L);
585+
Mockito.when(networkACLMock.getVpcId()).thenReturn(2L);
586+
587+
try (MockedStatic<ApiDBUtils> utils = Mockito.mockStatic(ApiDBUtils.class)) {
588+
utils.when(() -> ApiDBUtils.findByNetworkACLId(1L)).thenReturn(networkACLMock);
589+
apiResponseHelper.setAclIdInResponse(networkMock, networkResponse);
590+
}
591+
Assert.assertNull(networkResponse.getAclId());
592+
Assert.assertNull(networkResponse.getAclName());
593+
}
594+
595+
@Test
596+
public void setAclIdInResponseTestCallerDoesNotHaveAccessButAclIsGlobalReturnAclIdAndAclName() {
597+
NetworkResponse networkResponse = new NetworkResponse();
598+
networkResponse.setVpcAccess(false);
599+
Network networkMock = Mockito.mock(Network.class);
600+
Mockito.when(networkMock.getNetworkACLId()).thenReturn(1L);
601+
Mockito.when(networkACLMock.getVpcId()).thenReturn(0L);
602+
Mockito.when(networkACLMock.getName()).thenReturn(A_NAME);
603+
Mockito.when(networkACLMock.getUuid()).thenReturn(A_UUID);
604+
605+
try (MockedStatic<ApiDBUtils> utils = Mockito.mockStatic(ApiDBUtils.class)) {
606+
utils.when(() -> ApiDBUtils.findByNetworkACLId(1L)).thenReturn(networkACLMock);
607+
apiResponseHelper.setAclIdInResponse(networkMock, networkResponse);
608+
}
609+
Assert.assertEquals(A_UUID, networkResponse.getAclId());
610+
Assert.assertEquals(A_NAME, networkResponse.getAclName());
611+
}
612+
613+
@Test
614+
public void setAclIdInResponseTestCallerHasAccessReturnAclIdAndAclName() {
615+
NetworkResponse networkResponse = new NetworkResponse();
616+
networkResponse.setVpcAccess(true);
617+
Network networkMock = Mockito.mock(Network.class);
618+
Mockito.when(networkMock.getNetworkACLId()).thenReturn(1L);
619+
Mockito.lenient().when(networkACLMock.getVpcId()).thenReturn(2L);
620+
Mockito.when(networkACLMock.getName()).thenReturn(A_NAME);
621+
Mockito.when(networkACLMock.getUuid()).thenReturn(A_UUID);
622+
623+
try (MockedStatic<ApiDBUtils> utils = Mockito.mockStatic(ApiDBUtils.class)) {
624+
utils.when(() -> ApiDBUtils.findByNetworkACLId(1L)).thenReturn(networkACLMock);
625+
apiResponseHelper.setAclIdInResponse(networkMock, networkResponse);
626+
}
627+
Assert.assertEquals(A_UUID, networkResponse.getAclId());
628+
Assert.assertEquals(A_NAME, networkResponse.getAclName());
629+
}
630+
484631
}

0 commit comments

Comments
 (0)