1   package test.ext;
2   
3   import java.io.File;
4   import java.io.FileInputStream;
5   import java.io.FileNotFoundException;
6   import java.io.FileOutputStream;
7   import java.io.IOException;
8   import java.util.Properties;
9   
10  import junit.framework.Test;
11  import junit.framework.TestCase;
12  import junit.framework.TestSuite;
13  
14  import org.seasar.framework.container.S2Container;
15  import org.seasar.framework.container.factory.SingletonS2ContainerFactory;
16  import org.seasar.tuigwaa.cms.ContentsStoreService;
17  import org.seasar.tuigwaa.cms.TgwResourceAlreadyExistsException;
18  import org.seasar.tuigwaa.cms.core.Page;
19  import org.seasar.tuigwaa.cms.core.PageImpl;
20  import org.seasar.tuigwaa.cms.core.Resource;
21  import org.seasar.tuigwaa.cms.core.ResourceImpl;
22  import org.seasar.tuigwaa.system.TgwSecurityException;
23  import org.seasar.tuigwaa.util.TgwContext;
24  
25  import com.isenshi.util.ResourceUtils;
26  
27  public class SlideTest extends TestCase {
28  
29  	private static final String TEST_SITE = "junit";
30  
31  	private static final String TEST_PAGE = "testPage";
32  
33  	private static final String TEST_FOLDER = "testFolder";
34  	
35  	private static final String TEST_REPAGE = "renamedTestPage";
36  
37  	private static final String TEST_SKIN = ".SKINS";
38  	
39  	private static final S2Container container;
40  
41  	private static final ContentsStoreService contents;
42  
43  	static {		
44  		
45  		if (!SingletonS2ContainerFactory.hasContainer()) {
46  			SingletonS2ContainerFactory.init();
47  		}
48  		container = SingletonS2ContainerFactory.getContainer();
49  		contents = (ContentsStoreService) container
50  				.getComponent(ContentsStoreService.class);
51  	}
52  
53  	public static Test suite() {
54  		TestSuite suite = new TestSuite();
55  		suite.addTest(new SlideTest("testCreateSite"));
56  		suite.addTest(new SlideTest("testCreatePage"));
57  		suite.addTest(new SlideTest("testCreateFolder"));
58  		suite.addTest(new SlideTest("testProperty"));
59  		suite.addTest(new SlideTest("testCreateAttachment"));
60  		suite.addTest(new SlideTest("testWriteAttachment"));
61  		suite.addTest(new SlideTest("testRename"));
62  		suite.addTest(new SlideTest("testCopyFromFileSystem"));
63  		suite.addTest(new SlideTest("testCopyToFileSystem"));
64  		suite.addTest(new SlideTest("testDropSite"));
65  		return suite;
66  	}
67  
68  	public SlideTest(String method) {
69  		super(method);
70  	}
71  
72  	protected void setUp() throws Exception {
73  		TgwContext.setAdmin();
74  	}
75  
76  	public void testCreateSite() throws TgwSecurityException,
77  			TgwResourceAlreadyExistsException {
78  		contents.createFolder(TEST_SITE, "");
79  		assertFalse(contents.isExistResource(TEST_SITE, "", true));
80  		assertTrue(contents.isExistResource(TEST_SITE, "", false));
81  	}
82  
83  	public void testCreatePage() throws Exception {
84  		Resource resource = new ResourceImpl(TEST_SITE, TEST_PAGE, "text/wiki");
85  		
86  		String content = ResourceUtils.readContent("template/site/index.wiki");		
87  //		Page page = new PageImpl(resource, "TEST");
88  		Page page = new PageImpl(resource,content);
89  		
90  		contents.createPage(page);
91  		assertEquals(1, contents.getPageList(TEST_SITE, "").size());
92  	}
93  
94  	public void testCreateFolder() throws Exception{
95  		contents.createFolder(TEST_SITE, TEST_FOLDER);
96  		Resource resource = new ResourceImpl(TEST_SITE, TEST_FOLDER + "/" + TEST_PAGE, "text/wiki");
97  		Page page = new PageImpl(resource, "HOGE");
98  		contents.createPage(page);
99  		assertEquals(2, contents.getRecursivePageList(TEST_SITE, "").size());
100 	}
101 	
102 	
103 	public void testProperty() throws Exception {
104 		Properties props = new Properties();
105 		props.put("test", "test");
106 		contents.setProperty(TEST_SITE, TEST_PAGE, props);
107 		assertEquals("test", contents.getProperty(TEST_SITE, TEST_PAGE)
108 				.getProperty("test"));
109 	}
110 
111 	public void testCreateAttachment() throws FileNotFoundException, Exception {
112 		File file = ResourceUtils.getFile("app.dicon");
113 		contents.createAttachment(TEST_SITE, TEST_PAGE, file.getName(),
114 				"text/plain", (int) file.length(), new FileInputStream(file));
115 		assertEquals(1, contents.getAttachmentFileList(TEST_SITE, TEST_PAGE)
116 				.size());
117 	}
118 
119 	public void testWriteAttachment() throws FileNotFoundException, IOException{
120 		File file = ResourceUtils.getFile("app.dicon");
121 		contents.writeAttachment(TEST_SITE, TEST_PAGE, "app.dicon", new FileOutputStream(file));
122 		assertTrue(file.exists());
123 		file.delete();
124 	}
125 		
126 	public void testRename() throws TgwSecurityException, TgwResourceAlreadyExistsException {
127 		contents.rename(TEST_SITE, TEST_PAGE, TEST_REPAGE);
128 		assertEquals(1, contents.getAttachmentFileList(TEST_SITE, TEST_REPAGE)
129 				.size());
130 	}
131 	
132 	public void testCopyFromFileSystem() throws Exception{
133 		File file = ResourceUtils.getFile("template/skin");
134 		contents.copyFromFileSystem(file, TEST_SKIN);
135 		assertTrue(contents.getRecursivePageOrFolderList(TEST_SKIN, "").size()>0);
136 	}
137 
138 	public void testCopyToFileSystem() throws Exception{
139 		File file = ResourceUtils.getFile("");
140 		contents.copyToFileSystem(TEST_SKIN, "basic", file);
141 		assertTrue(contents.getRecursivePageOrFolderList(TEST_SKIN, "").size()>0);
142 	}
143 		
144 	public void testDropSite() throws TgwSecurityException {
145 		contents.delete(TEST_SITE, "");
146 		contents.delete(TEST_SKIN, "");
147 		assertFalse(contents.isExistResource(TEST_SITE, "", false));
148 	}
149 }