You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ch...@apache.org on 2012/11/20 18:29:35 UTC
[2/2] git commit: Unit test additions (and some minor command class
changes to support testing) Signed-off-by: Chip Childers
Unit test additions (and some minor command class changes to support testing)
Signed-off-by: Chip Childers <ch...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/b7c74ee7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/b7c74ee7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/b7c74ee7
Branch: refs/heads/master
Commit: b7c74ee78b257af6a29cd8bb40bcd7b89b794529
Parents: 66ca432
Author: Meghna Kale <me...@sungard.com>
Authored: Tue Nov 20 12:21:54 2012 -0500
Committer: Chip Childers <ch...@gmail.com>
Committed: Tue Nov 20 12:21:54 2012 -0500
----------------------------------------------------------------------
api/pom.xml | 1 +
.../com/cloud/api/commands/ActivateProjectCmd.java | 6 +-
.../cloud/api/commands/AddAccountToProjectCmd.java | 10 +-
.../cloud/api/commands/ActivateProjectCmdTest.java | 81 +++++++
.../api/commands/AddAccountToProjectCmdTest.java | 175 +++++++++++++++
.../com/cloud/api/commands/AddClusterCmdTest.java | 131 +++++++++++
pom.xml | 6 +
7 files changed, 402 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b7c74ee7/api/pom.xml
----------------------------------------------------------------------
diff --git a/api/pom.xml b/api/pom.xml
index f25a6bc..7461c67 100644
--- a/api/pom.xml
+++ b/api/pom.xml
@@ -40,5 +40,6 @@
<build>
<defaultGoal>install</defaultGoal>
<sourceDirectory>src</sourceDirectory>
+ <testSourceDirectory>test</testSourceDirectory>
</build>
</project>
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b7c74ee7/api/src/com/cloud/api/commands/ActivateProjectCmd.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/api/commands/ActivateProjectCmd.java b/api/src/com/cloud/api/commands/ActivateProjectCmd.java
index 20b5507..7247767 100644
--- a/api/src/com/cloud/api/commands/ActivateProjectCmd.java
+++ b/api/src/com/cloud/api/commands/ActivateProjectCmd.java
@@ -61,13 +61,13 @@ public class ActivateProjectCmd extends BaseAsyncCmd {
@Override
public long getEntityOwnerId() {
- Project project= _projectService.getProject(id);
+ Project project= _projectService.getProject(getId());
//verify input parameters
if (project == null) {
- throw new InvalidParameterValueException("Unable to find project by id " + id);
+ throw new InvalidParameterValueException("Unable to find project by id " + getId());
}
- return _projectService.getProjectOwner(id).getId();
+ return _projectService.getProjectOwner(getId()).getId();
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b7c74ee7/api/src/com/cloud/api/commands/AddAccountToProjectCmd.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/api/commands/AddAccountToProjectCmd.java b/api/src/com/cloud/api/commands/AddAccountToProjectCmd.java
index 5178aa3..73609fb 100644
--- a/api/src/com/cloud/api/commands/AddAccountToProjectCmd.java
+++ b/api/src/com/cloud/api/commands/AddAccountToProjectCmd.java
@@ -98,15 +98,15 @@ public class AddAccountToProjectCmd extends BaseAsyncCmd {
@Override
public long getEntityOwnerId() {
- Project project= _projectService.getProject(projectId);
+ Project project= _projectService.getProject(getProjectId());
//verify input parameters
if (project == null) {
InvalidParameterValueException ex = new InvalidParameterValueException("Unable to find project with specified id");
- ex.addProxyObject(project, projectId, "projectId");
+ ex.addProxyObject(project, getProjectId(), "projectId");
throw ex;
}
- return _projectService.getProjectOwner(projectId).getId();
+ return _projectService.getProjectOwner(getProjectId()).getId();
}
@Override
@@ -117,9 +117,9 @@ public class AddAccountToProjectCmd extends BaseAsyncCmd {
@Override
public String getEventDescription() {
if (accountName != null) {
- return "Adding account " + accountName + " to project: " + projectId;
+ return "Adding account " + getAccountName() + " to project: " + getProjectId();
} else {
- return "Sending invitation to email " + email + " to join project: " + projectId;
+ return "Sending invitation to email " + email + " to join project: " + getProjectId();
}
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b7c74ee7/api/test/com/cloud/api/commands/ActivateProjectCmdTest.java
----------------------------------------------------------------------
diff --git a/api/test/com/cloud/api/commands/ActivateProjectCmdTest.java b/api/test/com/cloud/api/commands/ActivateProjectCmdTest.java
new file mode 100644
index 0000000..1b06c5d
--- /dev/null
+++ b/api/test/com/cloud/api/commands/ActivateProjectCmdTest.java
@@ -0,0 +1,81 @@
+// 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.api.commands;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.mockito.Mockito;
+
+import com.cloud.exception.InvalidParameterValueException;
+import com.cloud.projects.Project;
+import com.cloud.projects.ProjectService;
+import com.cloud.user.Account;
+
+public class ActivateProjectCmdTest extends TestCase {
+
+ private ActivateProjectCmd activateProjectCmd;
+
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
+
+ @Before
+ public void setUp() {
+ activateProjectCmd = new ActivateProjectCmd(){
+
+ @Override
+ public Long getId() {
+ return 2L;
+ }
+ };
+ }
+
+ @Test
+ public void testGetEntityOwnerIdForNullProject() {
+ ProjectService projectService = Mockito.mock(ProjectService.class);
+ Mockito.when(projectService.getProject(Mockito.anyLong())).thenReturn(null);
+ activateProjectCmd._projectService = projectService;
+
+ try {
+ activateProjectCmd.getEntityOwnerId();
+ } catch(InvalidParameterValueException exception) {
+ Assert.assertEquals("Unable to find project by id 2", exception.getLocalizedMessage());
+ }
+ }
+
+ @Test
+ public void testGetEntityOwnerIdForProject() {
+ Project project = Mockito.mock(Project.class);
+ Mockito.when(project.getId()).thenReturn(2L);
+ ProjectService projectService = Mockito.mock(ProjectService.class);
+ Account account = Mockito.mock(Account.class);
+ Mockito.when(account.getId()).thenReturn(2L);
+ Mockito.when(projectService.getProject(Mockito.anyLong())).thenReturn(project);
+
+ Mockito.when(projectService.getProjectOwner(Mockito.anyLong())).thenReturn(account);
+ activateProjectCmd._projectService = projectService;
+
+ Assert.assertEquals(2L, activateProjectCmd.getEntityOwnerId());
+
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b7c74ee7/api/test/com/cloud/api/commands/AddAccountToProjectCmdTest.java
----------------------------------------------------------------------
diff --git a/api/test/com/cloud/api/commands/AddAccountToProjectCmdTest.java b/api/test/com/cloud/api/commands/AddAccountToProjectCmdTest.java
new file mode 100644
index 0000000..152a089
--- /dev/null
+++ b/api/test/com/cloud/api/commands/AddAccountToProjectCmdTest.java
@@ -0,0 +1,175 @@
+// 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.api.commands;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.mockito.Mockito;
+
+import com.cloud.exception.InvalidParameterValueException;
+import com.cloud.projects.Project;
+import com.cloud.projects.ProjectService;
+import com.cloud.user.Account;
+
+public class AddAccountToProjectCmdTest extends TestCase {
+
+
+ private AddAccountToProjectCmd addAccountToProjectCmd;
+
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
+
+ @Before
+ public void setUp() {
+ addAccountToProjectCmd = new AddAccountToProjectCmd(){
+
+ @Override
+ public Long getProjectId() {
+ return 2L;
+ }
+
+ @Override
+ public String getAccountName() {
+
+ // to run the test testGetEventDescriptionForAccount set the accountName
+// return "accountName";
+ // to run the test the testGetEventDescriptionForNullAccount return accountname as null
+ return null;
+ }
+
+ @Override
+ public String getEmail() {
+// return "customer@abc.com";
+ return null;
+ }
+
+ };
+ }
+
+
+ /****
+ * Condition not handled in the code
+ *
+ *****/
+
+ /*@Test
+ public void testGetEntityOwnerIdForNullProject() {
+
+ ProjectService projectService = Mockito.mock(ProjectService.class);
+ Mockito.when(projectService.getProject(Mockito.anyLong())).thenReturn(null);
+ addAccountToProjectCmd._projectService = projectService;
+
+ try {
+ addAccountToProjectCmd.getEntityOwnerId();
+ } catch(InvalidParameterValueException exception) {
+ Assert.assertEquals("Unable to find project by id 2", exception.getLocalizedMessage());
+ }
+
+ }*/
+
+
+ @Test
+ public void testGetEntityOwnerIdForProject() {
+
+ Project project = Mockito.mock(Project.class);
+ Mockito.when(project.getId()).thenReturn(2L);
+
+ ProjectService projectService = Mockito.mock(ProjectService.class);
+ Account account = Mockito.mock(Account.class);
+
+ Mockito.when(account.getId()).thenReturn(2L);
+ Mockito.when(projectService.getProject(Mockito.anyLong())).thenReturn(
+ project);
+
+ Mockito.when(projectService.getProjectOwner(Mockito.anyLong()))
+ .thenReturn(account);
+ addAccountToProjectCmd._projectService = projectService;
+
+ Assert.assertEquals(2L, addAccountToProjectCmd.getEntityOwnerId());
+
+ }
+
+ /**
+ * To run the test uncomment the return statement for getAccountName() in setup() and return null
+ *
+ * **/
+
+
+ /*@Test
+ public void testGetEventDescriptionForNullAccount() {
+
+ String result = addAccountToProjectCmd.getEventDescription();
+ String expected = "Sending invitation to email null to join project: 2";
+ Assert.assertEquals(expected, result);
+
+ }*/
+
+ /***
+ *
+ *
+ *
+ * ***/
+
+
+
+ /*@Test
+ public void testGetEventDescriptionForAccount() {
+
+ String result = addAccountToProjectCmd.getEventDescription();
+ String expected = "Adding account accountName to project: 2";
+ Assert.assertEquals(expected, result);
+
+ }*/
+
+ @Test
+ public void testExecuteForNullAccountNameEmail() {
+
+ try {
+ addAccountToProjectCmd.execute();
+ } catch(InvalidParameterValueException exception) {
+ Assert.assertEquals("Either accountName or email is required", exception.getLocalizedMessage());
+ }
+
+ }
+
+
+ /*@Test
+ public void testExecuteForAccountNameEmail() {
+
+ try {
+
+ ComponentLocator c = Mockito.mock(ComponentLocator.class);
+ UserContext userContext = Mockito.mock(UserContext.class);
+
+// Mockito.when(userContext.current()).thenReturn(userContext);
+
+
+ addAccountToProjectCmd.execute();
+ } catch(InvalidParameterValueException exception) {
+ Assert.assertEquals("Either accountName or email is required", exception.getLocalizedMessage());
+ }
+
+ }*/
+
+
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b7c74ee7/api/test/com/cloud/api/commands/AddClusterCmdTest.java
----------------------------------------------------------------------
diff --git a/api/test/com/cloud/api/commands/AddClusterCmdTest.java b/api/test/com/cloud/api/commands/AddClusterCmdTest.java
new file mode 100644
index 0000000..6473531
--- /dev/null
+++ b/api/test/com/cloud/api/commands/AddClusterCmdTest.java
@@ -0,0 +1,131 @@
+// 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.api.commands;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.mockito.Mockito;
+
+import com.cloud.api.ServerApiException;
+import com.cloud.exception.DiscoveryException;
+import com.cloud.exception.ResourceInUseException;
+import com.cloud.org.Cluster;
+import com.cloud.resource.ResourceService;
+
+public class AddClusterCmdTest extends TestCase {
+
+ private AddClusterCmd addClusterCmd;
+
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
+
+ @Before
+ public void setUp() {
+ addClusterCmd = new AddClusterCmd(){
+ };
+ }
+
+
+
+ @Test
+ public void testExecuteForNullResult() {
+
+ ResourceService resourceService = Mockito.mock(ResourceService.class);
+
+ try {
+ Mockito.when(resourceService.discoverCluster(addClusterCmd)).thenReturn(null);
+ } catch (ResourceInUseException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IllegalArgumentException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (DiscoveryException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ addClusterCmd._resourceService = resourceService;
+
+ try {
+ addClusterCmd.execute();
+ } catch (ServerApiException exception) {
+ Assert.assertEquals("Failed to add cluster", exception.getDescription());
+ }
+
+ }
+
+
+ @Test
+ public void testExecuteForEmptyResult() {
+
+ ResourceService resourceService = Mockito.mock(ResourceService.class);
+ addClusterCmd._resourceService = resourceService;
+
+ try {
+ addClusterCmd.execute();
+ } catch (ServerApiException exception) {
+ Assert.assertEquals("Failed to add cluster", exception.getDescription());
+ }
+
+ }
+
+
+
+ @Test
+ public void testExecuteForResult() {
+
+ ResourceService resourceService = Mockito.mock(ResourceService.class);
+
+ List<? extends Cluster> result = new ArrayList<Cluster>();
+ Cluster cluster = Mockito.mock(Cluster.class);
+// result.add(cluster);
+
+ /*try {
+ Mockito.when(resourceService.discoverCluster(addClusterCmd)).thenReturn(Arrays.asList(result));
+ } catch (ResourceInUseException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IllegalArgumentException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (DiscoveryException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }*/
+
+ addClusterCmd._resourceService = resourceService;
+
+ try {
+ addClusterCmd.execute();
+ } catch (ServerApiException exception) {
+ Assert.assertEquals("Failed to add cluster", exception.getDescription());
+ }
+
+ }
+
+}
+
+
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b7c74ee7/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 4a02aa9..0ce02ef 100644
--- a/pom.xml
+++ b/pom.xml
@@ -178,6 +178,12 @@
<version>${cs.junit.version}</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ <version>1.9.5</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>