/**
* Copyright (C) 2010 eXo Platform SAS.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.xcmis.wssoap;
import org.apache.cxf.endpoint.Server;
import org.xcmis.core.CmisObjectType;
import org.xcmis.messaging.CmisExtensionType;
import org.xcmis.soap.PolicyServicePort;
import org.xcmis.wssoap.impl.PolicyServicePortImpl;
import org.xcmis.wssoap.impl.TypeConverter;
import java.util.ArrayList;
import java.util.List;
public class PolicyServiceTest extends BaseTest
{
private PolicyServicePort port;
/** Service name. */
private final static String SERVICE_NAME = "PolicyService";
/** Address. */
private final static String SERVICE_ADDRESS = "http://localhost:8081/" + SERVICE_NAME;
/** Server. */
private Server server;
public void setUp() throws Exception
{
super.setUp();
server = complexDeployService(SERVICE_ADDRESS, new PolicyServicePortImpl(), interceptors, null, true);
port = getPolicyService(SERVICE_ADDRESS);
assertNotNull(server);
assertNotNull(port);
}
public void testApplyPolicy() throws Exception
{
String docId = createDocument(testFolderId, "doc1");
String policyId = createPolicy(testFolderId, "policy1", "Test policy text");
List<CmisObjectType> policies = TypeConverter.getCmisObjectTypeList(conn.getAppliedPolicies(docId, false, null));
assertEquals(0, policies.size());
port.applyPolicy(repositoryId, policyId, docId, new CmisExtensionType());
policies = TypeConverter.getCmisObjectTypeList(conn.getAppliedPolicies(docId, false, null));
assertEquals(1, policies.size());
assertEquals(policyId, getObjectId(policies.get(0)));
conn.removePolicy(policyId, docId);
conn.deleteObject(policyId, true);
}
public void testRemovePolicy() throws Exception
{
String docId = createDocument(testFolderId, "doc1");
String policyId = createPolicy(testFolderId, "policy1", "Test policy text");
conn.applyPolicy(policyId, docId);
List<CmisObjectType> policies = TypeConverter.getCmisObjectTypeList(conn.getAppliedPolicies(docId, false, null));
assertEquals(1, policies.size());
port.removePolicy(repositoryId, policyId, docId, new CmisExtensionType());
policies = TypeConverter.getCmisObjectTypeList(conn.getAppliedPolicies(docId, false, null));
assertEquals(0, policies.size());
conn.deleteObject(policyId, true);
}
public void testAppliedPolicies() throws Exception
{
String docId = createDocument(testFolderId, "doc1");
String policy1Id = createPolicy(testFolderId, "policy1", "Test policy1 text");
String policy2Id = createPolicy(testFolderId, "policy2", "Test policy2 text");
String policy3Id = createPolicy(testFolderId, "policy3", "Test policy3 text");
conn.applyPolicy(policy1Id, docId);
conn.applyPolicy(policy2Id, docId);
conn.applyPolicy(policy3Id, docId);
List<CmisObjectType> policies = port.getAppliedPolicies(repositoryId, docId, null, new CmisExtensionType());
assertEquals(3, policies.size());
List<String> ids = new ArrayList<String>();
ids.add(getObjectId(policies.get(0)));
ids.add(getObjectId(policies.get(1)));
ids.add(getObjectId(policies.get(2)));
assertTrue(ids.contains(policy1Id));
assertTrue(ids.contains(policy2Id));
assertTrue(ids.contains(policy3Id));
conn.removePolicy(policy1Id, docId);
conn.removePolicy(policy2Id, docId);
conn.removePolicy(policy3Id, docId);
conn.deleteObject(policy1Id, true);
conn.deleteObject(policy2Id, true);
conn.deleteObject(policy3Id, true);
}
private PolicyServicePort getPolicyService(String address)
{
org.apache.cxf.jaxws.JaxWsProxyFactoryBean client = new org.apache.cxf.jaxws.JaxWsProxyFactoryBean();
client.setServiceClass(PolicyServicePort.class);
client.setAddress(address);
Object obj = client.create();
return (PolicyServicePort)obj;
}
protected void tearDown() throws Exception
{
server.stop();
super.tearDown();
}
}