Package com.dotmarketing.portlets.htmlpages.business

Source Code of com.dotmarketing.portlets.htmlpages.business.HTMLPageAPITest

package com.dotmarketing.portlets.htmlpages.business;

import static com.dotcms.repackage.org.junit.Assert.assertEquals;
import static com.dotcms.repackage.org.junit.Assert.assertNotNull;
import static com.dotcms.repackage.org.junit.Assert.assertTrue;

import java.util.ArrayList;
import java.util.List;

import com.dotcms.repackage.org.junit.Test;

import com.dotcms.TestBase;
import com.dotcms.publisher.business.PublisherAPIImpl;
import com.dotmarketing.beans.ContainerStructure;
import com.dotmarketing.beans.Host;
import com.dotmarketing.beans.MultiTree;
import com.dotmarketing.beans.Permission;
import com.dotmarketing.business.APILocator;
import com.dotmarketing.business.PermissionAPI;
import com.dotmarketing.business.Role;
import com.dotmarketing.business.RoleAPI;
import com.dotmarketing.cache.StructureCache;
import com.dotmarketing.db.HibernateUtil;
import com.dotmarketing.exception.DotHibernateException;
import com.dotmarketing.factories.MultiTreeFactory;
import com.dotmarketing.portlets.AssetUtil;
import com.dotmarketing.portlets.containers.model.Container;
import com.dotmarketing.portlets.contentlet.model.Contentlet;
import com.dotmarketing.portlets.folders.model.Folder;
import com.dotmarketing.portlets.htmlpages.model.HTMLPage;
import com.dotmarketing.portlets.structure.model.Structure;
import com.dotmarketing.portlets.templates.model.Template;
import com.dotmarketing.util.Config;
import com.dotmarketing.util.Logger;
import com.dotmarketing.util.UUIDGenerator;
import com.dotmarketing.util.UtilMethods;
import com.liferay.portal.model.User;

public class HTMLPageAPITest extends TestBase {
    @Test
    public void saveHTMLPage() throws Exception {
        User sysuser=APILocator.getUserAPI().getSystemUser();
        Host host=APILocator.getHostAPI().findDefaultHost(sysuser, false);
        String ext="."+Config.getStringProperty("VELOCITY_PAGE_EXTENSION");

        Template template=new Template();
        template.setTitle("a template "+UUIDGenerator.generateUuid());
        template.setBody("<html><body> I'm mostly empty </body></html>");
        template=APILocator.getTemplateAPI().saveTemplate(template, host, sysuser, false);

        Folder folder=APILocator.getFolderAPI().createFolders(
                "/test_junit/test_"+UUIDGenerator.generateUuid().replaceAll("-", "_"), host, sysuser, false);

        HTMLPage page=new HTMLPage();
        page.setPageUrl("testpage"+ext);
        page.setFriendlyName("testpage"+ext);
        page.setTitle("testpage"+ext);
        page=APILocator.getHTMLPageAPI().saveHTMLPage(page, template, folder, sysuser, false);
        assertTrue(page!=null);
        assertTrue(UtilMethods.isSet(page.getInode()));
        assertTrue(UtilMethods.isSet(page.getIdentifier()));

        List<HTMLPage> pages = APILocator.getHTMLPageAPI().findWorkingHTMLPages(folder);
        assertTrue(pages.size()==1);

        // now with existing inode/identifier
        String existingInode=UUIDGenerator.generateUuid();
        String existingIdentifier=UUIDGenerator.generateUuid();

        folder=APILocator.getFolderAPI().createFolders(
                "/test_junit/test_"+UUIDGenerator.generateUuid().replaceAll("-", "_"), host, sysuser, false);
        page=new HTMLPage();
        page.setPageUrl("testpage"+ext);
        page.setFriendlyName("testpage"+ext);
        page.setTitle("testpage"+ext);
        page.setInode(existingInode);
        page.setIdentifier(existingIdentifier);
        page=APILocator.getHTMLPageAPI().saveHTMLPage(page, template, folder, sysuser, false);
        assertEquals(existingInode,page.getInode());
        assertEquals(existingIdentifier,page.getIdentifier());

        pages = APILocator.getHTMLPageAPI().findWorkingHTMLPages(folder);
        assertTrue(pages.size()==1);
        page=pages.get(0);
        assertEquals(existingInode,page.getInode());
        assertEquals(existingIdentifier,page.getIdentifier());

        // now with existing inode but this time with an update
        HibernateUtil.getSession().clear();
        String newInode=UUIDGenerator.generateUuid();
        page.setInode(newInode);
        page.setTitle("other title");
        page=APILocator.getHTMLPageAPI().saveHTMLPage(page, template, folder, sysuser, false);
        assertEquals(newInode,page.getInode());
        assertEquals(existingIdentifier,page.getIdentifier());
        assertEquals("other title",page.getTitle());
    }

