/* * Copyright (C) 2005-2010 Alfresco Software Limited. * * This file is part of Alfresco * * Alfresco 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 3 of the License, or * (at your option) any later version. * * Alfresco 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 Alfresco. If not, see . */ package org.alfresco.repo.rendition.executer; import java.io.Serializable; import java.util.HashMap; import java.util.Map; import org.alfresco.model.ContentModel; import org.alfresco.repo.model.Repository; import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.service.cmr.rendition.RenditionDefinition; import org.alfresco.service.cmr.rendition.RenditionService; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.ContentReader; import org.alfresco.service.cmr.repository.ContentService; import org.alfresco.service.cmr.repository.ContentWriter; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.namespace.QName; import org.alfresco.util.BaseAlfrescoSpringTest; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * Unit tests for the HTML Rendering Engine * * @author Nick Burch */ public class HTMLRenderingEngineTest extends BaseAlfrescoSpringTest { private final static Log log = LogFactory.getLog(HTMLRenderingEngineTest.class); private NodeRef companyHome; private RenditionService renditionService; private Repository repositoryHelper; private NodeRef sourceDoc; private NodeRef targetFolder; private String targetFolderPath; /* * (non-Javadoc) * * @see org.alfresco.util.BaseAlfrescoSpringTest#onSetUpInTransaction() */ @SuppressWarnings("deprecation") @Override protected void onSetUpInTransaction() throws Exception { super.onSetUpInTransaction(); this.nodeService = (NodeService) this.applicationContext.getBean("NodeService"); this.contentService = (ContentService) this.applicationContext.getBean("ContentService"); this.renditionService = (RenditionService) this.applicationContext.getBean("RenditionService"); this.repositoryHelper = (Repository) this.applicationContext.getBean("repositoryHelper"); this.companyHome = repositoryHelper.getCompanyHome(); createTargetFolder(); } @Override protected void onTearDownInTransaction() throws Exception { super.onTearDownInTransaction(); tidyUpSourceDoc(); } private void createTargetFolder() { // Set the current security context as admin AuthenticationUtil.setFullyAuthenticatedUser(AuthenticationUtil.getAdminUserName()); Map properties = new HashMap(); properties.put(ContentModel.PROP_NAME, "TestFolder"); targetFolder = nodeService.createNode( companyHome, ContentModel.ASSOC_CONTAINS, QName.createQName("TestFolder"), ContentModel.TYPE_FOLDER, properties ).getChildRef(); targetFolderPath = "/" + (String) nodeService.getProperty(companyHome, ContentModel.PROP_NAME) + "/" + (String) nodeService.getProperty(targetFolder, ContentModel.PROP_NAME) ; } private void tidyUpSourceDoc() { // Set the current security context as admin AuthenticationUtil.setFullyAuthenticatedUser(AuthenticationUtil.getAdminUserName()); // Clean up the source if(sourceDoc != null) { nodeService.deleteNode(sourceDoc); } // Clean up the target folder nodeService.deleteNode(targetFolder); targetFolder = null; // All done sourceDoc = null; createTargetFolder(); } private NodeRef createForDoc(String docname) { // Create the node Map properties = new HashMap(); properties.put(ContentModel.PROP_NAME, docname); NodeRef node = nodeService.createNode( companyHome, ContentModel.ASSOC_CONTAINS, QName.createQName(docname), ContentModel.TYPE_CONTENT, properties ).getChildRef(); // Put the sample doc into it ContentWriter writer = contentService.getWriter( node, ContentModel.PROP_CONTENT, true ); writer.putContent("TESTING"); // All done return node; } public void testBasics() throws Exception { RenditionDefinition def = renditionService.createRenditionDefinition( QName.createQName("Test"), HTMLRenderingEngine.NAME); def.setParameterValue( RenditionService.PARAM_DESTINATION_PATH_TEMPLATE, targetFolderPath + "/${name}.html" ); sourceDoc = createForDoc("quick.doc"); ChildAssociationRef rendition = renditionService.render(sourceDoc, def); assertNotNull(rendition); // Check it was created NodeRef htmlNode = rendition.getChildRef(); assertEquals(true, nodeService.exists(htmlNode)); // Check it got the right name assertEquals( "quick.html", nodeService.getProperty(htmlNode, ContentModel.PROP_NAME) ); // Check it got the right contents ContentReader reader = contentService.getReader( htmlNode, ContentModel.PROP_CONTENT ); String html = reader.getContentString(); assertEquals("