All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opencms.setup.TestCmsSetupXmlHelper Maven / Gradle / Ivy

Go to download

OpenCms is an enterprise-ready, easy to use website content management system based on Java and XML technology. Offering a complete set of features, OpenCms helps content managers worldwide to create and maintain beautiful websites fast and efficiently.

There is a newer version: 18.0
Show newest version
/*
 * This library is part of OpenCms -
 * the Open Source Content Management System
 *
 * Copyright (c) Alkacon Software GmbH & Co. KG (http://www.alkacon.com)
 *
 * 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.
 *
 * For further information about Alkacon Software GmbH & Co. KG, please see the
 * company website: http://www.alkacon.com
 *
 * For further information about OpenCms, please see the
 * project website: http://www.opencms.org
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

package org.opencms.setup;

import org.opencms.configuration.CmsConfigurationManager;
import org.opencms.configuration.CmsWorkplaceConfiguration;
import org.opencms.configuration.I_CmsXmlConfiguration;
import org.opencms.setup.xml.CmsSetupXmlHelper;
import org.opencms.test.OpenCmsTestCase;
import org.opencms.util.CmsFileUtil;

import java.io.File;

import org.dom4j.Document;

/**
 * Tests the setup xml helper class.

* * @since 6.1.8 */ public class TestCmsSetupXmlHelper extends OpenCmsTestCase { /** * Default JUnit constructor.

* * @param arg0 JUnit parameters */ public TestCmsSetupXmlHelper(String arg0) { super(arg0); } /** * Tests reading xml file.

* * @throws Exception if something goes wrong */ public void testXmlModification() throws Exception { String base = getTestDataPath(File.separator + "WEB-INF" + File.separator + "base"); CmsSetupXmlHelper xmlHelper = new CmsSetupXmlHelper(base); // create test file String inputFile = "test.xml"; CmsFileUtil.copy(base + CmsWorkplaceConfiguration.DEFAULT_XML_FILE_NAME, base + inputFile); // open test file System.out.println("Modifying xml from " + base + inputFile); Document ori = xmlHelper.getDocument(inputFile); String baseXp = "/" + CmsConfigurationManager.N_ROOT + "/" + CmsWorkplaceConfiguration.N_WORKPLACE + "/"; // simple test String xPath = baseXp + CmsWorkplaceConfiguration.N_AUTOLOCK; String value = xmlHelper.getValue(inputFile, xPath); assertEquals("true", value); String expected = "false"; xmlHelper.setValue(inputFile, xPath, expected); value = xmlHelper.getValue(inputFile, xPath); assertEquals(expected, value); // advanced test xPath = baseXp + CmsWorkplaceConfiguration.N_LOCALIZEDFOLDERS + "/" + I_CmsXmlConfiguration.N_RESOURCE + "[2]/@" + I_CmsXmlConfiguration.A_URI; value = xmlHelper.getValue(inputFile, xPath); assertEquals("/system/login/", value); expected = "/"; xmlHelper.setValue(inputFile, xPath, expected); value = xmlHelper.getValue(inputFile, xPath); assertEquals(expected, value); // test adding a new node xPath = baseXp + CmsWorkplaceConfiguration.N_GALLERY_DEFAULT_SCOPE; expected = "root"; assertEquals(1, xmlHelper.setValue(inputFile, xPath, expected)); value = xmlHelper.getValue(inputFile, xPath); assertEquals(expected, value); // // test adding a new attribute xPath = baseXp + CmsWorkplaceConfiguration.N_LOCALIZEDFOLDERS + "/" + I_CmsXmlConfiguration.N_RESOURCE + "[3]/@" + I_CmsXmlConfiguration.A_URI; expected = "/test-value/"; assertEquals(1, xmlHelper.setValue(inputFile, xPath, expected)); value = xmlHelper.getValue(inputFile, xPath); assertEquals(expected, value); // write modified file xmlHelper.write(inputFile); // restoring file xPath = baseXp + CmsWorkplaceConfiguration.N_LOCALIZEDFOLDERS + "/" + I_CmsXmlConfiguration.N_RESOURCE + "[2]/@" + I_CmsXmlConfiguration.A_URI; value = xmlHelper.getValue(inputFile, xPath); assertEquals("/", value); expected = "/system/login/"; xmlHelper.setValue(inputFile, xPath, expected); value = xmlHelper.getValue(inputFile, xPath); assertEquals(expected, value); xPath = baseXp + CmsWorkplaceConfiguration.N_AUTOLOCK; value = xmlHelper.getValue(inputFile, xPath); assertEquals("false", value); expected = "true"; xmlHelper.setValue(inputFile, xPath, expected); value = xmlHelper.getValue(inputFile, xPath); assertEquals(expected, value); // test removing a node xPath = baseXp + CmsWorkplaceConfiguration.N_GALLERY_DEFAULT_SCOPE; assertEquals(1, xmlHelper.setValue(inputFile, xPath, null)); assertNull(xmlHelper.getValue(inputFile, xPath)); // test removing an attribute xPath = baseXp + CmsWorkplaceConfiguration.N_LOCALIZEDFOLDERS + "/" + I_CmsXmlConfiguration.N_RESOURCE + "[3]/@" + I_CmsXmlConfiguration.A_URI; assertEquals(1, xmlHelper.setValue(inputFile, xPath, null)); assertNull(xmlHelper.getValue(inputFile, xPath)); xPath = baseXp + CmsWorkplaceConfiguration.N_LOCALIZEDFOLDERS + "/" + I_CmsXmlConfiguration.N_RESOURCE + "[3]"; assertEquals(1, xmlHelper.setValue(inputFile, xPath, null)); // test removing non existent node xPath = baseXp + "test1"; assertEquals(0, xmlHelper.setValue(inputFile, xPath, null)); // test removing non existent attribute xPath = baseXp + CmsWorkplaceConfiguration.N_LOCALIZEDFOLDERS + "/" + I_CmsXmlConfiguration.N_RESOURCE + "[2]/@test-xxx"; assertEquals(0, xmlHelper.setValue(inputFile, xPath, null)); // write restored file xmlHelper.write(inputFile); // compare documents xmlHelper.flushAll(); Document cur = xmlHelper.getDocument(inputFile); assertEquals(ori, cur); // remove test file new File(base + inputFile).delete(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy