1 31 32 package org.opencms.xml.page; 33 34 import org.opencms.file.CmsFile; 35 import org.opencms.file.CmsObject; 36 import org.opencms.file.CmsProperty; 37 import org.opencms.file.CmsPropertyDefinition; 38 import org.opencms.file.types.CmsResourceTypeXmlPage; 39 import org.opencms.i18n.CmsEncoder; 40 import org.opencms.report.CmsShellReport; 41 import org.opencms.test.OpenCmsTestCase; 42 import org.opencms.test.OpenCmsTestProperties; 43 import org.opencms.util.CmsFileUtil; 44 import org.opencms.util.CmsStringUtil; 45 import org.opencms.workplace.tools.content.CmsElementRename; 46 import org.opencms.xml.CmsXmlEntityResolver; 47 48 import java.util.ArrayList ; 49 import java.util.List ; 50 import java.util.Locale ; 51 52 import junit.extensions.TestSetup; 53 import junit.framework.Test; 54 import junit.framework.TestSuite; 55 56 65 public class TestCmsXmlPageInSystem extends OpenCmsTestCase { 66 67 private static final String UTF8 = CmsEncoder.ENCODING_UTF_8; 68 69 74 public TestCmsXmlPageInSystem(String arg0) { 75 76 super(arg0); 77 } 78 79 84 public static Test suite() { 85 86 OpenCmsTestProperties.initialize(org.opencms.test.AllTests.TEST_PROPERTIES_PATH); 87 88 TestSuite suite = new TestSuite(); 89 suite.setName(TestCmsXmlPageInSystem.class.getName()); 90 91 suite.addTest(new TestCmsXmlPageInSystem("testLinkParameterIssue")); 92 suite.addTest(new TestCmsXmlPageInSystem("testSchemaCachePublishIssue")); 93 suite.addTest(new TestCmsXmlPageInSystem("testLinkReplacement")); 94 suite.addTest(new TestCmsXmlPageInSystem("testCommentInSource")); 95 suite.addTest(new TestCmsXmlPageInSystem("testXmlPageRenameElement")); 96 suite.addTest(new TestCmsXmlPageInSystem("testMalformedPage")); 97 98 TestSetup wrapper = new TestSetup(suite) { 99 100 protected void setUp() { 101 102 setupOpenCms("simpletest", "/sites/default/"); 103 } 104 105 protected void tearDown() { 106 107 removeOpenCms(); 108 } 109 110 }; 111 112 return wrapper; 113 } 114 115 120 public void testCommentInSource() throws Exception { 121 122 CmsObject cms = getCmsObject(); 123 echo("Testing XML page comment handling"); 124 125 String filename = "/folder1/subfolder11/test2.html"; 126 List properties = new ArrayList (); 127 properties.add(new CmsProperty(CmsPropertyDefinition.PROPERTY_CONTENT_ENCODING, UTF8, null)); 128 properties.add(new CmsProperty(CmsPropertyDefinition.PROPERTY_LOCALE, Locale.ENGLISH.toString(), null)); 129 String content = CmsXmlPageFactory.createDocument(Locale.ENGLISH, UTF8); 130 cms.createResource(filename, CmsResourceTypeXmlPage.getStaticTypeId(), content.getBytes(UTF8), properties); 131 132 CmsFile file = cms.readFile(filename); 133 CmsXmlPage page = CmsXmlPageFactory.unmarshal(cms, file); 134 String element = "test"; 135 page.addValue(element, Locale.ENGLISH); 136 137 String result; 138 139 content = "<h1>Comment Test 1</h1>\n<!-- This is a comment -->\nSome text here..."; 141 page.setStringValue(cms, element, Locale.ENGLISH, content); 142 result = page.getStringValue(cms, element, Locale.ENGLISH); 143 assertEquals(content, result); 144 145 content = "<!-- First comment --><h1>Comment Test 2</h1>\n<!-- This is a comment -->\nSome text here...<!-- Another comment -->"; 147 page.setStringValue(cms, element, Locale.ENGLISH, content); 148 result = page.getStringValue(cms, element, Locale.ENGLISH); 149 assertEquals(content, result); 150 151 content = "<!-- First comment --><img SRC=\"/data/opencms/image.gif\" alt=\"an image\" />\n<!-- This is a comment -->\n<a HREF=\"/data/opencms/index.html\">Link</a><!-- Another comment -->"; 153 page.setStringValue(cms, element, Locale.ENGLISH, content); 154 result = page.getStringValue(cms, element, Locale.ENGLISH); 155 assertEquals(content, result); 156 157 content = "<!-- <img SRC=\"/data/opencms/image.gif\" alt=\"an image\" />\n<h1>some text</h1>--><!-- This is a comment -->\n<a HREF=\"/data/opencms/index.html\">Link</a><!-- Another comment -->"; 159 page.setStringValue(cms, element, Locale.ENGLISH, content); 160 result = page.getStringValue(cms, element, Locale.ENGLISH); 161 assertEquals(content, result); 162 163 content = "<!-- Start of comment <!-- img SRC=\"/data/opencms/image.gif\" alt=\"an image\" / -->\n<h1>some text</h1><!-- This is a comment -->\n End of comment! --> <a HREF=\"/data/opencms/index.html\">Link</a><!-- Another comment -->"; 165 page.setStringValue(cms, element, Locale.ENGLISH, content); 166 result = page.getStringValue(cms, element, Locale.ENGLISH); 167 assertEquals(content, result); 168 } 169 170 182 public void testLinkParameterIssue() throws Exception { 183 184 CmsObject cms = getCmsObject(); 185 echo("Testing XML page link parameter issue"); 186 187 String filename = "/folder1/subfolder11/test_param_1.html"; 188 String content = CmsXmlPageFactory.createDocument(Locale.ENGLISH, UTF8); 189 List properties = new ArrayList (); 190 properties.add(new CmsProperty(CmsPropertyDefinition.PROPERTY_CONTENT_ENCODING, UTF8, null)); 191 properties.add(new CmsProperty(CmsPropertyDefinition.PROPERTY_LOCALE, Locale.ENGLISH.toString(), null)); 192 properties.add(new CmsProperty(CmsXmlPage.PROPERTY_ALLOW_RELATIVE, CmsStringUtil.FALSE, null)); 193 cms.createResource(filename, CmsResourceTypeXmlPage.getStaticTypeId(), content.getBytes(UTF8), properties); 194 195 CmsFile file = cms.readFile(filename); 196 CmsXmlPage page = CmsXmlPageFactory.unmarshal(cms, file); 197 String element = "test"; 198 page.addValue(element, Locale.ENGLISH); 199 String text; 200 201 page.setStringValue(cms, element, Locale.ENGLISH, "<a HREF=\"index.html?a=b&someparam=de\">link</a>"); 202 text = page.getStringValue(cms, element, Locale.ENGLISH); 203 assertEquals("<a HREF=\"/data/opencms/folder1/subfolder11/index.html?a=b&someparam=de\">link</a>", text); 204 205 page.setStringValue(cms, element, Locale.ENGLISH, "<a HREF=\"index.html?language=de\">link</a>"); 206 text = page.getStringValue(cms, element, Locale.ENGLISH); 207 assertEquals("<a HREF=\"/data/opencms/folder1/subfolder11/index.html?language=de\">link</a>", text); 208 209 page.setStringValue(cms, element, Locale.ENGLISH, "<a HREF=\"index.html?a=b&language=de\">link</a>"); 210 text = page.getStringValue(cms, element, Locale.ENGLISH); 211 assertEquals("<a HREF=\"/data/opencms/folder1/subfolder11/index.html?a=b&language=de\">link</a>", text); 212 213 page.setStringValue(cms, element, Locale.ENGLISH, "<a HREF=\"index_noexist.html?a=b&language=de\">link</a>"); 214 text = page.getStringValue(cms, element, Locale.ENGLISH); 215 assertEquals("<a HREF=\"/data/opencms/folder1/subfolder11/index_noexist.html?a=b&language=de\">link</a>", text); 216 217 page.setStringValue( 218 cms, 219 element, 220 Locale.ENGLISH, 221 "<a HREF=\"index_noexist.html?a=b&product=somthing\">link</a>"); 222 text = page.getStringValue(cms, element, Locale.ENGLISH); 223 assertEquals( 224 "<a HREF=\"/data/opencms/folder1/subfolder11/index_noexist.html?a=b&product=somthing\">link</a>", 225 text); 226 } 227 228 233 public void testLinkReplacement() throws Exception { 234 235 CmsObject cms = getCmsObject(); 236 echo("Testing XML page link replacement"); 237 238 String filename = "/folder1/subfolder11/test1.html"; 239 String content = CmsXmlPageFactory.createDocument(Locale.ENGLISH, UTF8); 240 List properties = new ArrayList (); 241 properties.add(new CmsProperty(CmsPropertyDefinition.PROPERTY_CONTENT_ENCODING, UTF8, null)); 242 properties.add(new CmsProperty(CmsPropertyDefinition.PROPERTY_LOCALE, Locale.ENGLISH.toString(), null)); 243 properties.add(new CmsProperty(CmsXmlPage.PROPERTY_ALLOW_RELATIVE, CmsStringUtil.FALSE, null)); 244 cms.createResource(filename, CmsResourceTypeXmlPage.getStaticTypeId(), content.getBytes(UTF8), properties); 245 246 CmsFile file = cms.readFile(filename); 247 CmsXmlPage page = CmsXmlPageFactory.unmarshal(cms, file); 248 String element = "test"; 249 page.addValue(element, Locale.ENGLISH); 250 String text; 251 252 page.setStringValue(cms, element, Locale.ENGLISH, "<a HREF=\"index.html\">link</a>"); 254 text = page.getStringValue(cms, element, Locale.ENGLISH); 255 assertEquals("<a HREF=\"/data/opencms/folder1/subfolder11/index.html\">link</a>", text); 256 257 page.setStringValue(cms, element, Locale.ENGLISH, "<a HREF=\"index_noexist.html\">link</a>"); 259 text = page.getStringValue(cms, element, Locale.ENGLISH); 260 assertEquals("<a HREF=\"/data/opencms/folder1/subfolder11/index_noexist.html\">link</a>", text); 261 } 262 263 268 public void testMalformedPage() throws Exception { 269 270 CmsObject cms = getCmsObject(); 271 echo("Testing malformed page element structures"); 272 273 String resourcename = "/folder1/page2.html"; 275 cms.lockResource(resourcename); 276 277 CmsFile file = cms.readFile(resourcename); 278 279 String pageStr = CmsFileUtil.readFile("org/opencms/xml/page/xmlpage-5.xml", "ISO-8859-1"); 281 file.setContents(pageStr.getBytes("ISO-8859-1")); 282 283 cms.writeFile(file); 284 } 285 286 294 public void testSchemaCachePublishIssue() throws Exception { 295 296 CmsObject cms = getCmsObject(); 297 echo("Testing the validation for values in the XML content"); 298 299 String resourcename = "/folder1/page1.html"; 300 cms.lockResource(resourcename); 301 302 CmsFile file = cms.readFile(resourcename); 303 CmsXmlPage page = CmsXmlPageFactory.unmarshal(cms, file); 304 page.validateXmlStructure(new CmsXmlEntityResolver(cms)); 305 page.setStringValue(cms, "body", Locale.ENGLISH, "This is a test"); 306 assertEquals("This is a test", page.getValue("body", Locale.ENGLISH).getStringValue(cms)); 307 file.setContents(page.marshal()); 308 cms.writeFile(file); 309 310 cms.unlockResource(resourcename); 311 cms.publishResource(resourcename); 312 313 cms.lockResource(resourcename); 314 315 file = cms.readFile(resourcename); 316 page = CmsXmlPageFactory.unmarshal(cms, file); 317 page.validateXmlStructure(new CmsXmlEntityResolver(cms)); 318 page.setStringValue(cms, "body", Locale.ENGLISH, "This is a another test"); 319 assertEquals("This is a another test", page.getValue("body", Locale.ENGLISH).getStringValue(cms)); 320 file.setContents(page.marshal()); 321 cms.writeFile(file); 322 } 323 324 329 public void testXmlPageRenameElement() throws Exception { 330 331 String folder = "/folder1/"; 332 String recursive = CmsStringUtil.TRUE; 333 String template = "ALL"; 334 String locale = "ALL"; 335 String oldElement = "body"; 336 String newElement = "NewElement"; 337 String removeEmptyElements = CmsStringUtil.FALSE; 338 String validateNewElement = CmsStringUtil.FALSE; 339 340 echo("Testing XML page rename element handling"); 341 CmsElementRename wp = new CmsElementRename( 342 null, 343 getCmsObject(), 344 folder, 345 recursive, 346 template, 347 locale, 348 oldElement, 349 newElement, 350 removeEmptyElements, 351 validateNewElement); 352 353 echo("Testing initialize CmsElementRename class"); 354 assertEquals(folder, wp.getParamResource()); 355 assertEquals(recursive, wp.getParamRecursive()); 356 assertEquals(template, wp.getParamTemplate()); 357 assertEquals(locale, wp.getParamLocale()); 358 assertEquals(oldElement, wp.getParamOldElement()); 359 assertEquals(newElement, wp.getParamNewElement()); 360 assertEquals(removeEmptyElements, wp.getParamRemoveEmptyElements()); 361 assertEquals(validateNewElement, wp.getParamValidateNewElement()); 362 echo("CmsElementRename class initialized successfully"); 363 echo("Xml Page Element Rename Start"); 364 wp.actionRename(new CmsShellReport(Locale.ENGLISH)); 365 echo("Xml Page Element Rename End"); 366 } 367 368 } 369 | Popular Tags |