Skip to content

Commit aa7f8e5

Browse files
Boris Schrijverwido
authored andcommitted
Added unit tests for CLOUDSTACK-8133
Tests will confirm the behaviour of the newly added response fields of listSecurityGroups. Signed-off-by: Wido den Hollander <wido@widodh.nl> This closes apache#679
1 parent 03f4887 commit aa7f8e5

1 file changed

Lines changed: 205 additions & 0 deletions

File tree

Lines changed: 205 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,205 @@
1+
// Licensed to the Apache Software Foundation (ASF) under one
2+
// or more contributor license agreements. See the NOTICE file
3+
// distributed with this work for additional information
4+
// regarding copyright ownership. The ASF licenses this file
5+
// to you under the Apache License, Version 2.0 (the
6+
// "License"); you may not use this file except in compliance
7+
// with the License. You may obtain a copy of the License at
8+
//
9+
// http://www.apache.org/licenses/LICENSE-2.0
10+
//
11+
// Unless required by applicable law or agreed to in writing,
12+
// software distributed under the License is distributed on an
13+
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14+
// KIND, either express or implied. See the License for the
15+
// specific language governing permissions and limitations
16+
// under the License.
17+
package com.cloud.api.query.dao;
18+
19+
import static org.mockito.Matchers.any;
20+
import static org.mockito.Matchers.anyString;
21+
import static org.mockito.Mockito.when;
22+
23+
import java.lang.reflect.Field;
24+
import java.util.ArrayList;
25+
import java.util.List;
26+
import java.util.Set;
27+
28+
import org.apache.cloudstack.api.response.SecurityGroupResponse;
29+
import org.junit.Before;
30+
import org.junit.Test;
31+
import org.junit.runner.RunWith;
32+
import org.mockito.InjectMocks;
33+
import org.mockito.Mock;
34+
import org.mockito.MockitoAnnotations;
35+
import org.mockito.runners.MockitoJUnitRunner;
36+
37+
import com.cloud.api.query.vo.ResourceTagJoinVO;
38+
import com.cloud.api.query.vo.SecurityGroupJoinVO;
39+
import com.cloud.network.security.SecurityGroupVMMapVO;
40+
import com.cloud.network.security.dao.SecurityGroupVMMapDao;
41+
import com.cloud.server.ResourceTag.ResourceObjectType;
42+
import com.cloud.user.Account;
43+
import com.cloud.vm.UserVmVO;
44+
import com.cloud.vm.dao.UserVmDao;
45+
46+
import junit.framework.TestCase;
47+
48+
@RunWith(MockitoJUnitRunner.class)
49+
public class SecurityGroupJoinDaoImplTest extends TestCase {
50+
51+
// Mock private variables.
52+
@Mock (name = "_resourceTagJoinDao")
53+
private ResourceTagJoinDao _resourceTagJoinDao;
54+
@Mock (name = "_securityGroupVMMapDao")
55+
private SecurityGroupVMMapDao _securityGroupVMMapDao;
56+
@Mock (name = "_userVmDao")
57+
private UserVmDao _userVmDao;
58+
59+
// Inject mocks in class to be tested.
60+
@InjectMocks
61+
private SecurityGroupJoinDaoImpl _securityGroupJoinDaoImpl;
62+
63+
// Mock a caller and a SecurityGroupJoinVO
64+
@Mock
65+
private Account caller;
66+
@Mock
67+
private SecurityGroupJoinVO vsg;
68+
69+
// Mock securitygroups
70+
@Mock
71+
private SecurityGroupVMMapVO securityGroupVMMapVOone;
72+
@Mock
73+
private SecurityGroupVMMapVO securityGroupVMMapVOtwo;
74+
75+
// Mock 2 UserVmVOs
76+
@Mock
77+
private UserVmVO userVmVOone;
78+
@Mock
79+
private UserVmVO userVmVOtwo;
80+
81+
// Random generated UUIDs
82+
private final String uuidOne = "463e022a-249d-4212-bdf4-726bc9047aa7";
83+
private final String uuidTwo = "d8714c5f-766f-4b14-bdf4-17571042b9c5";
84+
85+
@Before
86+
public void setup() {
87+
MockitoAnnotations.initMocks(this);
88+
89+
// Security group without vms associated.
90+
List<SecurityGroupVMMapVO> securityGroupVmMap_empty = new ArrayList<SecurityGroupVMMapVO>();
91+
92+
// Security group with one vm associated.
93+
List<SecurityGroupVMMapVO> securityGroupVmMap_one = new ArrayList<SecurityGroupVMMapVO>();
94+
securityGroupVmMap_one.add(securityGroupVMMapVOone);
95+
96+
// Security group with two or many vms associated
97+
List<SecurityGroupVMMapVO> securityGroupVmMap_two = new ArrayList<SecurityGroupVMMapVO>();
98+
securityGroupVmMap_two.add(securityGroupVMMapVOone);
99+
securityGroupVmMap_two.add(securityGroupVMMapVOtwo);
100+
101+
// Mock the resource tags to return an empty list.
102+
when(_resourceTagJoinDao.listBy(anyString(), any(ResourceObjectType.class))).thenReturn(new ArrayList<ResourceTagJoinVO>());
103+
104+
// Mock the listBySecurityGroup method to return a specified list when being called.
105+
when(_securityGroupVMMapDao.listBySecurityGroup(1L)).thenReturn(securityGroupVmMap_empty);
106+
when(_securityGroupVMMapDao.listBySecurityGroup(2L)).thenReturn(securityGroupVmMap_one);
107+
when(_securityGroupVMMapDao.listBySecurityGroup(3L)).thenReturn(securityGroupVmMap_two);
108+
109+
// Mock the securityGroupVMMapVOs to return a specified instance id.
110+
when(securityGroupVMMapVOone.getInstanceId()).thenReturn(1L);
111+
when(securityGroupVMMapVOtwo.getInstanceId()).thenReturn(2L);
112+
113+
// Mock _userVmDao to return a non null instance of UserVmVO.
114+
when(_userVmDao.findById(1L)).thenReturn(userVmVOone);
115+
when(_userVmDao.findById(2L)).thenReturn(userVmVOtwo);
116+
117+
// Mock _userVmDao to return a non null instance of UserVmVO.
118+
when(userVmVOone.getUuid()).thenReturn(uuidOne);
119+
when(userVmVOtwo.getUuid()).thenReturn(uuidTwo);
120+
}
121+
122+
@Test
123+
public void virtualMachineCountEmptyTest() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
124+
125+
when(vsg.getId()).thenReturn(1L);
126+
127+
SecurityGroupResponse securityGroupResponse = _securityGroupJoinDaoImpl.newSecurityGroupResponse(vsg, caller);
128+
129+
Field virtualMachineCount = securityGroupResponse.getClass().getDeclaredField("virtualMachineCount");
130+
virtualMachineCount.setAccessible(true);
131+
assertEquals(0, ((Integer)virtualMachineCount.get(securityGroupResponse)).intValue());
132+
}
133+
134+
@Test
135+
public void virtualMachineCountOneTest() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
136+
137+
when(vsg.getId()).thenReturn(2L);
138+
139+
SecurityGroupResponse securityGroupResponse = _securityGroupJoinDaoImpl.newSecurityGroupResponse(vsg, caller);
140+
141+
Field virtualMachineCount = securityGroupResponse.getClass().getDeclaredField("virtualMachineCount");
142+
virtualMachineCount.setAccessible(true);
143+
assertEquals(1, ((Integer)virtualMachineCount.get(securityGroupResponse)).intValue());
144+
}
145+
146+
@Test
147+
public void virtualMachineCountTwoTest() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
148+
149+
when(vsg.getId()).thenReturn(3L);
150+
151+
SecurityGroupResponse securityGroupResponse = _securityGroupJoinDaoImpl.newSecurityGroupResponse(vsg, caller);
152+
153+
Field virtualMachineCount = securityGroupResponse.getClass().getDeclaredField("virtualMachineCount");
154+
virtualMachineCount.setAccessible(true);
155+
assertEquals(2, ((Integer)virtualMachineCount.get(securityGroupResponse)).intValue());
156+
}
157+
158+
@Test
159+
public void virtualMachineIDsEmptyTest() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
160+
161+
when(vsg.getId()).thenReturn(1L);
162+
163+
SecurityGroupResponse securityGroupResponse = _securityGroupJoinDaoImpl.newSecurityGroupResponse(vsg, caller);
164+
165+
Field fieldVirtualMachineIds = securityGroupResponse.getClass().getDeclaredField("virtualMachineIds");
166+
fieldVirtualMachineIds.setAccessible(true);
167+
168+
Set<String> virtualMachineIds = (Set<String>)fieldVirtualMachineIds.get(securityGroupResponse);
169+
170+
assertEquals(0, virtualMachineIds.size());
171+
}
172+
173+
@Test
174+
public void virtualMachineIDsOneTest() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
175+
176+
when(vsg.getId()).thenReturn(2L);
177+
178+
SecurityGroupResponse securityGroupResponse = _securityGroupJoinDaoImpl.newSecurityGroupResponse(vsg, caller);
179+
180+
Field fieldVirtualMachineIds = securityGroupResponse.getClass().getDeclaredField("virtualMachineIds");
181+
fieldVirtualMachineIds.setAccessible(true);
182+
183+
Set<String> virtualMachineIds = (Set<String>)fieldVirtualMachineIds.get(securityGroupResponse);
184+
185+
assertEquals(1, virtualMachineIds.size());
186+
assertTrue(virtualMachineIds.contains(uuidOne));
187+
}
188+
189+
@Test
190+
public void virtualMachineIDsTwoTest() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
191+
192+
when(vsg.getId()).thenReturn(3L);
193+
194+
SecurityGroupResponse securityGroupResponse = _securityGroupJoinDaoImpl.newSecurityGroupResponse(vsg, caller);
195+
196+
Field fieldVirtualMachineIds = securityGroupResponse.getClass().getDeclaredField("virtualMachineIds");
197+
fieldVirtualMachineIds.setAccessible(true);
198+
199+
Set<String> virtualMachineIds = (Set<String>)fieldVirtualMachineIds.get(securityGroupResponse);
200+
201+
assertEquals(2, virtualMachineIds.size());
202+
assertTrue(virtualMachineIds.contains(uuidOne));
203+
assertTrue(virtualMachineIds.contains(uuidTwo));
204+
}
205+
}

0 commit comments

Comments
 (0)