1 31 32 package org.opencms.file; 33 34 import org.opencms.file.types.CmsResourceTypeFolder; 35 import org.opencms.file.types.CmsResourceTypePlain; 36 import org.opencms.main.OpenCms; 37 import org.opencms.test.OpenCmsTestCase; 38 import org.opencms.test.OpenCmsTestProperties; 39 import org.opencms.test.OpenCmsTestResourceFilter; 40 41 import java.util.Collections ; 42 import java.util.Iterator ; 43 import java.util.List ; 44 45 import junit.extensions.TestSetup; 46 import junit.framework.Test; 47 import junit.framework.TestSuite; 48 49 56 public class TestProjects extends OpenCmsTestCase { 57 58 63 public TestProjects(String arg0) { 64 super(arg0); 65 } 66 67 72 public static Test suite() { 73 OpenCmsTestProperties.initialize(org.opencms.test.AllTests.TEST_PROPERTIES_PATH); 74 75 TestSuite suite = new TestSuite(); 76 suite.setName(TestProjects.class.getName()); 77 78 suite.addTest(new TestProjects("testCreateDeleteProject")); 79 suite.addTest(new TestProjects("testCopyResourceToProject")); 80 suite.addTest(new TestProjects("testDeleteProjectWithResources")); 81 suite.addTest(new TestProjects("testReadProjectResources")); 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 testCreateDeleteProject() throws Exception { 103 104 CmsObject cms = getCmsObject(); 105 106 echo("Testing creating a project"); 107 108 String projectName = "UnitTest2"; 109 110 CmsProject project = cms.createProject( 111 projectName, 112 "Unit test project 2", 113 OpenCms.getDefaultUsers().getGroupUsers(), 114 OpenCms.getDefaultUsers().getGroupProjectmanagers(), 115 CmsProject.PROJECT_TYPE_NORMAL 116 ); 117 118 assertEquals(projectName, project.getName()); 120 assertFalse(project.isOnlineProject()); 121 122 List projects = cms.getAllAccessibleProjects(); 124 int i; 125 for (i = 0; i < projects.size(); i++) { 126 if (((CmsProject)projects.get(i)).getId() == project.getId()) { 127 break; 128 } 129 } 130 if (i >= projects.size()) { 131 fail ("Project " + project.getName() + "not accessible"); 132 } 133 134 projects = cms.getAllManageableProjects(); 136 for (i = 0; i < projects.size(); i++) { 137 if (((CmsProject)projects.get(i)).getId() == project.getId()) { 138 break; 139 } 140 } 141 if (i >= projects.size()) { 142 fail ("Project " + project.getName() + "not manageable"); 143 } 144 145 echo("Testing deleting a project"); 146 147 cms.deleteProject(project.getId()); 149 150 projects = cms.getAllAccessibleProjects(); 152 for (i = 0; i < projects.size(); i++) { 153 if (((CmsProject)projects.get(i)).getId() == project.getId()) { 154 fail ("Project " + project.getName() + "not deleted"); 155 } 156 } 157 } 158 159 164 public void testDeleteProjectWithResources() throws Exception { 165 166 CmsObject cms = getCmsObject(); 167 168 echo("Creating a project for deletion test with resources"); 169 170 String projectName = "UnitTest3"; 171 172 CmsProject project = cms.createProject( 173 projectName, 174 "Unit test project 3", 175 OpenCms.getDefaultUsers().getGroupUsers(), 176 OpenCms.getDefaultUsers().getGroupProjectmanagers(), 177 CmsProject.PROJECT_TYPE_NORMAL 178 ); 179 180 String resource = "/"; 182 183 storeResources(cms, resource); 185 186 cms.getRequestContext().setCurrentProject(project); 188 189 cms.copyResourceToProject("/"); 191 192 assertEquals(projectName, project.getName()); 194 assertFalse(project.isOnlineProject()); 195 196 cms.lockResource(resource); 198 cms.setDateLastModified("/folder1/", System.currentTimeMillis(), true); 199 cms.deleteResource("/folder2/", CmsResource.DELETE_REMOVE_SIBLINGS); 200 cms.createResource("/folder3/", CmsResourceTypeFolder.getStaticTypeId(), null, Collections.EMPTY_LIST); 201 cms.createResource("/folder3/test.txt", CmsResourceTypePlain.getStaticTypeId(), "".getBytes(), Collections.EMPTY_LIST); 202 cms.unlockResource(resource); 203 204 CmsProject offlineProject = cms.readProject("Offline"); 206 cms.getRequestContext().setCurrentProject(offlineProject); 207 208 cms.deleteProject(project.getId()); 210 211 assertFilter(cms, resource, OpenCmsTestResourceFilter.FILTER_UNDOCHANGES); 213 214 Iterator j = cms.readResources(resource, CmsResourceFilter.ALL, true).iterator(); 216 while (j.hasNext()) { 217 CmsResource res = (CmsResource)j.next(); 218 String resName = cms.getSitePath(res); 219 220 assertFilter(cms, resName, OpenCmsTestResourceFilter.FILTER_UNDOCHANGES); 222 } 223 } 224 225 230 public void testCopyResourceToProject() throws Exception { 231 232 CmsObject cms = getCmsObject(); 233 echo("Testing copying a resource to a project"); 234 235 String projectName = "UnitTest1"; 236 237 cms.getRequestContext().saveSiteRoot(); 238 cms.getRequestContext().setSiteRoot("/"); 239 try { 240 CmsProject project = cms.createProject( 241 projectName, 242 "Unit test project 1", 243 OpenCms.getDefaultUsers().getGroupUsers(), 244 OpenCms.getDefaultUsers().getGroupProjectmanagers(), 245 CmsProject.PROJECT_TYPE_NORMAL 246 ); 247 cms.getRequestContext().setCurrentProject(project); 248 cms.copyResourceToProject("/sites/default/index.html"); 249 cms.copyResourceToProject("/sites/default/folder1/"); 250 } finally { 251 cms.getRequestContext().restoreSiteRoot(); 252 } 253 254 CmsProject current = cms.readProject(projectName); 255 cms.getRequestContext().setCurrentProject(current); 256 257 assertEquals(projectName, current.getName()); 259 assertFalse(current.isOnlineProject()); 260 261 List currentResources = cms.readProjectResources(current); 263 assertTrue(CmsProject.isInsideProject(currentResources, "/sites/default/index.html")); 264 assertTrue(CmsProject.isInsideProject(currentResources, "/sites/default/folder1/")); 265 assertTrue(CmsProject.isInsideProject(currentResources, "/sites/default/folder1/subfolder11/index.html")); 266 assertFalse(CmsProject.isInsideProject(currentResources, "/sites/default/")); 267 assertFalse(CmsProject.isInsideProject(currentResources, "/")); 268 assertFalse(CmsProject.isInsideProject(currentResources, "/sites/default/folder2/index.html")); 269 } 270 271 276 public void testReadProjectResources() throws Exception { 277 278 CmsObject cms = getCmsObject(); 279 280 echo("Testing to read all project resources"); 281 282 String projectName = "UnitTest4"; 283 284 cms.getRequestContext().saveSiteRoot(); 285 cms.getRequestContext().setSiteRoot("/"); 286 try { 287 CmsProject project = cms.createProject( 288 projectName, 289 "Unit test project 4", 290 OpenCms.getDefaultUsers().getGroupUsers(), 291 OpenCms.getDefaultUsers().getGroupProjectmanagers(), 292 CmsProject.PROJECT_TYPE_NORMAL 293 ); 294 cms.getRequestContext().setCurrentProject(project); 295 cms.copyResourceToProject("/sites/default/index.html"); 296 cms.copyResourceToProject("/sites/default/folder1/"); 297 } finally { 298 cms.getRequestContext().restoreSiteRoot(); 299 } 300 301 CmsProject current = cms.readProject(projectName); 302 cms.getRequestContext().setCurrentProject(current); 303 304 assertEquals(projectName, current.getName()); 306 assertFalse(current.isOnlineProject()); 307 308 List projectResources = cms.readProjectResources(current); 310 311 assertEquals(2, projectResources.size()); 313 assertTrue(projectResources.contains("/sites/default/index.html")); 314 assertTrue(projectResources.contains("/sites/default/folder1/")); 315 } 316 } 317 | Popular Tags |