1 #include "webcit_test.h"
2 #include <CUnit/CUnit.h>
3 #include <CUnit/Basic.h>
4 #include <CUnit/TestDB.h>
9 #include "modules_init.h"
13 wcsession *TestSessionList = NULL;
17 wcsession *TheSession;
19 extern StrBuf *Username;
20 extern StrBuf *Passvoid;
23 extern int ReadHttpSubject(ParsedHttpHdrs *Hdr, StrBuf *Line, StrBuf *Buf);
24 extern wcsession *CreateSession(int Lockable, wcsession **wclist, ParsedHttpHdrs *Hdr, pthread_mutex_t *ListMutex);
25 extern void groupdav_main(void);
29 void SetUpContext(void)
31 memset(&Hdr, 0, sizeof(ParsedHttpHdrs));
32 Hdr.HR.eReqType = eGET;
33 http_new_modules(&Hdr);
36 Hdr.http_sock = 1; /* STDOUT */
38 Hdr.HR.dav_depth = 32767; /* TODO: find a general way to have non-0 defaults */
39 TheSession = CreateSession(1, &TestSessionList, &Hdr, NULL);
40 TheSession->lastreq = time(NULL); /* log */
41 TheSession->Hdr = &Hdr;
42 Hdr.HTTPHeaders = NewHash(1, NULL);
43 session_attach_modules(TheSession);
46 int SetUpConnection(void)
51 Response = NewStrBuf();
52 become_logged_in(Username, Passvoid, Response);
57 CU_FAIL("Establishing session failed!");
62 void SetHttpURL(ParsedHttpHdrs *Hdr, const char *Title, long tlen, StrBuf *Buf)
64 StrBuf *Line = NewStrBufPlain (Title, tlen);
68 /* from context_loop.c: */
69 extern void DestroyHttpHeaderHandler(void *V);
70 extern int ReadHttpSubject(ParsedHttpHdrs *Hdr, StrBuf *Line, StrBuf *Buf);
71 void SetUpRequest(const char *UrlPath)
76 StrBuf *Line, *HeaderName;
78 HeaderName = NewStrBuf();
81 StrBufPrintf(Line, "GET %s HTTP/1.0\r\n", UrlPath);
83 WCC->Hdr->HTTPHeaders = NewHash(1, NULL);
84 pHdr = (OneHttpHeader*) malloc(sizeof(OneHttpHeader));
85 memset(pHdr, 0, sizeof(OneHttpHeader));
87 Put(Hdr.HTTPHeaders, HKEY("GET /"), pHdr, DestroyHttpHeaderHandler);
88 syslog(9, "%s\n", ChrPtr(Line));
90 if (ReadHttpSubject(&Hdr, Line, HeaderName))
91 CU_FAIL("Failed to parse Request line / me is bogus!");
98 void TearDownRequest(void)
100 /* End Context loop */
101 http_detach_modules(&Hdr);
104 void TearDownContext(void)
106 http_destroy_modules(&Hdr);
107 /* End Session Loop */
108 session_detach_modules(TheSession);
109 session_destroy_modules(&TheSession);
111 /* End Session loop */
112 /* now shut it down clean. */
113 // shutdown_sessions();
117 void test_worker_entry(StrBuf *UrlPath)
124 void SetGroupdavHeaders(int DavDepth)
126 Hdr.HR.dav_depth = DavDepth;
129 void FlushHeaders(void)
134 void test_groupdav_directorycommands(void)
137 if (SetUpConnection())
140 SetGroupdavHeaders(0);
146 SetGroupdavHeaders(1);
152 SetUpRequest("/groupdav");
153 SetGroupdavHeaders(0);
158 SetUpRequest("/groupdav");
159 SetGroupdavHeaders(1);
164 SetUpRequest("/groupdav/");
165 SetGroupdavHeaders(0);
170 SetUpRequest("/groupdav/");
171 SetGroupdavHeaders(1);
177 SetUpRequest("/groupdav/My%20Folders");
178 SetGroupdavHeaders(0);
183 SetUpRequest("/groupdav/My%20Folders");
184 SetGroupdavHeaders(1);
189 SetUpRequest("/groupdav/My%20Folders/");
190 SetGroupdavHeaders(0);
195 SetUpRequest("/groupdav/My%20Folders/");
196 SetGroupdavHeaders(1);
201 SetUpRequest("/groupdav/My%20Folders/Calendar");
202 SetGroupdavHeaders(0);
207 SetUpRequest("/groupdav/My%20Folders/Calendar");
208 SetGroupdavHeaders(1);
213 SetUpRequest("/groupdav/My%20Folders/Calendar/");
214 SetGroupdavHeaders(0);
219 SetUpRequest("/groupdav/My%20Folders/Calendar/");
220 SetGroupdavHeaders(1);
227 SetGroupdavHeaders(0);
233 SetGroupdavHeaders(1);
243 extern void httplang_to_locale(StrBuf *LocaleString, wcsession *sess);
245 static void test_gettext(const char *str, long len)
247 StrBuf *Test = NewStrBufPlain(str, len);
250 httplang_to_locale(Test, TheSession);
256 void test_gettext_headerevaluation_Opera(void)
258 test_gettext(HKEY("sq;q=1.0,de;q=0.9,as;q=0.8,ar;q=0.7,bn;q=0.6,zh-cn;q=0.5,kn;q=0.4,ch;q=0.3,fo;q=0.2,gn;q=0.1,ce;q=0.1,ie;q=0.1"));
261 void test_gettext_headerevaluation_firefox1(void)
263 test_gettext(HKEY("de-de,en-us;q=0.7,en;q=0.3"));
266 void test_gettext_headerevaluation_firefox2(void)
268 test_gettext(HKEY("de,en-ph;q=0.8,en-us;q=0.5,de-at;q=0.3"));
271 void test_gettext_headerevaluation_firefox3(void)
273 test_gettext(HKEY("de,en-us;q=0.9,it;q=0.9,de-de;q=0.8,en-ph;q=0.7,de-at;q=0.7,zh-cn;q=0.6,cy;q=0.5,ar-om;q=0.5,en-tt;q=0.4,xh;q=0.3,nl-be;q=0.3,cs;q=0.2,sv;q=0.1,tk;q=0.1"));
276 void test_gettext_headerevaluation_ie7(void)
279 // User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; FunWebProducts; FBSMTWB; GTB6.3; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; Seekmo 10.3.86.0)
281 test_gettext(HKEY("en-us,x-ns1MvoLpRxbNhu,x-ns2F0f0NnyPOPN"));
284 static void AddTests(void)
286 CU_pSuite pGroup = NULL;
287 CU_pTest pTest = NULL;
289 pGroup = CU_add_suite("TestLocaleEvaluator", NULL, NULL);
290 pTest = CU_add_test(pGroup, "Test ie7", test_gettext_headerevaluation_ie7);
291 pTest = CU_add_test(pGroup, "Test Opera", test_gettext_headerevaluation_Opera);
292 pTest = CU_add_test(pGroup, "Test firefox1", test_gettext_headerevaluation_firefox1);
293 pTest = CU_add_test(pGroup, "Test firefox2", test_gettext_headerevaluation_firefox2);
294 pTest = CU_add_test(pGroup, "Test firefox3", test_gettext_headerevaluation_firefox3);
296 pGroup = CU_add_suite("TestUrlPatterns", NULL, NULL);
297 pTest = CU_add_test(pGroup, "Test", test_groupdav_directorycommands);
310 setvbuf(stdout, NULL, _IONBF, 0);
312 CU_set_output_filename("TestAutomated");
313 if (CU_initialize_registry()) {
314 printf("\nInitialize of test Registry failed.");
319 printf("\nTests completed with return value %d.\n", CU_basic_run_tests());
320 CU_cleanup_registry();