/* * Copyright (c) 2008, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * * Licensed 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.wso2.carbon.governance.api.test; import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.wso2.carbon.governance.api.exception.GovernanceException; import org.wso2.carbon.governance.api.policies.PolicyFilter; import org.wso2.carbon.governance.api.policies.PolicyManager; import org.wso2.carbon.governance.api.policies.dataobjects.Policy; import org.wso2.carbon.governance.api.test.utils.BaseTestCase; import org.wso2.carbon.registry.extensions.handlers.utils.WSDLProcessor; import java.io.IOException; import java.io.InputStream; import java.net.URL; public class PolicyTest extends BaseTestCase { private static Log log = LogFactory.getLog(WSDLProcessor.class); public void testAddPolicy() throws Exception { PolicyManager policyManager = new PolicyManager(registry); Policy policy = policyManager.newPolicy("http://svn.wso2.org/repos/wso2/carbon/platform/trunk/components/governance/org.wso2.carbon.governance.api/src/test/resources/test-resources/policy/policy.xml"); policy.addAttribute("creator", "it is me"); policy.addAttribute("version", "0.01"); policyManager.addPolicy(policy); Policy newPolicy = policyManager.getPolicy(policy.getId()); assertEquals(policy.getPolicyContent(), newPolicy.getPolicyContent()); assertEquals("it is me", newPolicy.getAttribute("creator")); assertEquals("0.01", newPolicy.getAttribute("version")); // change the target namespace and check String oldPolicyPath = newPolicy.getPath(); assertEquals(oldPolicyPath, "/policies/0.01/policy.xml"); assertTrue(registry.resourceExists("/policies/0.01/policy.xml")); // newPolicy.setName("my-policy.xml"); // policyManager.updatePolicy(newPolicy); // // assertEquals("/policies/my-policy.xml", newPolicy.getPath()); // assertFalse(registry.resourceExists("/policies/policy.xml")); // doing an update without changing anything. policyManager.updatePolicy(newPolicy); log.info(newPolicy.getPath()); assertEquals("/policies/0.01/policy.xml", newPolicy.getPath()); assertEquals("0.01", newPolicy.getAttribute("version")); newPolicy = policyManager.getPolicy(policy.getId()); assertEquals("it is me", newPolicy.getAttribute("creator")); assertEquals("0.01", newPolicy.getAttribute("version")); Policy[] policies = policyManager.findPolicies(new PolicyFilter() { public boolean matches(Policy policy) throws GovernanceException { if (policy.getAttribute("version").equals("0.01") && policy.getQName().getLocalPart().equals("policy.xml")) { return true; } return false; } }); assertEquals(newPolicy.getId(), policies[0].getId()); // deleting the policy policyManager.removePolicy(newPolicy.getId()); Policy deletedPolicy = policyManager.getPolicy(newPolicy.getId()); assertNull(deletedPolicy); } public void testAddPolicyFromContent() throws Exception { PolicyManager policyManager = new PolicyManager(registry); byte[] bytes = null; try { InputStream inputStream = new URL("http://svn.wso2.org/repos/wso2/carbon/platform/trunk/components/governance/org.wso2.carbon.governance.api/src/test/resources/test-resources/policy/SigEncr.xml").openStream(); try { bytes = IOUtils.toByteArray(inputStream); } finally { inputStream.close(); } } catch (IOException e) { fail("Unable to read WSDL content"); } Policy policy = policyManager.newPolicy(bytes, "newPolicy.xml"); policy.addAttribute("creator", "it is me"); policy.addAttribute("version", "0.01"); policyManager.addPolicy(policy); Policy newPolicy = policyManager.getPolicy(policy.getId()); assertEquals(policy.getPolicyContent(), newPolicy.getPolicyContent()); assertEquals("it is me", newPolicy.getAttribute("creator")); assertEquals("0.01", newPolicy.getAttribute("version")); // change the target namespace and check String oldPolicyPath = newPolicy.getPath(); assertEquals(oldPolicyPath, "/policies/0.01/newPolicy.xml"); assertTrue(registry.resourceExists("/policies/0.01/newPolicy.xml")); policyManager.removePolicy(policy.getId()); } public void testAddPolicyFromContentNoName() throws Exception { PolicyManager policyManager = new PolicyManager(registry); byte[] bytes = null; try { InputStream inputStream = new URL("http://svn.wso2.org/repos/wso2/carbon/platform/trunk/components/governance/org.wso2.carbon.governance.api/src/test/resources/test-resources/policy/EncrOnlyAnonymous.xml").openStream(); try { bytes = IOUtils.toByteArray(inputStream); } finally { inputStream.close(); } } catch (IOException e) { fail("Unable to read WSDL content"); } Policy policy = policyManager.newPolicy(bytes); policy.addAttribute("creator", "it is me"); policy.addAttribute("version", "0.01"); policyManager.addPolicy(policy); Policy newPolicy = policyManager.getPolicy(policy.getId()); assertEquals(policy.getPolicyContent(), newPolicy.getPolicyContent()); assertEquals("it is me", newPolicy.getAttribute("creator")); assertEquals("0.01", newPolicy.getAttribute("version")); // change the target namespace and check String oldPolicyPath = newPolicy.getPath(); assertEquals(oldPolicyPath, "/policies/0.01/"+ policy.getId() + ".xml"); assertTrue(registry.resourceExists("/policies/0.01/"+ policy.getId() + ".xml")); } }