cloudstack-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From prachida...@apache.org
Subject git commit: updated refs/heads/rbac to 08122c9
Date Sat, 28 Dec 2013 00:09:42 GMT
Updated Branches:
  refs/heads/rbac 01e6f47d4 -> 08122c9ad


- Added basic unit test for IAMService

- Removed Event geenration annotations from IAM server


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/08122c9a
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/08122c9a
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/08122c9a

Branch: refs/heads/rbac
Commit: 08122c9adb57269987dd26fec172760b36c995a7
Parents: 01e6f47d
Author: Prachi Damle <prachi@cloud.com>
Authored: Fri Dec 27 16:05:22 2013 -0800
Committer: Prachi Damle <prachi@cloud.com>
Committed: Fri Dec 27 16:06:06 2013 -0800

----------------------------------------------------------------------
 .../cloudstack/iam/server/IAMServiceImpl.java   |  15 +-
 .../cloudstack/iam/IAMServiceUnitTest.java      | 210 +++++++++++++++++++
 2 files changed, 211 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/08122c9a/services/iam/server/src/org/apache/cloudstack/iam/server/IAMServiceImpl.java
----------------------------------------------------------------------
diff --git a/services/iam/server/src/org/apache/cloudstack/iam/server/IAMServiceImpl.java
b/services/iam/server/src/org/apache/cloudstack/iam/server/IAMServiceImpl.java
index fa7c922..b04e100 100644
--- a/services/iam/server/src/org/apache/cloudstack/iam/server/IAMServiceImpl.java
+++ b/services/iam/server/src/org/apache/cloudstack/iam/server/IAMServiceImpl.java
@@ -80,9 +80,8 @@ public class IAMServiceImpl extends ManagerBase implements IAMService, Manager
{
 
     @DB
     @Override
-    @ActionEvent(eventType = EventTypes.EVENT_ACL_GROUP_CREATE, eventDescription = "Creating
Acl Group", create = true)
     public AclGroup createAclGroup(String aclGroupName, String description, String path)
{
-        // check if the role is already existing
+        // check if the group is already existing
         AclGroup grp = _aclGroupDao.findByName(path, aclGroupName);
         if (grp != null) {
             throw new InvalidParameterValueException(
@@ -97,7 +96,6 @@ public class IAMServiceImpl extends ManagerBase implements IAMService, Manager
{
 
     @DB
     @Override
-    @ActionEvent(eventType = EventTypes.EVENT_ACL_GROUP_DELETE, eventDescription = "Deleting
Acl Group")
     public boolean deleteAclGroup(final Long aclGroupId) {
         // get the Acl Group entity
         final AclGroup grp = _aclGroupDao.findById(aclGroupId);
@@ -154,9 +152,7 @@ public class IAMServiceImpl extends ManagerBase implements IAMService,
Manager {
 
     @DB
     @Override
-    @ActionEvent(eventType = EventTypes.EVENT_ACL_GROUP_UPDATE, eventDescription = "Adding
accounts to acl group")
     public AclGroup addAccountsToGroup(final List<Long> acctIds, final Long groupId)
{
-        final Account caller = CallContext.current().getCallingAccount();
         // get the Acl Group entity
         AclGroup group = _aclGroupDao.findById(groupId);
         if (group == null) {
@@ -184,9 +180,7 @@ public class IAMServiceImpl extends ManagerBase implements IAMService,
Manager {
 
     @DB
     @Override
-    @ActionEvent(eventType = EventTypes.EVENT_ACL_GROUP_UPDATE, eventDescription = "Removing
accounts from acl group")
     public AclGroup removeAccountsFromGroup(final List<Long> acctIds, final Long groupId)
{
-        final Account caller = CallContext.current().getCallingAccount();
         // get the Acl Group entity
         AclGroup group = _aclGroupDao.findById(groupId);
         if (group == null) {
@@ -212,7 +206,6 @@ public class IAMServiceImpl extends ManagerBase implements IAMService,
Manager {
 
     @DB
     @Override
-    @ActionEvent(eventType = EventTypes.EVENT_ACL_POLICY_CREATE, eventDescription = "Creating
Acl Policy", create = true)
     public AclPolicy createAclPolicy(final String aclPolicyName, final String description,
final Long parentPolicyId) {
 
         // check if the policy is already existing
@@ -249,9 +242,7 @@ public class IAMServiceImpl extends ManagerBase implements IAMService,
Manager {
 
     @DB
     @Override
-    @ActionEvent(eventType = EventTypes.EVENT_ACL_POLICY_DELETE, eventDescription = "Deleting
Acl Policy")
     public boolean deleteAclPolicy(final long aclPolicyId) {
-        Account caller = CallContext.current().getCallingAccount();
         // get the Acl Policy entity
         final AclPolicy policy = _aclPolicyDao.findById(aclPolicyId);
         if (policy == null) {
@@ -315,7 +306,6 @@ public class IAMServiceImpl extends ManagerBase implements IAMService,
Manager {
 
     @DB
     @Override
-    @ActionEvent(eventType = EventTypes.EVENT_ACL_GROUP_UPDATE, eventDescription = "Attaching
policy to acl group")
     public AclGroup attachAclPoliciesToGroup(final List<Long> policyIds, final Long
groupId) {
         // get the Acl Group entity
         AclGroup group = _aclGroupDao.findById(groupId);
@@ -350,7 +340,6 @@ public class IAMServiceImpl extends ManagerBase implements IAMService,
Manager {
 
     @DB
     @Override
-    @ActionEvent(eventType = EventTypes.EVENT_ACL_GROUP_UPDATE, eventDescription = "Removing
policies from acl group")
     public AclGroup removeAclPoliciesFromGroup(final List<Long> policyIds, final Long
groupId) {
         final Account caller = CallContext.current().getCallingAccount();
         // get the Acl Group entity
@@ -449,7 +438,6 @@ public class IAMServiceImpl extends ManagerBase implements IAMService,
Manager {
 
     @DB
     @Override
-    @ActionEvent(eventType = EventTypes.EVENT_ACL_POLICY_GRANT, eventDescription = "Granting
acl permission to Acl Policy")
     public AclPolicy addAclPermissionToAclPolicy(long aclPolicyId, String entityType, String
scope, Long scopeId,
             String action, String accessType, Permission perm) {
         Account caller = CallContext.current().getCallingAccount();
@@ -473,7 +461,6 @@ public class IAMServiceImpl extends ManagerBase implements IAMService,
Manager {
 
     @DB
     @Override
-    @ActionEvent(eventType = EventTypes.EVENT_ACL_POLICY_REVOKE, eventDescription = "Revoking
acl permission from Acl Policy")
     public AclPolicy removeAclPermissionFromAclPolicy(long aclPolicyId, String entityType,
String scope, Long scopeId,
             String action) {
         // get the Acl Policy entity

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/08122c9a/services/iam/server/test/org/apache/cloudstack/iam/IAMServiceUnitTest.java
----------------------------------------------------------------------
diff --git a/services/iam/server/test/org/apache/cloudstack/iam/IAMServiceUnitTest.java b/services/iam/server/test/org/apache/cloudstack/iam/IAMServiceUnitTest.java
new file mode 100644
index 0000000..121f60d
--- /dev/null
+++ b/services/iam/server/test/org/apache/cloudstack/iam/IAMServiceUnitTest.java
@@ -0,0 +1,210 @@
+// 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 org.apache.cloudstack.iam;
+
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.Matchers.anyLong;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.when;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.inject.Inject;
+import javax.naming.ConfigurationException;
+
+import org.junit.After;
+import org.apache.cloudstack.test.utils.SpringUtils;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mockito;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.ComponentScan.Filter;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.FilterType;
+import org.springframework.core.type.classreading.MetadataReader;
+import org.springframework.core.type.classreading.MetadataReaderFactory;
+import org.springframework.core.type.filter.TypeFilter;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.support.AnnotationConfigContextLoader;
+
+import com.cloud.exception.InvalidParameterValueException;
+
+import org.apache.cloudstack.iam.api.AclGroup;
+import org.apache.cloudstack.iam.api.AclPolicy;
+import org.apache.cloudstack.iam.api.IAMService;
+import org.apache.cloudstack.iam.server.AclGroupAccountMapVO;
+import org.apache.cloudstack.iam.server.AclGroupVO;
+import org.apache.cloudstack.iam.server.AclPolicyVO;
+import org.apache.cloudstack.iam.server.IAMServiceImpl;
+import org.apache.cloudstack.iam.server.dao.AclGroupAccountMapDao;
+import org.apache.cloudstack.iam.server.dao.AclGroupDao;
+import org.apache.cloudstack.iam.server.dao.AclGroupPolicyMapDao;
+import org.apache.cloudstack.iam.server.dao.AclPolicyDao;
+import org.apache.cloudstack.iam.server.dao.AclPolicyPermissionDao;
+import com.cloud.utils.component.ComponentContext;
+import com.cloud.utils.db.EntityManager;
+import com.cloud.utils.db.GenericSearchBuilder;
+import com.cloud.utils.db.SearchCriteria;
+import com.cloud.utils.db.SearchCriteria.Op;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(loader = AnnotationConfigContextLoader.class)
+public class IAMServiceUnitTest {
+
+    @Inject
+    IAMService _iamService;
+
+    @Inject
+    AclPolicyDao _aclPolicyDao;
+
+    @Inject
+    AclGroupDao _aclGroupDao;
+
+    @Inject
+    EntityManager _entityMgr;
+
+    @Inject
+    AclGroupPolicyMapDao _aclGroupPolicyMapDao;
+
+    @Inject
+    AclGroupAccountMapDao _aclGroupAccountMapDao;
+
+    @Inject
+    AclPolicyPermissionDao _policyPermissionDao;
+
+
+    @BeforeClass
+    public static void setUpClass() throws ConfigurationException {
+    }
+
+    @Before
+    public void setUp() {
+        ComponentContext.initComponentsLifeCycle();
+        AclGroupVO group = new AclGroupVO("group1", "my first group");
+        Mockito.when(_aclGroupDao.persist(Mockito.any(AclGroupVO.class))).thenReturn(group);
+        List<AclGroupVO> groups = new ArrayList<AclGroupVO>();
+        groups.add(group);
+        when(_aclGroupDao.search(Mockito.any(SearchCriteria.class), Mockito.any(com.cloud.utils.db.Filter.class)))
+                .thenReturn(groups);
+
+        AclPolicyVO policy = new AclPolicyVO("policy1", "my first policy");
+        Mockito.when(_aclPolicyDao.persist(Mockito.any(AclPolicyVO.class))).thenReturn(policy);
+
+    }
+
+    @After
+    public void tearDown() {
+    }
+
+    @Test(expected = InvalidParameterValueException.class)
+    public void createAclGroupTest() {
+        AclGroup group = _iamService.createAclGroup("group1", "my first group", "/root/mydomain");
+        assertNotNull("Acl group 'group1' failed to create ", group);
+
+        AclGroupVO group2 = new AclGroupVO("group1", "my second group");
+        when(_aclGroupDao.findByName(eq("/root/mydomain"), eq("group1"))).thenReturn(group2);
+
+        AclGroup group3 = _iamService.createAclGroup("group1", "my first group", "/root/mydomain");
+    }
+
+    @Test(expected = InvalidParameterValueException.class)
+    public void deleteAclGroupInvalidIdTest(){
+        when(_aclGroupDao.findById(20L)).thenReturn(null);
+        _iamService.deleteAclGroup(20L);
+    }
+
+    @Test
+    public void accountGroupMaptest() {
+        // create group
+        AclGroupVO group = new AclGroupVO("group1", "my first group");
+
+        // add account to group
+        List<Long> accountIds = new ArrayList<Long>();
+        accountIds.add(100L);
+        when(_aclGroupDao.findById(20L)).thenReturn(group);
+        _iamService.addAccountsToGroup(accountIds, 20L);
+
+        _iamService.removeAccountsFromGroup(accountIds, 20L);
+    }
+
+    @Test(expected = InvalidParameterValueException.class)
+    public void createAclPolicyTest() {
+        AclPolicy policy = _iamService.createAclPolicy("policy1", "my first policy", null);
+        assertNotNull("Acl policy 'policy1' failed to create ", policy);
+
+        AclPolicyVO rvo = new AclPolicyVO("policy2", "second policy");
+        when(_aclPolicyDao.findByName(eq("policy2"))).thenReturn(rvo);
+
+        _iamService.createAclPolicy("policy2", "second policy", null);
+    }
+
+    @Test(expected = InvalidParameterValueException.class)
+    public void deleteAclPolicyInvalidIdTest() {
+        when(_aclPolicyDao.findById(34L)).thenReturn(null);
+        _iamService.deleteAclPolicy(34L);
+    }
+
+    @Configuration
+    @ComponentScan(basePackageClasses = { IAMServiceImpl.class }, includeFilters = { @Filter(value
= TestConfiguration.Library.class, type = FilterType.CUSTOM) }, useDefaultFilters = false)
+    public static class TestConfiguration extends SpringUtils.CloudStackTestConfiguration
{
+
+        @Bean
+        public AclPolicyDao aclPolicyDao() {
+            return Mockito.mock(AclPolicyDao.class);
+        }
+
+        @Bean
+        public AclGroupDao aclGroupDao() {
+            return Mockito.mock(AclGroupDao.class);
+        }
+
+        @Bean
+        public EntityManager entityManager() {
+            return Mockito.mock(EntityManager.class);
+        }
+
+        @Bean
+        public AclGroupPolicyMapDao aclGroupPolicyMapDao() {
+            return Mockito.mock(AclGroupPolicyMapDao.class);
+        }
+
+        @Bean
+        public AclGroupAccountMapDao aclGroupAccountMapDao() {
+            return Mockito.mock(AclGroupAccountMapDao.class);
+        }
+
+        @Bean
+        public AclPolicyPermissionDao aclPolicyPermissionDao() {
+            return Mockito.mock(AclPolicyPermissionDao.class);
+        }
+
+        public static class Library implements TypeFilter {
+
+            @Override
+            public boolean match(MetadataReader mdr, MetadataReaderFactory arg1) throws IOException
{
+                ComponentScan cs = TestConfiguration.class.getAnnotation(ComponentScan.class);
+                return SpringUtils.includedInBasePackageClasses(mdr.getClassMetadata().getClassName(),
cs);
+            }
+        }
+    }
+}


Mime
View raw message