diff --git a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/PolicyManagerServiceImpl.java b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/PolicyManagerServiceImpl.java index 7b6eb4bb24..11e69580e0 100644 --- a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/PolicyManagerServiceImpl.java +++ b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/PolicyManagerServiceImpl.java @@ -149,8 +149,8 @@ public class PolicyManagerServiceImpl implements PolicyManagerService { deviceIdentifier.getId() + " - " + deviceIdentifier.getType()); } } catch (PolicyEvaluationException e) { - String msg = "Error occurred while getting the effective features from the PEP service " + - deviceIdentifier.getId() + " - " + deviceIdentifier.getType(); + String msg = "Error occurred while getting the effective features from the PEP service " + + deviceIdentifier.getId() + " - " + deviceIdentifier.getType(); log.error(msg, e); throw new FeatureManagementException(msg, e); } diff --git a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/test/java/org/wso2/carbon/policy/mgt/core/PolicyManagerServiceImplTest.java b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/test/java/org/wso2/carbon/policy/mgt/core/PolicyManagerServiceImplTest.java index 75e5bb69b8..e21fa59f4b 100644 --- a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/test/java/org/wso2/carbon/policy/mgt/core/PolicyManagerServiceImplTest.java +++ b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/test/java/org/wso2/carbon/policy/mgt/core/PolicyManagerServiceImplTest.java @@ -19,6 +19,7 @@ package org.wso2.carbon.policy.mgt.core; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.mockito.Spy; import org.testng.Assert; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -39,6 +40,7 @@ import org.wso2.carbon.device.mgt.common.policy.mgt.Policy; import org.wso2.carbon.device.mgt.common.policy.mgt.Profile; import org.wso2.carbon.device.mgt.common.policy.mgt.ProfileFeature; import org.wso2.carbon.device.mgt.common.policy.mgt.monitor.ComplianceFeature; +import org.wso2.carbon.device.mgt.common.policy.mgt.monitor.NonComplianceData; import org.wso2.carbon.device.mgt.common.policy.mgt.monitor.PolicyComplianceException; import org.wso2.carbon.device.mgt.core.authorization.DeviceAccessAuthorizationServiceImpl; import org.wso2.carbon.device.mgt.core.config.DeviceConfigurationManager; @@ -51,6 +53,8 @@ import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderServiceImpl; import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderService; import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderServiceImpl; +import org.wso2.carbon.policy.mgt.common.FeatureManagementException; +import org.wso2.carbon.policy.mgt.common.PolicyEvaluationException; import org.wso2.carbon.policy.mgt.common.PolicyEvaluationPoint; import org.wso2.carbon.policy.mgt.common.PolicyManagementException; import org.wso2.carbon.policy.mgt.core.enforcement.DelegationTask; @@ -58,6 +62,7 @@ import org.wso2.carbon.policy.mgt.core.internal.PolicyManagementDataHolder; import org.wso2.carbon.policy.mgt.core.mock.TypeADeviceManagementService; import org.wso2.carbon.policy.mgt.core.services.SimplePolicyEvaluationTest; import org.wso2.carbon.policy.mgt.core.task.MonitoringTask; +import org.wso2.carbon.policy.mgt.core.task.TaskScheduleService; import org.wso2.carbon.policy.mgt.core.util.PolicyManagementConstants; import org.wso2.carbon.registry.core.config.RegistryContext; import org.wso2.carbon.registry.core.exceptions.RegistryException; @@ -80,12 +85,16 @@ public class PolicyManagerServiceImplTest extends BasePolicyManagementDAOTest { private static final String GROUP1 = "group1"; private static final String POLICY1 = "policy1"; private static final String POLICY1_FEATURE1_CODE = "DISALLOW_ADJUST_VOLUME"; + private static final String POLICY1_CAM_FEATURE1_CODE = "DISALLOW_OPEN_CAM"; private static final String ADMIN_USER = "admin"; + public static final String DEVICE_2 = "device2"; + public static final String DEVICE_TYPE_B = "deviceTypeB"; private DeviceManagementProviderService deviceMgtService; private GroupManagementProviderService groupMgtService; private OperationManager operationManager; private PolicyManagerService policyManagerService; + private Profile profile; private Policy policy1; @@ -303,8 +312,11 @@ public class PolicyManagerServiceImplTest extends BasePolicyManagementDAOTest { complianceFeatures.add(complianceFeature); policyManagerService.checkCompliance(new DeviceIdentifier(DEVICE1, DEVICE_TYPE_A), complianceFeatures); boolean deviceCompliance = policyManagerService.isCompliant(new DeviceIdentifier(DEVICE1, DEVICE_TYPE_A)); - Assert.assertFalse(deviceCompliance, "Policy was compliant even though the response was not compliant"); + List complianceFeatureList = policyManagerService. + checkPolicyCompliance(new DeviceIdentifier(DEVICE1, DEVICE_TYPE_A), complianceFeatures); + Assert.assertNotNull(complianceFeature); + Assert.assertEquals(POLICY1_FEATURE1_CODE,complianceFeatureList.get(0).getFeatureCode()); } @Test(dependsOnMethods = "inactivatePolicy") @@ -326,9 +338,86 @@ public class PolicyManagerServiceImplTest extends BasePolicyManagementDAOTest { } @Test(dependsOnMethods = "updatePolicy") - public void deletePolicy() throws PolicyManagementException { + public void deletePolicyById() throws PolicyManagementException { policyManagerService.deletePolicy(policy1.getId()); Policy tempPolicy = policyManagerService.getPAP().getPolicy(policy1.getId()); Assert.assertNull(tempPolicy, "Policy was not deleted successfully"); } -} + + @Test(dependsOnMethods = "updatePolicy") + public void deletePolicyByPolicy() throws PolicyManagementException { + policyManagerService.deletePolicy(policy1); + Policy tempPolicy = policyManagerService.getPAP().getPolicy(policy1.getId()); + Assert.assertNull(tempPolicy, "Policy was not deleted successfully"); + } + + @Test(dependsOnMethods = "applyPolicy") + public void getEffectiveFeatures( ) throws Exception { + List effectiveFeatures = policyManagerService. + getEffectiveFeatures(new DeviceIdentifier(DEVICE1, DEVICE_TYPE_A)); + Assert.assertNotNull(effectiveFeatures); + Assert.assertEquals(POLICY1_FEATURE1_CODE,effectiveFeatures.get(0).getFeatureCode()); + try{ + policyManagerService.getEffectiveFeatures(new DeviceIdentifier(DEVICE_2, DEVICE_TYPE_B)); + }catch(FeatureManagementException ex){ + if(ex.getCause() instanceof PolicyEvaluationException){ + Assert.assertTrue(ex.getCause() instanceof PolicyEvaluationException); + }else { + throw ex; + } + } + } + + @Test(dependsOnMethods = "applyPolicy") + public void getDeviceCompliance() throws Exception{ + NonComplianceData deviceCompliance = policyManagerService. + getDeviceCompliance(new DeviceIdentifier(DEVICE1, DEVICE_TYPE_A)); + Assert.assertNotNull(deviceCompliance); + } + + @Test(dependsOnMethods = "applyPolicy") + public void getTaskScheduleService() throws Exception{ + TaskScheduleService taskScheduleService = policyManagerService.getTaskScheduleService(); + Assert.assertNotNull(taskScheduleService); + } + + @Test(dependsOnMethods = "applyPolicy") + public void addProfile() throws Exception{ + int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); + profile = new Profile(); + profile.setTenantId(tenantId); + profile.setCreatedDate(new Timestamp(System.currentTimeMillis())); + profile.setDeviceType(DEVICE_TYPE_A); + + List profileFeatures = new ArrayList(); + ProfileFeature profileFeature = new ProfileFeature(); + profileFeature.setContent("{'enable':'true'}"); + profileFeature.setDeviceType(DEVICE_TYPE_A); + profileFeature.setFeatureCode(POLICY1_FEATURE1_CODE); + profileFeatures.add(profileFeature); + profile.setProfileFeaturesList(profileFeatures); + profile.setProfileName("tp_profile2"); + profile.setUpdatedDate(new Timestamp(System.currentTimeMillis())); + Profile profile1 = policyManagerService.addProfile(profile); + Assert.assertNotNull(profile1); + Assert.assertEquals("tp_profile2",profile1.getProfileName()); + } + + @Test(dependsOnMethods = "addProfile") + public void updateProfile() throws Exception{ + Policy effectivePolicy = policyManagerService.getEffectivePolicy(new DeviceIdentifier(DEVICE1, DEVICE_TYPE_A)); + Profile currentProfile = effectivePolicy.getProfile(); + List profileFeatures = new ArrayList<>(); + ProfileFeature profileFeature = new ProfileFeature(); + profileFeature.setContent("{'enable':'true'}"); + profileFeature.setDeviceType(DEVICE_TYPE_A); + profileFeature.setFeatureCode(POLICY1_CAM_FEATURE1_CODE); + profileFeatures.add(profileFeature); + profile.setProfileFeaturesList(profileFeatures); + profile.setUpdatedDate(new Timestamp(System.currentTimeMillis())); + Profile updatedProfile = policyManagerService.updateProfile(this.profile); + Assert.assertNotNull(profile); + Assert.assertNotNull(currentProfile.getProfileFeaturesList().get(0).getFeatureCode(), + updatedProfile.getProfileFeaturesList().get(0).getFeatureCode()); + } +} \ No newline at end of file diff --git a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/test/java/org/wso2/carbon/policy/mgt/core/services/SimplePolicyEvaluationTest.java b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/test/java/org/wso2/carbon/policy/mgt/core/services/SimplePolicyEvaluationTest.java index 0d22f62e49..97b8ee23b1 100644 --- a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/test/java/org/wso2/carbon/policy/mgt/core/services/SimplePolicyEvaluationTest.java +++ b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/test/java/org/wso2/carbon/policy/mgt/core/services/SimplePolicyEvaluationTest.java @@ -27,6 +27,7 @@ import org.wso2.carbon.device.mgt.common.policy.mgt.ProfileFeature; import org.wso2.carbon.policy.mgt.common.*; import org.wso2.carbon.policy.mgt.core.PolicyManagerService; import org.wso2.carbon.policy.mgt.core.PolicyManagerServiceImpl; +import org.wso2.carbon.policy.mgt.core.internal.PolicyManagementDataHolder; import java.util.Collections; import java.util.List; @@ -35,16 +36,15 @@ public class SimplePolicyEvaluationTest implements PolicyEvaluationPoint { private static final Log log = LogFactory.getLog(SimplePolicyEvaluationTest.class); + public static final String DEVICE2 = "device2"; // assuming this device does not have valid policy @Override public Policy getEffectivePolicy(DeviceIdentifier deviceIdentifier) throws PolicyEvaluationException { Policy policy = new Policy(); - List policyList; PolicyAdministratorPoint policyAdministratorPoint; PolicyInformationPoint policyInformationPoint; PolicyManagerService policyManagerService = new PolicyManagerServiceImpl(); - try { if (policyManagerService != null) { @@ -76,7 +76,11 @@ SimplePolicyEvaluationTest implements PolicyEvaluationPoint { @Override public List getEffectiveFeatures(DeviceIdentifier deviceIdentifier) throws PolicyEvaluationException { - return null; + if(DEVICE2.equals(deviceIdentifier.getId())) { + throw new PolicyEvaluationException(); + }else { + return getEffectivePolicy(deviceIdentifier).getProfile().getProfileFeaturesList(); + } } @Override