/* * Copyright 2015-Present Entando Inc. (http://www.entando.com) All rights reserved. * * This library 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 library 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. */ package org.entando.entando.apsadmin.portal.model; import com.agiletec.aps.system.services.pagemodel.PageModel; import com.agiletec.aps.system.services.pagemodel.PageModelDOM; import com.agiletec.apsadmin.system.ApsAdminSystemConstants; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionSupport; import java.util.List; import java.util.Map; /** * @author E.Santoboni */ public class TestPageModelAction extends AbstractTestPageModelAction { public void testEditPageModels() throws Throwable { String testPageModelCode = "test_pagemodel"; assertNull(this._pageModelManager.getPageModel(testPageModelCode)); try { String result = this.executeAction("admin", "edit", testPageModelCode); assertEquals("pageModelList", result); PageModel mockModel = this.createMockPageModel(testPageModelCode); this._pageModelManager.addPageModel(mockModel); result = this.executeAction("admin", "edit", testPageModelCode); assertEquals(Action.SUCCESS, result); } catch (Exception e) { throw e; } finally { this._pageModelManager.deletePageModel(testPageModelCode); assertNull(this._pageModelManager.getPageModel(testPageModelCode)); } } public void testValidate_1() throws Throwable { String testPageModelCode = "test_pagemodel"; assertNull(this._pageModelManager.getPageModel(testPageModelCode)); try { this.setUserOnSession("admin"); this.initAction("/do/PageModel", "save"); super.addParameter("code", testPageModelCode); super.addParameter("strutsAction", ApsAdminSystemConstants.ADD); String result = this.executeAction(); ActionSupport action = super.getAction(); assertEquals(Action.INPUT, result); assertEquals(3, action.getFieldErrors().size()); assertNotNull(action.getFieldErrors().get("description")); assertNotNull(action.getFieldErrors().get("template")); assertNotNull(action.getFieldErrors().get("xmlConfiguration")); } catch (Exception e) { this._pageModelManager.deletePageModel(testPageModelCode); assertNull(this._pageModelManager.getPageModel(testPageModelCode)); throw e; } } public void testValidate_2() throws Throwable { String testPageModelCode = "internal"; PageModel model = this._pageModelManager.getPageModel(testPageModelCode); assertNotNull(model); try { this.setUserOnSession("admin"); this.initAction("/do/PageModel", "save"); super.addParameter("code", testPageModelCode); super.addParameter("description", "Description"); super.addParameter("strutsAction", ApsAdminSystemConstants.ADD); String result = this.executeAction(); ActionSupport action = super.getAction(); assertEquals(Action.INPUT, result); assertEquals(3, action.getFieldErrors().size()); assertNotNull(action.getFieldErrors().get("code")); assertNotNull(action.getFieldErrors().get("template")); assertNotNull(action.getFieldErrors().get("xmlConfiguration")); } catch (Exception e) { this._pageModelManager.updatePageModel(model); throw e; } } public void testSave() throws Throwable { String testPageModelCode = "test_pagemodel"; assertNull(this._pageModelManager.getPageModel(testPageModelCode)); try { PageModel mockModel = this.createMockPageModel(testPageModelCode); this.setUserOnSession("admin"); this.initAction("/do/PageModel", "save"); super.addParameter("code", mockModel.getCode()); super.addParameter("description", mockModel.getDescription()); super.addParameter("template", mockModel.getTemplate()); PageModelDOM dom = new PageModelDOM(mockModel); super.addParameter("xmlConfiguration", dom.getXMLDocument()); super.addParameter("strutsAction", ApsAdminSystemConstants.ADD); String result = this.executeAction(); assertEquals(Action.SUCCESS, result); assertNotNull(this._pageModelManager.getPageModel(testPageModelCode)); } catch (Exception e) { throw e; } finally { this._pageModelManager.deletePageModel(testPageModelCode); assertNull(this._pageModelManager.getPageModel(testPageModelCode)); } } public void testTrashPageModels_1() throws Throwable { String result = this.executeAction("admin", "trash", null); assertEquals("pageModelList", result); result = this.executeAction("admin", "trash", "invalidCode"); assertEquals("pageModelList", result); result = this.executeAction("admin", "trash", "home"); assertEquals("references", result); PageModelAction pageModelAction = (PageModelAction) this.getAction(); Map<String, List<Object>> references = pageModelAction.getReferences(); assertFalse(references.isEmpty()); assertEquals(1, references.size()); assertEquals(11, references.get("PageManagerUtilizers").size()); } public void testTrashPageModels_2() throws Throwable { String testPageModelCode = "test_pagemodel"; assertNull(this._pageModelManager.getPageModel(testPageModelCode)); try { PageModel mockModel = this.createMockPageModel(testPageModelCode); this._pageModelManager.addPageModel(mockModel); String result = this.executeAction("admin", "trash", testPageModelCode); assertEquals(Action.SUCCESS, result); PageModelAction pageModelAction = (PageModelAction) this.getAction(); Map<String, List<Object>> references = pageModelAction.getReferences(); assertTrue(null == references || references.isEmpty()); } catch (Exception e) { throw e; } finally { this._pageModelManager.deletePageModel(testPageModelCode); assertNull(this._pageModelManager.getPageModel(testPageModelCode)); } } public void testDeletePageModels_1() throws Throwable { String result = this.executeAction("admin", "delete", null); assertEquals("pageModelList", result); result = this.executeAction("admin", "delete", "invalidCode"); assertEquals("pageModelList", result); result = this.executeAction("admin", "delete", "home"); assertEquals("references", result); PageModelAction pageModelAction = (PageModelAction) this.getAction(); Map<String, List<Object>> references = pageModelAction.getReferences(); assertFalse(references.isEmpty()); assertEquals(1, references.size()); assertEquals(11, references.get("PageManagerUtilizers").size()); } public void testDeletePageModels_2() throws Throwable { String testPageModelCode = "test_pagemodel"; assertNull(this._pageModelManager.getPageModel(testPageModelCode)); try { PageModel mockModel = this.createMockPageModel(testPageModelCode); this._pageModelManager.addPageModel(mockModel); String result = this.executeAction("admin", "delete", testPageModelCode); assertEquals(Action.SUCCESS, result); PageModelAction pageModelAction = (PageModelAction) this.getAction(); Map<String, List<Object>> references = pageModelAction.getReferences(); assertTrue(null == references || references.isEmpty()); } catch (Exception e) { this._pageModelManager.deletePageModel(testPageModelCode); throw e; } finally { assertNull(this._pageModelManager.getPageModel(testPageModelCode)); } } private String executeAction(String currentUser, String actionName, String modelCode) throws Throwable { this.setUserOnSession(currentUser); this.initAction("/do/PageModel", actionName); super.addParameter("code", modelCode); return this.executeAction(); } }