1 31 32 package org.opencms.file; 33 34 import org.opencms.file.types.CmsResourceTypePlain; 35 import org.opencms.test.OpenCmsTestCase; 36 import org.opencms.test.OpenCmsTestProperties; 37 38 import java.io.UnsupportedEncodingException ; 39 import java.util.List ; 40 41 import junit.extensions.TestSetup; 42 import junit.framework.Test; 43 import junit.framework.TestSuite; 44 45 51 public class TestBackup extends OpenCmsTestCase { 52 53 58 public TestBackup(String arg0) { 59 60 super(arg0); 61 } 62 63 68 public static Test suite() { 69 70 OpenCmsTestProperties.initialize(org.opencms.test.AllTests.TEST_PROPERTIES_PATH); 71 72 TestSuite suite = new TestSuite(); 73 suite.setName(TestCopy.class.getName()); 74 75 suite.addTest(new TestBackup("testFileHistory")); 77 78 TestSetup wrapper = new TestSetup(suite) { 79 80 protected void setUp() { 81 82 setupOpenCms("simpletest", "/sites/default/"); 83 } 84 85 protected void tearDown() { 86 87 removeOpenCms(); 88 } 89 }; 90 91 return wrapper; 92 } 93 94 100 public void testCreateAndDeleteResources() throws Throwable { 101 102 CmsObject cms = getCmsObject(); 103 String filename = "/dummy1.txt"; 104 CmsProject offlineProject = cms.getRequestContext().currentProject(); 105 int counter = 5; 106 107 try { 108 109 cms.getRequestContext().saveSiteRoot(); 111 cms.getRequestContext().setSiteRoot("/sites/default/"); 112 cms.getRequestContext().setCurrentProject(offlineProject); 113 114 for (int i = 1; i <= counter; i++) { 115 116 String contentStr = "content version " + i; 118 cms.createResource(filename, CmsResourceTypePlain.getStaticTypeId(), contentStr.getBytes(), null); 119 cms.unlockResource(filename); 120 cms.publishResource(filename); 121 122 cms.lockResource(filename); 124 cms.deleteResource(filename, CmsResource.DELETE_PRESERVE_SIBLINGS); 125 cms.unlockResource(filename); 126 cms.publishResource(filename); 127 } 128 129 cms.createResource(filename, CmsResourceTypePlain.getStaticTypeId(), null, null); 132 List backupResources = cms.readAllBackupFileHeaders(filename); 133 assertEquals(counter, backupResources.size()); 134 135 for (int i = 0; i < counter; i++) { 136 137 int version = counter - i; 140 String contentStr = "content version " + version; 141 142 CmsBackupResource backupResource = (CmsBackupResource)backupResources.get(i); 144 assertEquals(version, backupResource.getVersionId()); 145 146 cms.restoreResourceBackup(filename, backupResource.getTagId()); 147 CmsFile file = cms.readFile(filename); 148 149 String restoredContent = getContentString(cms, file.getContents()); 151 assertEquals(contentStr, restoredContent); 152 } 153 } finally { 154 155 cms.getRequestContext().restoreSiteRoot(); 156 } 157 158 } 159 160 166 public void testFileHistory() throws Throwable { 167 168 CmsObject cms = getCmsObject(); 169 String filename = "/testFileHistory1.txt"; 170 String siblingname = "/testFileHistory2.txt"; 171 CmsProject offlineProject = cms.getRequestContext().currentProject(); 172 int counter = 5; 173 174 try { 175 176 cms.getRequestContext().saveSiteRoot(); 178 cms.getRequestContext().setSiteRoot("/sites/default/"); 179 cms.getRequestContext().setCurrentProject(offlineProject); 180 181 String contentStr = "content version " + 0; 183 cms.createResource(filename, CmsResourceTypePlain.getStaticTypeId(), contentStr.getBytes(), null); 184 185 for (int i = 1; i <= counter; i++) { 186 187 contentStr = "content version " + i; 189 CmsFile file = cms.readFile(filename); 190 file.setContents(contentStr.getBytes()); 191 cms.lockResource(filename); 192 cms.writeFile(file); 193 cms.unlockResource(filename); 194 cms.publishResource(filename); 195 } 196 197 cms.copyResource(filename, siblingname, CmsResource.COPY_AS_SIBLING); 199 cms.unlockResource(siblingname); 200 cms.publishResource(siblingname); 201 202 for (int i = 1; i <= counter; i++) { 203 204 contentStr = "sibling content version " + (counter + i); 206 CmsFile file = cms.readFile(siblingname); 207 file.setContents(contentStr.getBytes()); 208 cms.lockResource(siblingname); 209 cms.writeFile(file); 210 cms.unlockResource(siblingname); 211 cms.publishResource(siblingname); 212 } 213 214 List backupResourcesForFile = cms.readAllBackupFileHeaders(filename); 215 List backupResourcesForSibling = cms.readAllBackupFileHeaders(siblingname); 216 assertEquals(backupResourcesForFile, backupResourcesForSibling); 217 assertEquals(2 * counter + 1, backupResourcesForFile.size()); 218 } finally { 219 cms.getRequestContext().restoreSiteRoot(); 220 } 221 222 } 223 224 231 protected String getContentString(CmsObject cms, byte[] content) { 232 233 try { 234 return new String (content, cms.getRequestContext().getEncoding()); 235 } catch (UnsupportedEncodingException e) { 236 return new String (content); 237 } 238 } 239 240 } 241 | Popular Tags |