    @Test
    public void delete() throws Exception {
        User sysuser=APILocator.getUserAPI().getSystemUser();
        Host host=APILocator.getHostAPI().findDefaultHost(sysuser, false);
        String ext="."+Config.getStringProperty("VELOCITY_PAGE_EXTENSION");

        // a container to use inside the template
        Container container = new Container();
        container.setFriendlyName("test container");
        container.setTitle("his is the title");
        container.setMaxContentlets(5);
        container.setPreLoop("preloop code");
        container.setPostLoop("postloop code");
        Structure st=StructureCache.getStructureByVelocityVarName("FileAsset");

        List<ContainerStructure> csList = new ArrayList<ContainerStructure>();
        ContainerStructure cs = new ContainerStructure();
        cs.setStructureId(st.getInode());
        cs.setCode("this is the code");
        csList.add(cs);

        container = APILocator.getContainerAPI().save(container, csList, host, sysuser, false);

        // a template for the page
        Template template=new Template();
        template.setTitle("a template "+UUIDGenerator.generateUuid());
        template.setBody("<html><body> #parseContainer('"+container.getIdentifier()+"') </body></html>");
        template=APILocator.getTemplateAPI().saveTemplate(template, host, sysuser, false);

        // folder where the page lives
        Folder folder=APILocator.getFolderAPI().createFolders(
                "/test_junit/test_"+UUIDGenerator.generateUuid().replaceAll("-", "_"), host, sysuser, false);

        // the page
        HTMLPage page=new HTMLPage();
        page.setPageUrl("testpage"+ext);
        page.setFriendlyName("testpage"+ext);
        page.setTitle("testpage"+ext);
        page=APILocator.getHTMLPageAPI().saveHTMLPage(page, template, folder, sysuser, false);

        // associate some contentlets with the page/container
        List<Contentlet> conns=APILocator.getContentletAPI().search(
                "+structureName:"+st.getVelocityVarName(), 5, 0, "moddate", sysuser, false);
        assertEquals(5, conns.size());

        for(Contentlet cc : conns) {
            MultiTreeFactory.saveMultiTree(
              new MultiTree(page.getIdentifier(),container.getIdentifier(),cc.getIdentifier()));
        }

        final String pageInode=page.getInode(),pageIdent=page.getIdentifier(),
                     templateInode=template.getInode(), templateIdent=template.getIdentifier(),
                     containerInode=container.getInode(), containerIdent=container.getIdentifier();

        // let's delete

        APILocator.getHTMLPageAPI().delete(page, sysuser, false);
        APILocator.getTemplateAPI().delete(template, sysuser, false);
        APILocator.getContainerAPI().delete(container, sysuser, false);

        // check everything is clean up

        AssetUtil.assertDeleted(pageInode, pageIdent, "htmlpage");
        AssetUtil.assertDeleted(templateInode, templateIdent, "template");
        AssetUtil.assertDeleted(containerInode, containerIdent, "containers");
    }

