Skip to content

Commit 2da3004

Browse files
committed
add more tests
Signed-off-by: Abhishek Kumar <[email protected]>
1 parent 40b013d commit 2da3004

17 files changed

+611
-185
lines changed

framework/extensions/src/main/java/org/apache/cloudstack/framework/extensions/manager/ExtensionsFilesystemManagerImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -402,9 +402,9 @@ public String prepareExternalPayload(String extensionName, Map<String, Object> d
402402
}
403403

404404
@Override
405-
public void deleteExtensionPayload(String extensionName, String payloadFileName) {
406-
logger.trace("Deleting payload file: {} for extension: {}", payloadFileName, extensionName);
407-
FileUtil.deletePath(payloadFileName);
405+
public void deleteExtensionPayload(String extensionName, String payloadFilePath) {
406+
logger.trace("Deleting payload file: {} for extension: {}", payloadFilePath, extensionName);
407+
FileUtil.deletePath(payloadFilePath);
408408
}
409409

410410
@Override

framework/extensions/src/main/java/org/apache/cloudstack/framework/extensions/manager/ExtensionsShareManagerImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ protected boolean packArchiveForSync(Extension extension, Path extensionRootPath
272272
Files.copy(p, dest, StandardCopyOption.COPY_ATTRIBUTES);
273273
}
274274
}
275-
logger.debug("Packing files for {} from: {} to archive: {}", extension, sourceDir,
275+
logger.debug("Packing files for sync for {} from: {} to archive: {}", extension, sourceDir,
276276
archivePath.toAbsolutePath());
277277
boolean result = ArchiveUtil.packPath(ArchiveUtil.ArchiveFormat.TGZ, sourceDir, archivePath, 60);
278278

@@ -286,7 +286,7 @@ protected boolean packArchiveForDownload(Extension extension, Path extensionRoot
286286
throws IOException {
287287
Files.createDirectories(archivePath.getParent());
288288
FileUtil.deletePath(archivePath.toAbsolutePath().toString());
289-
logger.debug("Packing files for {} from: {} to archive: {}", extension, extensionRootPath,
289+
logger.debug("Packing files for download for {} from: {} to archive: {}", extension, extensionRootPath,
290290
archivePath.toAbsolutePath());
291291

292292
return ArchiveUtil.packPath(ArchiveUtil.ArchiveFormat.ZIP, extensionRootPath, archivePath, 60);

framework/extensions/src/test/java/org/apache/cloudstack/framework/extensions/api/AddCustomActionCmdTest.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,10 @@
4040
import org.apache.cloudstack.extension.ExtensionCustomAction;
4141
import org.apache.cloudstack.framework.extensions.manager.ExtensionsManager;
4242
import org.apache.commons.collections.MapUtils;
43-
import org.junit.Before;
4443
import org.junit.Test;
4544
import org.junit.runner.RunWith;
45+
import org.mockito.InjectMocks;
46+
import org.mockito.Mock;
4647
import org.mockito.junit.MockitoJUnitRunner;
4748
import org.springframework.test.util.ReflectionTestUtils;
4849

@@ -51,15 +52,11 @@
5152
@RunWith(MockitoJUnitRunner.class)
5253
public class AddCustomActionCmdTest {
5354

54-
private AddCustomActionCmd cmd;
55+
@Mock
5556
private ExtensionsManager extensionsManager;
5657

57-
@Before
58-
public void setUp() throws Exception {
59-
cmd = new AddCustomActionCmd();
60-
extensionsManager = mock(ExtensionsManager.class);
61-
cmd.extensionsManager = extensionsManager;
62-
}
58+
@InjectMocks
59+
private AddCustomActionCmd cmd = new AddCustomActionCmd();
6360

6461
private void setField(String fieldName, Object value) {
6562
ReflectionTestUtils.setField(cmd, fieldName, value);

framework/extensions/src/test/java/org/apache/cloudstack/framework/extensions/api/CreateExtensionCmdTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,13 @@
2828

2929
import org.apache.commons.collections.MapUtils;
3030
import org.junit.Test;
31+
import org.junit.runner.RunWith;
32+
import org.mockito.InjectMocks;
33+
import org.mockito.junit.MockitoJUnitRunner;
3134

35+
@RunWith(MockitoJUnitRunner.class)
3236
public class CreateExtensionCmdTest {
37+
@InjectMocks
3338
CreateExtensionCmd cmd = new CreateExtensionCmd();
3439

3540
@Test

framework/extensions/src/test/java/org/apache/cloudstack/framework/extensions/api/DeleteCustomActionCmdTest.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,23 +24,23 @@
2424
import org.apache.cloudstack.api.ServerApiException;
2525
import org.apache.cloudstack.api.response.SuccessResponse;
2626
import org.apache.cloudstack.framework.extensions.manager.ExtensionsManager;
27-
import org.junit.Before;
2827
import org.junit.Test;
28+
import org.junit.runner.RunWith;
29+
import org.mockito.InjectMocks;
30+
import org.mockito.Mock;
2931
import org.mockito.Mockito;
32+
import org.mockito.Spy;
33+
import org.mockito.junit.MockitoJUnitRunner;
3034

35+
@RunWith(MockitoJUnitRunner.class)
3136
public class DeleteCustomActionCmdTest {
3237

33-
private DeleteCustomActionCmd cmd;
38+
@Mock
3439
private ExtensionsManager extensionsManager;
3540

36-
@Before
37-
public void setUp() throws Exception {
38-
cmd = Mockito.spy(new DeleteCustomActionCmd());
39-
extensionsManager = Mockito.mock(ExtensionsManager.class);
40-
java.lang.reflect.Field field = DeleteCustomActionCmd.class.getDeclaredField("extensionsManager");
41-
field.setAccessible(true);
42-
field.set(cmd, extensionsManager);
43-
}
41+
@Spy
42+
@InjectMocks
43+
private DeleteCustomActionCmd cmd;
4444

4545
@Test
4646
public void getIdReturnsNullWhenUnset() throws Exception {

framework/extensions/src/test/java/org/apache/cloudstack/framework/extensions/api/DeleteExtensionCmdTest.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,22 +26,24 @@
2626
import org.apache.cloudstack.api.ServerApiException;
2727
import org.apache.cloudstack.api.response.SuccessResponse;
2828
import org.apache.cloudstack.framework.extensions.manager.ExtensionsManager;
29-
import org.junit.Before;
3029
import org.junit.Test;
30+
import org.junit.runner.RunWith;
31+
import org.mockito.InjectMocks;
32+
import org.mockito.Mock;
3133
import org.mockito.Mockito;
34+
import org.mockito.Spy;
35+
import org.mockito.junit.MockitoJUnitRunner;
3236
import org.springframework.test.util.ReflectionTestUtils;
3337

38+
@RunWith(MockitoJUnitRunner.class)
3439
public class DeleteExtensionCmdTest {
3540

36-
private DeleteExtensionCmd cmd;
41+
@Mock
3742
private ExtensionsManager extensionsManager;
3843

39-
@Before
40-
public void setUp() {
41-
cmd = Mockito.spy(new DeleteExtensionCmd());
42-
extensionsManager = Mockito.mock(ExtensionsManager.class);
43-
cmd.extensionsManager = extensionsManager;
44-
}
44+
@Spy
45+
@InjectMocks
46+
private DeleteExtensionCmd cmd;
4547

4648
@Test
4749
public void getIdReturnsNullWhenUnset() {
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
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+
18+
package org.apache.cloudstack.framework.extensions.api;
19+
20+
import static org.junit.Assert.assertEquals;
21+
import static org.junit.Assert.assertThrows;
22+
import static org.mockito.ArgumentMatchers.any;
23+
import static org.mockito.Mockito.mock;
24+
import static org.mockito.Mockito.verify;
25+
import static org.mockito.Mockito.when;
26+
27+
import org.apache.cloudstack.api.ApiCommandResourceType;
28+
import org.apache.cloudstack.api.ApiErrorCode;
29+
import org.apache.cloudstack.api.ServerApiException;
30+
import org.apache.cloudstack.framework.extensions.api.response.DownloadExtensionResponse;
31+
import org.apache.cloudstack.framework.extensions.manager.ExtensionsManager;
32+
import org.junit.Test;
33+
import org.junit.runner.RunWith;
34+
import org.mockito.InjectMocks;
35+
import org.mockito.Mock;
36+
import org.mockito.Spy;
37+
import org.mockito.junit.MockitoJUnitRunner;
38+
import org.springframework.test.util.ReflectionTestUtils;
39+
40+
import com.cloud.event.EventTypes;
41+
import com.cloud.user.Account;
42+
43+
@RunWith(MockitoJUnitRunner.class)
44+
public class DownloadExtensionCmdTest {
45+
46+
@Mock
47+
private ExtensionsManager extensionsManager;
48+
49+
@Spy
50+
@InjectMocks
51+
private DownloadExtensionCmd cmd;
52+
53+
@Test
54+
public void getIdReturnsExpected() {
55+
ReflectionTestUtils.setField(cmd, "id", 123L);
56+
assertEquals(Long.valueOf(123L), cmd.getId());
57+
}
58+
59+
@Test
60+
public void getManagementServerIdReturnsExpected() {
61+
ReflectionTestUtils.setField(cmd, "managementServerId", 123L);
62+
assertEquals(Long.valueOf(123L), cmd.getManagementServerId());
63+
}
64+
65+
@Test
66+
public void executeSetsResponseObjectWhenDownloadSucceeds() {
67+
DownloadExtensionResponse response = mock(DownloadExtensionResponse.class);
68+
when(extensionsManager.downloadExtension(any(DownloadExtensionCmd.class))).thenReturn(response);
69+
cmd.execute();
70+
verify(cmd).setResponseObject(response);
71+
}
72+
73+
@Test
74+
public void executeThrowsExceptionWhenDownloadFails() {
75+
when(extensionsManager.downloadExtension(cmd)).thenReturn(null);
76+
ServerApiException exception = assertThrows(ServerApiException.class, cmd::execute);
77+
assertEquals(ApiErrorCode.INTERNAL_ERROR, exception.getErrorCode());
78+
assertEquals("Failed to download extension", exception.getDescription());
79+
}
80+
81+
@Test
82+
public void getEntityOwnerIdReturnsSystemAccount() {
83+
assertEquals(Account.ACCOUNT_ID_SYSTEM, cmd.getEntityOwnerId());
84+
}
85+
86+
@Test
87+
public void getApiResourceTypeReturnsExtension() {
88+
assertEquals(ApiCommandResourceType.Extension, cmd.getApiResourceType());
89+
}
90+
91+
@Test
92+
public void getEventTypeReturnsCorrectEventType() {
93+
assertEquals(EventTypes.EVENT_EXTENSION_DOWNLOAD, cmd.getEventType());
94+
}
95+
96+
@Test
97+
public void getEventDescriptionReturnsCorrectDescription() {
98+
Long id = 123L;
99+
ReflectionTestUtils.setField(cmd, "id", id);
100+
assertEquals("Download extension: 123", cmd.getEventDescription());
101+
}
102+
103+
}

framework/extensions/src/test/java/org/apache/cloudstack/framework/extensions/api/ListCustomActionCmdTest.java

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -33,22 +33,24 @@
3333
import org.apache.cloudstack.api.response.ExtensionCustomActionResponse;
3434
import org.apache.cloudstack.api.response.ListResponse;
3535
import org.apache.cloudstack.framework.extensions.manager.ExtensionsManager;
36-
import org.junit.Before;
3736
import org.junit.Test;
37+
import org.junit.runner.RunWith;
38+
import org.mockito.InjectMocks;
39+
import org.mockito.Mock;
3840
import org.mockito.Mockito;
41+
import org.mockito.Spy;
42+
import org.mockito.junit.MockitoJUnitRunner;
3943
import org.springframework.test.util.ReflectionTestUtils;
4044

45+
@RunWith(MockitoJUnitRunner.class)
4146
public class ListCustomActionCmdTest {
4247

43-
private ListCustomActionCmd cmd;
48+
@Mock
4449
private ExtensionsManager extensionsManager;
4550

46-
@Before
47-
public void setUp() {
48-
cmd = new ListCustomActionCmd();
49-
extensionsManager = mock(ExtensionsManager.class);
50-
ReflectionTestUtils.setField(cmd, "extensionsManager", extensionsManager);
51-
}
51+
@Spy
52+
@InjectMocks
53+
private ListCustomActionCmd cmd;
5254

5355
private void setField(String fieldName, Object value) {
5456
ReflectionTestUtils.setField(cmd, fieldName, value);
@@ -140,14 +142,10 @@ public void isEnabledReturnsFalseWhenSetFalse() {
140142
@Test
141143
public void executeSetsListResponse() {
142144
List<ExtensionCustomActionResponse> responses = Arrays.asList(mock(ExtensionCustomActionResponse.class));
143-
when(extensionsManager.listCustomActions(cmd)).thenReturn(responses);
144-
145-
ListCustomActionCmd spyCmd = Mockito.spy(cmd);
146-
doNothing().when(spyCmd).setResponseObject(any());
147-
148-
spyCmd.execute();
149-
150-
verify(extensionsManager).listCustomActions(spyCmd);
151-
verify(spyCmd).setResponseObject(any(ListResponse.class));
145+
when(extensionsManager.listCustomActions(any(ListCustomActionCmd.class))).thenReturn(responses);
146+
doNothing().when(cmd).setResponseObject(any());
147+
cmd.execute();
148+
verify(extensionsManager).listCustomActions(cmd);
149+
verify(cmd).setResponseObject(any(ListResponse.class));
152150
}
153151
}

framework/extensions/src/test/java/org/apache/cloudstack/framework/extensions/api/ListExtensionsCmdTest.java

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,27 +19,41 @@
1919

2020
import static org.junit.Assert.assertEquals;
2121
import static org.junit.Assert.assertTrue;
22+
import static org.mockito.ArgumentMatchers.any;
23+
import static org.mockito.Mockito.doNothing;
24+
import static org.mockito.Mockito.mock;
25+
import static org.mockito.Mockito.verify;
26+
import static org.mockito.Mockito.when;
2227

2328
import java.util.Arrays;
2429
import java.util.Collections;
2530
import java.util.EnumSet;
2631
import java.util.List;
2732

2833
import org.apache.cloudstack.api.ApiConstants;
29-
import org.junit.Before;
34+
import org.apache.cloudstack.api.response.ExtensionResponse;
35+
import org.apache.cloudstack.api.response.ListResponse;
36+
import org.apache.cloudstack.framework.extensions.manager.ExtensionsManager;
3037
import org.junit.Test;
38+
import org.junit.runner.RunWith;
39+
import org.mockito.InjectMocks;
40+
import org.mockito.Mock;
41+
import org.mockito.Spy;
42+
import org.mockito.junit.MockitoJUnitRunner;
3143
import org.springframework.test.util.ReflectionTestUtils;
3244

3345
import com.cloud.exception.InvalidParameterValueException;
3446

47+
@RunWith(MockitoJUnitRunner.class)
3548
public class ListExtensionsCmdTest {
3649

37-
private ListExtensionsCmd cmd;
3850

39-
@Before
40-
public void setUp() {
41-
cmd = new ListExtensionsCmd();
42-
}
51+
@Mock
52+
private ExtensionsManager extensionsManager;
53+
54+
@Spy
55+
@InjectMocks
56+
private ListExtensionsCmd cmd;
4357

4458
private void setPrivateField(String fieldName, Object value) {
4559
ReflectionTestUtils.setField(cmd, fieldName, value);
@@ -89,4 +103,14 @@ public void testGetDetailsWithInvalidValueThrowsException() {
89103
setPrivateField("details", detailsList);
90104
cmd.getDetails();
91105
}
106+
107+
@Test
108+
public void executeSetsListResponse() {
109+
List<ExtensionResponse> responses = Arrays.asList(mock(ExtensionResponse.class));
110+
when(extensionsManager.listExtensions(any(ListExtensionsCmd.class))).thenReturn(responses);
111+
doNothing().when(cmd).setResponseObject(any());
112+
cmd.execute();
113+
verify(extensionsManager).listExtensions(cmd);
114+
verify(cmd).setResponseObject(any(ListResponse.class));
115+
}
92116
}

framework/extensions/src/test/java/org/apache/cloudstack/framework/extensions/api/RegisterExtensionCmdTest.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,22 +37,23 @@
3737
import org.apache.cloudstack.api.response.ExtensionResponse;
3838
import org.apache.cloudstack.extension.Extension;
3939
import org.apache.cloudstack.framework.extensions.manager.ExtensionsManager;
40-
import org.junit.Before;
4140
import org.junit.Test;
42-
import org.mockito.Mockito;
41+
import org.junit.runner.RunWith;
42+
import org.mockito.InjectMocks;
43+
import org.mockito.Mock;
44+
import org.mockito.Spy;
45+
import org.mockito.junit.MockitoJUnitRunner;
4346
import org.springframework.test.util.ReflectionTestUtils;
4447

48+
@RunWith(MockitoJUnitRunner.class)
4549
public class RegisterExtensionCmdTest {
4650

47-
private RegisterExtensionCmd cmd;
51+
@Mock
4852
private ExtensionsManager extensionsManager;
4953

50-
@Before
51-
public void setUp() {
52-
cmd = Mockito.spy(new RegisterExtensionCmd());
53-
extensionsManager = mock(ExtensionsManager.class);
54-
ReflectionTestUtils.setField(cmd, "extensionsManager", extensionsManager);
55-
}
54+
@Spy
55+
@InjectMocks
56+
private RegisterExtensionCmd cmd;
5657

5758
@Test
5859
public void extensionIdReturnsNullWhenUnset() {

0 commit comments

Comments
 (0)