1 31 32 package org.opencms.staticexport; 33 34 import org.opencms.file.CmsFile; 35 import org.opencms.file.CmsObject; 36 import org.opencms.file.CmsProject; 37 import org.opencms.file.CmsRequestContext; 38 import org.opencms.file.types.CmsResourceTypeFolder; 39 import org.opencms.main.OpenCms; 40 import org.opencms.site.CmsSiteManager; 41 import org.opencms.test.OpenCmsTestCase; 42 import org.opencms.test.OpenCmsTestProperties; 43 import org.opencms.xml.page.CmsXmlPage; 44 import org.opencms.xml.page.CmsXmlPageFactory; 45 46 import java.util.Locale ; 47 48 import junit.extensions.TestSetup; 49 import junit.framework.Test; 50 import junit.framework.TestSuite; 51 52 61 public class TestSecure extends OpenCmsTestCase { 62 63 64 private static final String SERVER_NORMAL = "http://localhost"; 65 66 67 private static final String SERVER_SECURE = "https://localhost"; 68 69 74 public TestSecure(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(TestSecure.class.getName()); 90 91 suite.addTest(new TestSecure("testSecureServerConfig")); 92 suite.addTest(new TestSecure("testLinkInXmlPage")); 93 suite.addTest(new TestSecure("testSecureLinkProcessing")); 94 suite.addTest(new TestSecure("testSetupSecondSite")); 95 96 TestSetup wrapper = new TestSetup(suite) { 97 98 protected void setUp() { 99 100 setupOpenCms("simpletest", "/sites/default/"); 101 } 102 103 protected void tearDown() { 104 105 removeOpenCms(); 106 } 107 108 }; 109 110 return wrapper; 111 } 112 113 119 public void testLinkInXmlPage() throws Exception { 120 121 CmsObject cms = getCmsObject(); 122 123 echo("Testing security of links"); 124 CmsProject onlineProject = cms.readProject("Online"); 125 cms.getRequestContext().setCurrentProject(onlineProject); 126 cms.getRequestContext().setSiteRoot("/sites/default"); 127 String filename = "/folder1/page1.html"; 128 129 CmsFile file = cms.readFile(filename); 130 CmsXmlPage page = CmsXmlPageFactory.unmarshal(cms, file); 131 132 String element = "body"; 133 134 String text = page.getStringValue(cms, element, Locale.ENGLISH); 135 assertTrue(text.indexOf(SERVER_SECURE) != -1); 136 137 } 138 139 149 public void testSecureLinkProcessing() throws Exception { 150 151 CmsObject cms = getCmsObject(); 152 CmsProject onlineProject = cms.readProject("Online"); 153 cms.getRequestContext().setCurrentProject(onlineProject); 154 CmsRequestContext requestContext = cms.getRequestContext(); 155 CmsLinkManager linkManager = OpenCms.getLinkManager(); 156 157 requestContext.setUri("/folder1/page1.html"); 158 159 assertHasSecurePrefix(linkManager.substituteLink(cms, "/folder1/page4.html")); 161 162 assertHasNoPrefix(linkManager.substituteLink(cms, "/folder1/image1.gif")); 164 requestContext.setUri("/folder1/page4.html"); 165 166 assertHasNormalPrefix(linkManager.substituteLink(cms, "/folder1/page3.html")); 168 169 assertHasNoPrefix(linkManager.substituteLink(cms, "/folder1/image1.gif")); 171 172 cms.getRequestContext().setCurrentProject(cms.readProject("Offline")); 174 assertHasNoPrefix(linkManager.substituteLink(cms, "/folder1/page3.html")); 175 176 } 177 178 183 public void testSecureServerConfig() throws Exception { 184 185 CmsObject cms = getCmsObject(); 186 echo("Testing the configuration"); 187 188 assertTrue(CmsSiteManager.getCurrentSite(cms).hasSecureServer()); 190 191 assertEquals(SERVER_SECURE, CmsSiteManager.getCurrentSite(cms).getSecureUrl()); 193 194 } 195 196 202 public void testSetupSecondSite() throws Exception { 203 204 CmsObject cms = getCmsObject(); 205 cms.getRequestContext().setSiteRoot("/"); 208 cms.createResource("/sites/testsite/", CmsResourceTypeFolder.getStaticTypeId()); 209 cms.unlockResource("/sites/testsite/"); 210 211 cms.copyResource("/sites/default/folder1/page1.html", "/sites/testsite/page1.html"); 213 cms.unlockResource("/sites/testsite/page1.html"); 214 215 cms.publishProject(); 216 217 CmsProject onlineProject = cms.readProject("Online"); 218 cms.getRequestContext().setCurrentProject(onlineProject); 219 cms.getRequestContext().setSiteRoot("/sites/testsite/"); 220 221 CmsFile file = cms.readFile("page1.html"); 223 CmsXmlPage page = CmsXmlPageFactory.unmarshal(cms, file); 224 225 String element = "body"; 226 227 String text = page.getStringValue(cms, element, Locale.ENGLISH); 229 230 System.out.println(text); 231 232 assertTrue(text.indexOf(SERVER_SECURE) != -1); 233 assertTrue(text.indexOf(SERVER_NORMAL) != -1); 234 } 235 236 241 private void assertHasNoPrefix(String link) { 242 243 assertTrue(link.startsWith("/")); 244 } 245 246 251 private void assertHasNormalPrefix(String link) { 252 253 assertTrue(link.startsWith(SERVER_NORMAL)); 254 } 255 256 261 private void assertHasSecurePrefix(String link) { 262 263 assertTrue(link.startsWith(SERVER_SECURE)); 264 } 265 266 } | Popular Tags |