    @Test
    public void move() throws Exception {
      User sysuser=null;
      HTMLPage page=null;
      Template template=null;
      Container container=null;
      Role role=null;
      Folder folderWithPerms=null;
      Folder folder=null;

      try {
        sysuser=APILocator.getUserAPI().getSystemUser();
        Host host=APILocator.getHostAPI().findDefaultHost(sysuser, false);
        String ext="."+Config.getStringProperty("VELOCITY_PAGE_EXTENSION");

        // a container to use inside the template
        container = new Container();
        container.setFriendlyName("test container");
        container.setTitle("his is the title");
        container.setMaxContentlets(5);
        container.setPreLoop("preloop code");
        container.setPostLoop("postloop code");
        Structure st=StructureCache.getStructureByVelocityVarName("FileAsset");
        // commented by issue-2093

        List<ContainerStructure> csList = new ArrayList<ContainerStructure>();
            ContainerStructure cs = new ContainerStructure();
            cs.setStructureId(st.getInode());
            cs.setCode("this is the code");
            csList.add(cs);

        container = APILocator.getContainerAPI().save(container, csList, host, sysuser, false);

        // a template for the page
        template=new Template();
        template.setTitle("a template "+UUIDGenerator.generateUuid());
        template.setBody("<html><body> #parseContainer('"+container.getIdentifier()+"') </body></html>");
        template=APILocator.getTemplateAPI().saveTemplate(template, host, sysuser, false);

        // folder where the page gets moved from
        folder=APILocator.getFolderAPI().createFolders(
            "/test_junit/test_"+UUIDGenerator.generateUuid().replaceAll("-", "_"), host, sysuser, false);

        // the page
        page=new HTMLPage();
        page.setPageUrl("testpage"+ext);
        page.setFriendlyName("testpage"+ext);
        page.setTitle("testpage"+ext);
        page=APILocator.getHTMLPageAPI().saveHTMLPage(page, template, folder, sysuser, false);

        // folder with some perms, where the page gets moved to
        folderWithPerms=APILocator.getFolderAPI().createFolders(
            "/test_junit/test_"+UUIDGenerator.generateUuid().replaceAll("-", "_"), host, sysuser, false);

        // create new roles
        RoleAPI roleAPI = APILocator.getRoleAPI();

        role = new Role();
        role.setName("testRole1");
        role.setRoleKey("testKey1");
        role.setEditUsers(true);
        role.setEditPermissions(true);
        role.setEditLayouts(true);
        role.setDescription("testDesc1");
        role = roleAPI.save(role);

        List<Permission> newSetOfPermissions = new ArrayList<Permission>();
        newSetOfPermissions.add(new Permission(HTMLPage.class.getCanonicalName(), folderWithPerms.getPermissionId(), role.getId(),
            PermissionAPI.PERMISSION_READ, true));

        PermissionAPI permAPI = APILocator.getPermissionAPI();
        permAPI.assignPermissions(newSetOfPermissions, folderWithPerms, sysuser, false);

        APILocator.getHTMLPageAPI().movePage(page, folderWithPerms, sysuser, false);

        List<Permission> assetPermissions = permAPI.getPermissions(page, true);

        assertNotNull(assetPermissions);
        assertTrue(!assetPermissions.isEmpty());

        Permission pageReadPerm = assetPermissions.get(0);

        assertTrue(pageReadPerm.getType().equals(HTMLPage.class.getCanonicalName()) && pageReadPerm.getPermission()==1);

      } catch (Exception e) {
        try {
          HibernateUtil.rollbackTransaction();
        } catch (DotHibernateException e1) {
          Logger.error(HTMLPageAPITest.class,e.getMessage(),e1);
        }
        Logger.error(HTMLPageAPITest.class,e.getMessage(),e);
        throw e;
      } finally {
        if(page!=nullAPILocator.getHTMLPageAPI().delete(page, sysuser, false);
        if(template!=nullAPILocator.getTemplateAPI().delete(template, sysuser, false);
        if(container!=nullAPILocator.getContainerAPI().delete(container, sysuser, false);
        if(folderWithPerms!=nullAPILocator.getFolderAPI().delete(folderWithPerms, sysuser, false);
        if(folder!=nullAPILocator.getFolderAPI().delete(folder, sysuser, false);
        if(role!=nullAPILocator.getRoleAPI().delete(role);
      }

    }

}
TOP

Related Classes of com.dotmarketing.portlets.htmlpages.business.HTMLPageAPITest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.