UNPKG

9.66 kBJavaScriptView Raw
1/*
2 * @package jsDAV
3 * @subpackage DAV
4 * @copyright Copyright(c) 2011 Ajax.org B.V. <info AT ajax.org>
5 * @author Mike de Boer <info AT mikedeboer DOT nl>
6 * @license http://github.com/mikedeboer/jsDAV/blob/master/LICENSE MIT License
7 */
8"use strict";
9
10var Util = require("./../lib/shared/util"),
11 Assert = require("assert"),
12 K = function() {},
13
14 onStartDocument = K,
15 onEndDocument = K,
16 onStartElementNS = K,
17 onEndElementNS = K,
18 onCharacters = K,
19 onCdata = K,
20 onComment = K,
21 onWarning = K,
22 onError = K;
23
24function setUp() {
25 return new Xml.SaxParser(function(cb) {
26 cb.onStartDocument(function() {
27 onStartDocument();
28 });
29 cb.onEndDocument(function() {
30 onEndDocument();
31 });
32 cb.onStartElementNS(function(elem, attrs, prefix, uri, namespaces) {
33 console.log("=> Started: " + elem + " uri="+uri +" (Attributes: " + JSON.stringify(attrs) + " )");
34 onStartElementNS(elem, attrs, prefix, uri, namespaces);
35 });
36 cb.onEndElementNS(function(elem, prefix, uri) {
37 console.log("<= End: " + elem + " uri="+uri + "\n");
38 onEndElementNS(elem, prefix, uri);
39 parser.pause();// pause the parser
40 setTimeout(function (){parser.resume();}, 100); //resume the parser
41 });
42 cb.onCharacters(function(chars) {
43 console.log('<CHARS>'+chars+"</CHARS>");
44 onCharacters(chars);
45 });
46 cb.onCdata(function(cdata) {
47 console.log('<CDATA>'+cdata+"</CDATA>");
48 onCdata(cdata);
49 });
50 cb.onComment(function(msg) {
51 console.log('<COMMENT>'+msg+"</COMMENT>");
52 onComment(msg);
53 });
54 cb.onWarning(function(msg) {
55 console.log('<WARNING>'+msg+"</WARNING>");
56 onWarning(msg);
57 });
58 cb.onError(function(msg) {
59 console.log('<ERROR>'+JSON.stringify(msg)+"</ERROR>");
60 onError(msg);
61 });
62 });
63}
64
65function result(sName, bTest) {
66
67}
68
69var Tests = {
70 "testToClarkNotation": function() {
71 var parser = setUp();
72 onStartElementNS = function(elem, attrs, prefix, uri, namespaces) {
73 result("testToClarkNotation", Assert.equal(
74 '{http://www.example.org/}test1',
75 Util.toClarkNotation(uri, elem)
76 ));
77 onStartElementNS = K;
78 }
79
80 parser.parseString('<?xml version="1.0"?><test1 xmlns="http://www.example.org/">Testdoc</test1>');
81 },
82
83 "testToClarkNotation2": function() {
84 var parser = setUp();
85 onStartElementNS = function(elem, attrs, prefix, uri, namespaces) {
86 result("testToClarkNotation", Assert.equal(
87 '{http://www.example.org/}test1',
88 Util.toClarkNotation(uri, elem)
89 ));
90 onStartElementNS = K;
91 }
92
93 parser.parseString('<?xml version="1.0"?><s:test1 xmlns:s="http://www.example.org/">Testdoc</s:test1>');
94 },
95
96 "testToClarkNotationDAVNamespace": function() {
97 var parser = setUp();
98 onStartElementNS = function(elem, attrs, prefix, uri, namespaces) {
99 result("testToClarkNotation", Assert.equal(
100 '{DAV:}test1',
101 Util.toClarkNotation(uri, elem)
102 ));
103 onStartElementNS = K;
104 }
105 parser.parseString('<?xml version="1.0"?><s:test1 xmlns:s="urn:DAV">Testdoc</s:test1>');
106 },
107
108 /*"testToClarkNotationNoElem": function() {
109
110 parser.parseString('<?xml version="1.0"?><s:test1 xmlns:s="urn:DAV">Testdoc</s:test1>');
111
112 return Assert.equal(
113 Util.toClarkNotation(dom.firstChild.firstChild),
114 null
115 )
116 },*/
117
118 "testConvertDAVNamespace": function() {
119 var parser = setUp();
120 parser.parseString('<?xml version="1.0"?><document xmlns="DAV:">blablabla</document>');
121 /*return Assert.equal(
122 '<?xml version="1.0"?><document xmlns="urn:DAV">blablabla</document>',
123 Util.convertDAVNamespace(xml)
124 )*/
125 return true;
126 },
127
128 "testConvertDAVNamespace2": function() {
129 var parser = setUp();
130 parser.parseString('<?xml version="1.0"?><s:document xmlns:s="DAV:">blablabla</s:document>');
131 /*/*return Assert.equal(
132 '<?xml version="1.0"?><s:document xmlns:s="urn:DAV">blablabla</s:document>',
133 Util.convertDAVNamespace(xml)
134 )*/
135 return true;
136 },
137
138 "testConvertDAVNamespace3": function() {
139 var parser = setUp();
140 parser.parseString('<?xml version="1.0"?><s:document xmlns="http://bla" xmlns:s="DAV:" xmlns:z="http://othernamespace">blablabla</s:document>');
141 /*return Assert.equal(
142 '<?xml version="1.0"?><s:document xmlns="http://bla" xmlns:s="urn:DAV" xmlns:z="http://othernamespace">blablabla</s:document>',
143 Util.convertDAVNamespace(xml)
144 )*/
145 return true;
146 },
147
148 "testConvertDAVNamespace4": function() {
149 xml='<?xml version="1.0"?><document xmlns=\'DAV:\'>blablabla</document>';
150 /*return Assert.equal(
151 '<?xml version="1.0"?><document xmlns=\'urn:DAV\'>blablabla</document>',
152 Util.convertDAVNamespace(xml)
153 )*/
154 return true;
155 },
156
157 "testConvertDAVNamespaceMixedQuotes": function() {
158 xml='<?xml version="1.0"?><document xmlns=\'DAV:" xmlns="Another attribute\'>blablabla</document>';
159 /*return Assert.equal(
160 xml,
161 Util.convertDAVNamespace(xml)
162 )*/
163 return true;
164 },
165
166 /**
167 * @depends testConvertDAVNamespace
168 *
169 "testLoadDOMDocument": function() {
170 parser.parseString('<?xml version="1.0"?><document></document>');
171 //dom = Util.loadDOMDocument(xml);
172 /*return Assert.ok(dom instanceof DOMDocument)
173 return true;
174 },
175
176 /**
177 * @depends testLoadDOMDocument
178 * @expectedException Sabre_DAV_Exception_BadRequest
179 *
180 "testLoadDOMDocumentEmpty": function() {
181 //Util.loadDOMDocument('');
182 return true;
183 },*/
184
185 /**
186 * @depends testConvertDAVNamespace
187 * @expectedException Sabre_DAV_Exception_BadRequest
188 */
189 "testLoadDOMDocumentInvalid": function() {
190 parser.parseString('<?xml version="1.0"?><document></docu');
191 //dom = Util.loadDOMDocument(xml);
192 return true;
193 },
194
195 /**
196 * @depends testLoadDOMDocument
197 *
198 "testLoadDOMDocumentUTF16": function() {
199 parser.parseString('<?xml version="1.0" encoding="UTF-16"?><root xmlns="DAV:">blabla</root>');
200 xml = iconv('UTF-8','UTF-16LE',xml);
201 dom = Util.loadDOMDocument(xml);
202 return Assert.equal('blabla',dom.firstChild.nodeValue)
203 }
204 */
205
206 "testParseProperties": function() {
207 parser.parseString('<?xml version="1.0"?>\
208<root xmlns="DAV:">\
209<prop>\
210<displayname>Calendars</displayname>\
211</prop>\
212</root>');
213
214 //dom = Util.loadDOMDocument(xml);
215 //properties = Util.parseProperties(dom.firstChild);
216
217 /*return Assert.equal({
218 '{DAV:}displayname' : 'Calendars'
219 }, properties)*/
220 return true;
221 },
222
223 /**
224 * @depends testParseProperties
225 */
226 "testParsePropertiesEmpty": function() {
227 parser.parseString('<?xml version="1.0"?>\
228<root xmlns="DAV:" xmlns:s="http://www.rooftopsolutions.nl/example">\
229<prop>\
230<displayname>Calendars</displayname>\
231</prop>\
232<prop>\
233<s:example />\
234</prop> \
235</root>');
236
237 //dom = Util.loadDOMDocument(xml);
238 //properties = Util.parseProperties(dom.firstChild);
239
240 /*return Assert.equal({
241 '{DAV:}displayname' : 'Calendars',
242 '{http://www.rooftopsolutions.nl/example}example' : null
243 }, properties)*/
244 return true;
245 },
246
247
248 /**
249 * @depends testParseProperties
250 */
251 "testParsePropertiesComplex": function() {
252 parser.parseString('<?xml version="1.0"?>\
253<root xmlns="DAV:">\
254<prop>\
255<displayname>Calendars</displayname>\
256</prop>\
257<prop>\
258<someprop>Complex value <b>right here</b></someprop>\
259</prop>\
260</root>');
261
262 //dom = Util.loadDOMDocument(xml);
263 //properties = Util.parseProperties(dom.firstChild);
264
265 /*return Assert.equal({
266 '{DAV:}displayname' : 'Calendars',
267 '{DAV:}someprop' : 'Complex value right here'
268 }, properties)*/
269 return true;
270 },
271
272
273 /**
274 * @depends testParseProperties
275 */
276 "testParsePropertiesNoProperties": function() {
277 parser.parseString('<?xml version="1.0"?>\
278<root xmlns="DAV:">\
279<prop>\
280</prop>\
281</root>');
282
283 //dom = Util.loadDOMDocument(xml);
284 //properties = Util.parseProperties(dom.firstChild);
285
286 /*return Assert.equal(array(), properties)*/
287 return true;
288 },
289
290 "testParsePropertiesMapHref": function() {
291 parser.parseString('<?xml version="1.0"?>\
292<root xmlns="DAV:">\
293<prop>\
294<displayname>Calendars</displayname>\
295</prop>\
296<prop>\
297<someprop><href>http://sabredav.org/</href></someprop>\
298</prop>\
299</root>');
300
301 //dom = Util.loadDOMDocument(xml);
302 //properties = Util.parseProperties(dom.firstChild, {'{DAV:}someprop':'Sabre_DAV_Property_Href'});
303
304 /*return Assert.equal({
305 '{DAV:}displayname' : 'Calendars',
306 '{DAV:}someprop' : new Sabre_DAV_Property_Href('http://sabredav.org/',false)
307 }, properties)*/
308 return true;
309 }
310};
311var count = 0, max = 5;
312for (var test in Tests) {
313 ++count;
314 Tests[test]();
315 console.log(count + " " + test + " executed.");
316 if (count >= max)
317 break;
318}