1 31 32 package org.opencms.file; 33 34 import org.opencms.lock.CmsLock; 35 import org.opencms.main.OpenCms; 36 import org.opencms.test.OpenCmsTestCase; 37 import org.opencms.test.OpenCmsTestProperties; 38 import org.opencms.test.OpenCmsTestResourceConfigurableFilter; 39 import org.opencms.test.OpenCmsTestResourceFilter; 40 41 import java.util.Iterator ; 42 import java.util.List ; 43 44 import junit.extensions.TestSetup; 45 import junit.framework.Test; 46 import junit.framework.TestSuite; 47 48 55 public class TestCopy extends OpenCmsTestCase { 56 57 62 public TestCopy(String arg0) { 63 super(arg0); 64 } 65 66 71 public static Test suite() { 72 OpenCmsTestProperties.initialize(org.opencms.test.AllTests.TEST_PROPERTIES_PATH); 73 74 TestSuite suite = new TestSuite(); 75 suite.setName(TestCopy.class.getName()); 76 77 suite.addTest(new TestCopy("testCopySingleResourceAsNew")); 79 suite.addTest(new TestCopy("testCopyFolderDateIssue")); 80 suite.addTest(new TestCopy("testCopyFolderAsNew")); 81 suite.addTest(new TestCopy("testCopyOverwriteDeletedFile")); 82 83 TestSetup wrapper = new TestSetup(suite) { 84 85 protected void setUp() { 86 setupOpenCms("simpletest", "/sites/default/"); 87 } 88 89 protected void tearDown() { 90 removeOpenCms(); 91 } 92 }; 93 94 return wrapper; 95 } 96 97 102 public void testCopySingleResourceAsNew() throws Exception { 103 104 CmsObject cms = getCmsObject(); 105 echo("Testing copy of a file as new"); 106 107 cms.createProject("testproject", "a test project", "Users", "Users", CmsProject.PROJECT_TYPE_NORMAL); 109 cms.copyResourceToProject("/"); 110 cms.addUserToGroup("test1", OpenCms.getDefaultUsers().getGroupAdministrators()); 111 112 cms.loginUser("test1", "test1"); 113 cms.getRequestContext().setCurrentProject(cms.readProject("testproject")); 114 115 116 String source = "/index.html"; 117 String destination = "/index_copy.html"; 118 long timestamp = System.currentTimeMillis(); 119 120 CmsUser admin = cms.readUser("Admin"); 121 assertUserCreated(cms, source, admin); 123 assertUserLastModified(cms, source, admin); 124 CmsResource original = cms.readResource(source); 125 126 storeResources(cms, source); 127 cms.copyResource(source, destination); 128 129 assertFilter(cms, source, OpenCmsTestResourceFilter.FILTER_EQUAL); 130 131 assertProject(cms, destination, cms.getRequestContext().currentProject()); 133 assertState(cms, destination, CmsResource.STATE_NEW); 135 assertDateCreatedAfter(cms, destination, timestamp); 137 assertDateLastModified(cms, destination, original.getDateLastModified()); 139 assertUserCreated(cms, destination, cms.getRequestContext().currentUser()); 141 assertUserLastModified(cms, destination, cms.readUser(original.getUserLastModified())); 143 setMapping(destination, source); 145 assertFilter(cms, destination, OpenCmsTestResourceFilter.FILTER_COPY_FILE_AS_NEW); 146 assertLock(cms, destination, CmsLock.TYPE_EXCLUSIVE); 148 } 149 150 155 public void testCopyFolderDateIssue() throws Exception { 156 157 158 CmsObject cms = getCmsObject(); 159 echo("Testing copy operation for a folder, checking if the date of the new folder is the current date"); 160 161 cms.loginUser("test1", "test1"); 162 cms.getRequestContext().setCurrentProject(cms.readProject("testproject")); 163 164 String source = "/xmlcontent/"; 165 String destination = "/xmlcontent_copy/"; 166 long timestamp = System.currentTimeMillis(); 167 168 storeResources(cms, source); 169 cms.copyResource(source, destination); 170 171 assertFilter(cms, source, OpenCmsTestResourceFilter.FILTER_EQUAL); 172 173 assertProject(cms, destination, cms.getRequestContext().currentProject()); 175 assertState(cms, destination, CmsResource.STATE_NEW); 177 assertDateCreatedAfter(cms, destination, timestamp); 179 assertDateLastModifiedAfter(cms, destination, timestamp); 181 assertUserCreated(cms, destination, cms.getRequestContext().currentUser()); 183 assertUserLastModified(cms, destination, cms.getRequestContext().currentUser()); 185 assertLock(cms, destination, CmsLock.TYPE_EXCLUSIVE); 187 setMapping(destination, source); 189 assertFilter(cms, destination, OpenCmsTestResourceFilter.FILTER_COPY_FOLDER); 190 } 191 192 198 public void testCopyOverwriteDeletedFile() throws Exception { 199 200 CmsObject cms = getCmsObject(); 201 echo("Testing overwriting a deleted file"); 202 203 cms.loginUser("test1", "test1"); 204 cms.getRequestContext().setCurrentProject(cms.readProject("testproject")); 205 206 String source1 = "/folder1/page2.html"; 207 String source2 = "/folder1/image1.gif"; 208 String source3 = "/folder1/page3.html"; 209 String destination = "/folder1/page1.html"; 210 211 storeResources(cms, source1); 212 storeResources(cms, source2); 213 storeResources(cms, source3); 214 storeResources(cms, destination); 215 216 cms.lockResource(destination); 217 218 cms.deleteResource(destination, CmsResource.DELETE_PRESERVE_SIBLINGS); 220 assertState(cms, destination, CmsResource.STATE_DELETED); 221 222 cms.copyResource(source1, destination, CmsResource.COPY_AS_SIBLING); 223 224 assertState(cms, destination, CmsResource.STATE_CHANGED); 225 assertSiblingCount(cms, destination, 2); 226 assertLock(cms, destination, CmsLock.TYPE_EXCLUSIVE); 227 228 assertSiblingCountIncremented(cms, source1, 1); 229 assertLock(cms, source1, CmsLock.TYPE_SHARED_EXCLUSIVE); 230 231 assertFilter(cms, source1, OpenCmsTestResourceFilter.FILTER_EXISTING_SIBLING); 232 assertFilter(cms, source1, destination, OpenCmsTestResourceFilter.FILTER_COPY_SOURCE_DESTINATION_AS_SIBLING); 233 234 235 cms.deleteResource(destination, CmsResource.DELETE_PRESERVE_SIBLINGS); 237 assertState(cms, destination, CmsResource.STATE_DELETED); 238 239 cms.copyResource(source2, destination, CmsResource.COPY_AS_SIBLING); 240 241 assertSiblingCountIncremented(cms, source1, 0); 242 assertLock(cms, source1, CmsLock.TYPE_UNLOCKED); 243 244 assertState(cms, destination, CmsResource.STATE_CHANGED); 245 assertSiblingCount(cms, destination, 2); 246 assertLock(cms, destination, CmsLock.TYPE_EXCLUSIVE); 247 248 assertSiblingCountIncremented(cms, source2, 1); 249 assertLock(cms, source2, CmsLock.TYPE_SHARED_EXCLUSIVE); 250 251 assertFilter(cms, source1, OpenCmsTestResourceFilter.FILTER_UNDOCHANGES); 252 assertFilter(cms, source2, OpenCmsTestResourceFilter.FILTER_EXISTING_SIBLING); 253 assertFilter(cms, source2, destination, OpenCmsTestResourceFilter.FILTER_COPY_SOURCE_DESTINATION_AS_SIBLING); 254 255 cms.deleteResource(destination, CmsResource.DELETE_PRESERVE_SIBLINGS); 256 assertState(cms, destination, CmsResource.STATE_DELETED); 257 258 cms.copyResource(source3, destination, CmsResource.COPY_AS_NEW); 260 261 assertSiblingCountIncremented(cms, source1, 0); 262 assertLock(cms, source1, CmsLock.TYPE_UNLOCKED); 263 assertSiblingCountIncremented(cms, source2, 0); 264 assertLock(cms, source2, CmsLock.TYPE_UNLOCKED); 265 266 assertState(cms, destination, CmsResource.STATE_CHANGED); 267 assertSiblingCount(cms, destination, 1); 268 assertSiblingCount(cms, source3, 1); 269 assertLock(cms, destination, CmsLock.TYPE_EXCLUSIVE); 270 271 assertFilter(cms, source1, OpenCmsTestResourceFilter.FILTER_UNDOCHANGES); 272 assertFilter(cms, source2, OpenCmsTestResourceFilter.FILTER_UNDOCHANGES); 273 assertFilter(cms, source3, OpenCmsTestResourceFilter.FILTER_EQUAL); 274 assertFilter(cms, source3, destination, OpenCmsTestResourceFilter.FILTER_COPY_FILE_AS_NEW); 275 } 276 277 282 public void testCopyFolderAsNew() throws Exception { 283 284 CmsObject cms = getCmsObject(); 285 echo("Testing copy of a folder as new (i.e. no siblings)"); 286 287 cms.loginUser("test1", "test1"); 288 cms.getRequestContext().setCurrentProject(cms.readProject("testproject")); 289 290 String source = "/folder2/"; 291 String destination = "/folder2_copy/"; 292 long timestamp = System.currentTimeMillis(); 293 294 storeResources(cms, source); 295 cms.copyResource(source, destination, CmsResource.COPY_AS_NEW); 296 297 List subresources; 298 Iterator i; 299 300 subresources = cms.readResources(source, CmsResourceFilter.ALL); 301 302 i = subresources.iterator(); 304 while (i.hasNext()) { 305 CmsResource res = (CmsResource)i.next(); 306 String resName = cms.getSitePath(res); 307 assertFilter(cms, resName, OpenCmsTestResourceFilter.FILTER_EQUAL); 308 } 309 310 subresources = cms.readResources(destination, CmsResourceFilter.ALL); 311 setMapping(destination, source); 312 313 OpenCmsTestResourceConfigurableFilter filter = 315 new OpenCmsTestResourceConfigurableFilter(OpenCmsTestResourceFilter.FILTER_COPY_FOLDER); 316 317 filter.disableSiblingCountTest(); 318 319 i = subresources.iterator(); 321 while (i.hasNext()) { 322 CmsResource res = (CmsResource)i.next(); 323 String resName = cms.getSitePath(res); 324 325 assertProject(cms, resName, cms.getRequestContext().currentProject()); 327 assertState(cms, resName, CmsResource.STATE_NEW); 329 assertDateCreatedAfter(cms, resName, timestamp); 331 assertUserCreated(cms, resName, cms.getRequestContext().currentUser()); 333 assertLock(cms, resName); 335 assertSiblingCount(cms, resName, 1); 337 assertFilter(cms, resName, filter); 339 } 340 } 341 } | Popular Tags |