001: // Copyright (C) 2003,2004,2005 by Object Mentor, Inc. All rights reserved.
002: // Released under the terms of the GNU General Public License version 2 or later.
003: package fitnesse.responders;
004:
005: import fitnesse.Responder;
006: import fitnesse.http.MockRequest;
007: import fitnesse.responders.editing.*;
008: import fitnesse.responders.files.*;
009: import fitnesse.responders.refactoring.*;
010: import fitnesse.responders.run.*;
011: import fitnesse.responders.search.*;
012: import fitnesse.responders.versions.*;
013: import fitnesse.testutil.FitNesseUtil;
014: import fitnesse.util.FileUtil;
015: import fitnesse.wiki.*;
016: import junit.framework.TestCase;
017:
018: import java.io.File;
019:
020: public class ResponderFactoryTest extends TestCase {
021: private ResponderFactory factory;
022: private MockRequest request;
023: private WikiPageDummy nonExistantPage;
024: private WikiPage root;
025: private PageCrawler crawler;
026:
027: public void setUp() throws Exception {
028: factory = new ResponderFactory("testDir");
029: request = new MockRequest();
030: root = InMemoryPage.makeRoot("root");
031: crawler = root.getPageCrawler();
032: nonExistantPage = new WikiPageDummy();
033: }
034:
035: public void testGetResponderKey() throws Exception {
036: checkResponderKey("railroad", "railroad");
037: checkResponderKey("responder=railroad", "railroad");
038: checkResponderKey("", "");
039: }
040:
041: private void checkResponderKey(String queryString, String key) {
042: MockRequest request = new MockRequest();
043: request.setQueryString(queryString);
044: assertEquals(key, factory.getResponderKey(request));
045: }
046:
047: public void testWikiPageResponder() throws Exception {
048: request.setResource("SomePage");
049: assertResponderType(WikiPageResponder.class, root);
050: request.setResource("");
051: assertResponderType(WikiPageResponder.class, root);
052: request.setResource("root");
053: assertResponderType(WikiPageResponder.class, root);
054: }
055:
056: public void testRefactorPageResponder() throws Exception {
057: assertResponderTypeMatchesInput("refactor",
058: RefactorPageResponder.class);
059: }
060:
061: public void testDeletePageResponder() throws Exception {
062: assertResponderTypeMatchesInput("deletePage",
063: DeletePageResponder.class);
064: }
065:
066: public void testRenamePageResponder() throws Exception {
067: assertResponderTypeMatchesInput("renamePage",
068: RenamePageResponder.class);
069: }
070:
071: public void testEditResponder() throws Exception {
072: request.addInput("responder", "edit");
073: request.setResource("SomePage");
074: assertResponderType(EditResponder.class, root);
075: assertResponderType(EditResponder.class, nonExistantPage);
076: }
077:
078: public void testPageDataResponder() throws Exception {
079: request.addInput("responder", "pageData");
080: request.setResource("SomePage");
081: assertResponderType(PageDataWikiPageResponder.class, root);
082: }
083:
084: public void testSaveResponder() throws Exception {
085: assertResponderTypeMatchesInput("saveData", SaveResponder.class);
086: }
087:
088: public void testTestResponder() throws Exception {
089: assertResponderTypeMatchesInput("test", TestResponder.class);
090: }
091:
092: public void testSuiteResponder() throws Exception {
093: assertResponderTypeMatchesInput("suite", SuiteResponder.class);
094: }
095:
096: public void testFileResponder() throws Exception {
097: try {
098: new File("testDir").mkdir();
099: new File("testDir/files").mkdir();
100: FileUtil.createFile("testDir/files/someFile",
101: "this is a test");
102: request.setResource("files/someFile");
103: assertResponderType(FileResponder.class, nonExistantPage);
104: } finally {
105: FileUtil.deleteFileSystemDirectory("testDir");
106: }
107: }
108:
109: public void testSearchFormResponder() throws Exception {
110: assertResponderTypeMatchesInput("searchForm",
111: SearchFormResponder.class);
112: }
113:
114: public void testSearchResponder() throws Exception {
115: assertResponderTypeMatchesInput("search", SearchResponder.class);
116: }
117:
118: public void testSerializedPageResponder() throws Exception {
119: assertResponderTypeMatchesInput("proxy",
120: SerializedPageResponder.class);
121: }
122:
123: public void testVersionSelectionResponder() throws Exception {
124: assertResponderTypeMatchesInput("versions",
125: VersionSelectionResponder.class);
126: }
127:
128: public void testVersionResponder() throws Exception {
129: assertResponderTypeMatchesInput("viewVersion",
130: VersionResponder.class);
131: }
132:
133: public void testRollbackResponder() throws Exception {
134: assertResponderTypeMatchesInput("rollback",
135: RollbackResponder.class);
136: }
137:
138: public void testNameReponder() throws Exception {
139: assertResponderTypeMatchesInput("names",
140: NameWikiPageResponder.class);
141: }
142:
143: public void testUploadResponder() throws Exception {
144: assertResponderTypeMatchesInput("upload", UploadResponder.class);
145: }
146:
147: public void testCreateDirectoryResponder() throws Exception {
148: assertResponderTypeMatchesInput("createDir",
149: CreateDirectoryResponder.class);
150: }
151:
152: public void testDeleteFileResponder() throws Exception {
153: assertResponderTypeMatchesInput("deleteFile",
154: DeleteFileResponder.class);
155: }
156:
157: public void testRenameFileResponder() throws Exception {
158: assertResponderTypeMatchesInput("renameFile",
159: RenameFileResponder.class);
160: }
161:
162: public void testDeleteConfirmationFileResponder() throws Exception {
163: assertResponderTypeMatchesInput("deleteConfirmation",
164: DeleteConfirmationResponder.class);
165: }
166:
167: public void testRenameFileConfirmationResponder() throws Exception {
168: assertResponderTypeMatchesInput("renameConfirmation",
169: RenameFileConfirmationResponder.class);
170: }
171:
172: public void testCreatePropertiesResponder() throws Exception {
173: assertResponderTypeMatchesInput("properties",
174: PropertiesResponder.class);
175: }
176:
177: public void testCreateSavePropertiesResponder() throws Exception {
178: assertResponderTypeMatchesInput("saveProperties",
179: SavePropertiesResponder.class);
180: }
181:
182: public void testCreateWhereUsedResponder() throws Exception {
183: assertResponderTypeMatchesInput("whereUsed",
184: WhereUsedResponder.class);
185: }
186:
187: public void testCreateMovePageResponer() throws Exception {
188: assertResponderTypeMatchesInput("movePage",
189: MovePageResponder.class);
190: }
191:
192: public void testCreateTableWizardResponder() throws Exception {
193: assertResponderTypeMatchesInput("tableWizard",
194: TableWizardResponder.class);
195: }
196:
197: public void testSocketCatcher() throws Exception {
198: assertResponderTypeMatchesInput("socketCatcher",
199: SocketCatchingResponder.class);
200: }
201:
202: public void testFitClient() throws Exception {
203: assertResponderTypeMatchesInput("fitClient",
204: FitClientResponder.class);
205: }
206:
207: public void testRawContent() throws Exception {
208: assertResponderTypeMatchesInput("raw",
209: RawContentResponder.class);
210: }
211:
212: public void testRssResponder() throws Exception {
213: assertResponderTypeMatchesInput("rss", RssResponder.class);
214: }
215:
216: public void testPageImporterResponder() throws Exception {
217: assertResponderTypeMatchesInput("import",
218: WikiImportingResponder.class);
219: }
220:
221: public void testShutdownResponder() throws Exception {
222: assertResponderTypeMatchesInput("shutdown",
223: ShutdownResponder.class);
224: }
225:
226: public void testTestResultFormattingResponder() throws Exception {
227: assertResponderTypeMatchesInput("format",
228: TestResultFormattingResponder.class);
229: }
230:
231: public void testSymbolicLinkResponder() throws Exception {
232: assertResponderTypeMatchesInput("symlink",
233: SymbolicLinkResponder.class);
234: }
235:
236: public void testWillDisplayVirtualPages() throws Exception {
237: WikiPage root = InMemoryPage.makeRoot("RooT");
238: WikiPage page1 = crawler.addPage(root, PathParser
239: .parse("PageOne"));
240: crawler.addPage(page1, PathParser.parse("ChildOne"),
241: "child content");
242: WikiPage page2 = crawler.addPage(root, PathParser
243: .parse("PageTwo"));
244: FitNesseUtil.bindVirtualLinkToPage(page2, page1);
245: request.setResource("PageTwo.ChildOne");
246: assertResponderType(WikiPageResponder.class, root);
247: }
248:
249: public void testNotFoundResponder() throws Exception {
250: request.setResource("somepage");
251: assertResponderType(NotFoundResponder.class, root);
252: }
253:
254: public void testAddingResponders() throws Exception {
255: factory.addResponder("custom", WikiPageResponder.class);
256: assertResponderTypeMatchesInput("custom",
257: WikiPageResponder.class);
258: }
259:
260: private void assertResponderType(Class expectedClass, WikiPage page)
261: throws Exception {
262: Responder responder = factory.makeResponder(request, page);
263: assertEquals(expectedClass, responder.getClass());
264: }
265:
266: private void assertResponderTypeMatchesInput(String responderType,
267: Class responderClass) throws Exception {
268: request.addInput("responder", responderType);
269: assertResponderType(responderClass, root);
270: }
271: }
|