Subject: Litmus test questions

From: Evert | Rooftop <[email-masked]>
Date: Wed, 27 Aug 2008 18:11:08 -0400

Hey guys,

I sent these emails to the litmus mailing list, but they never seem to  
arrive.. I'm hoping this list is an appropriate place to ask these  
litmus related questions:

First problem is with property test #13:

13. propreplace........... FAIL (PROPPATCH on `/litmus/prop2': http://hidden/litmus/prop2 
: 404 Not Found http://hidden/litmus/prop2: 404 Not Found http://hidden/litmus/prop2 
: 404 Not Foundhttp://hidden/litmus/prop2: 404 Not Found http://hidden/litmus/prop2 
: 404 Not Found )

As far as I can tell, the last mutation on /litmus/prop2 happened in  
Test 11 (propdeletes), which brings the list of properties to this  
state:

prop1 (deleted)
prop2 (deleted)
prop3 (deleted)
prop4 (deleted)
prop5 value5
prop6 value6
prop7 value7
prop8 value8
prop9 value9

Test 12 (propget), returns this :

<?xml version="1.0" encoding="UTF-8"?>
<d:multistatus xmlns:d="DAV:">
<d:response>
<d:href>/litmus/prop2</d:href>
<d:propstat>
<d:prop>
<prop5 xmlns="http://webdav.org/neon/litmus/">value5</prop5>
<prop6 xmlns="http://webdav.org/neon/litmus/">value6</prop6>
<prop7 xmlns="http://webdav.org/neon/litmus/">value7</prop7>
<prop8 xmlns="http://webdav.org/neon/litmus/">value8</prop8>
<prop9 xmlns="http://webdav.org/neon/litmus/">value9</prop9>
</d:prop>
<d:status>HTTP/1.1 200 Ok</d:status>
</d:propstat>
<d:propstat>
<d:prop>
<prop0 xmlns="http://webdav.org/neon/litmus/"/>
<prop1 xmlns="http://webdav.org/neon/litmus/"/>
<prop2 xmlns="http://webdav.org/neon/litmus/"/>
<prop3 xmlns="http://webdav.org/neon/litmus/"/>
<prop4 xmlns="http://webdav.org/neon/litmus/"/>
</d:prop>
<d:status>HTTP/1.1 404 Not Found</d:status>
</d:propstat>
</d:response>
</d:multistatus>

(Expected result, and this is also a 'pass')

Then test 13 starts, which requests:

5178 <D:propertyupdate xmlns:D="DAV:"><D:remove><D:prop><prop0 xmlns="http://webdav.org/neon/litmus/ 
"></prop0></D:prop></D:remove>
5179 <D:remove><D:prop><prop1 xmlns="http://webdav.org/neon/litmus/"></ 
prop1></D:prop></D:remove>
5180 <D:remove><D:prop><prop2 xmlns="http://webdav.org/neon/litmus/"></ 
prop2></D:prop></D:remove>
5181 <D:remove><D:prop><prop3 xmlns="http://webdav.org/neon/litmus/"></ 
prop3></D:prop></D:remove>
5182 <D:remove><D:prop><prop4 xmlns="http://webdav.org/neon/litmus/"></ 
prop4></D:prop></D:remove>
5183 <D:set><D:prop><prop5 xmlns="http://webdav.org/neon/ 
litmus/">newvalue5</prop5></D:prop></D:set>
5184 <D:set><D:prop><prop6 xmlns="http://webdav.org/neon/ 
litmus/">newvalue6</prop6></D:prop></D:set>
5185 <D:set><D:prop><prop7 xmlns="http://webdav.org/neon/ 
litmus/">newvalue7</prop7></D:prop></D:set>
5186 <D:set><D:prop><prop8 xmlns="http://webdav.org/neon/ 
litmus/">newvalue8</prop8></D:prop></D:set>
5187 <D:set><D:prop><prop9 xmlns="http://webdav.org/neon/ 
litmus/">newvalue9</prop9></D:prop></D:set>
5188 </D:propertyupdate>

This was the first oddnesss, since it actually requests to delete the  
already deleted properties at first. According to spec.. I return the  
appropriate 404's and 200's:

5204 Read block (1793 bytes):
5205 [<?xml version="1.0" encoding="UTF-8"?>
5206 <d:multistatus xmlns:d="DAV:">
5207  <d:response>
5208   <d:href>litmus/prop2</d:href>
5209   <d:propstat>
5210    <d:prop>
5211     <X:prop0 xmlns:X="http://webdav.org/neon/litmus/"></X:prop0>
5212    </d:prop>
5213    <d:status>HTTP/1.1 404 Not Found</d:status>
5214   </d:propstat>
5215   <d:propstat>
5216    <d:prop>
5217     <X:prop1 xmlns:X="http://webdav.org/neon/litmus/"></X:prop1>
5218    </d:prop>
5219    <d:status>HTTP/1.1 404 Not Found</d:status>
5220   </d:propstat>
5221   <d:propstat>
5222    <d:prop>
5223     <X:prop2 xmlns:X="http://webdav.org/neon/litmus/"></X:prop2>
5224    </d:prop>
5225    <d:status>HTTP/1.1 404 Not Found</d:status>
5226   </d:propstat>
5227   <d:propstat>
5228    <d:prop>
5229     <X:prop3 xmlns:X="http://webdav.org/neon/litmus/"></X:prop3>
5230    </d:prop>
5231    <d:status>HTTP/1.1 404 Not Found</d:status>
5232   </d:propstat>
5233   <d:propstat>
5234    <d:prop>
5235     <X:prop4 xmlns:X="http://webdav.org/neon/litmus/"></X:prop4>
5236    </d:prop>
5237    <d:status>HTTP/1.1 404 Not Found</d:status>
5238   </d:propstat>
5239   <d:propstat>
5240    <d:prop>
5241     <X:prop5 xmlns:X="http://webdav.org/neon/litmus/"></X:prop5>
5242    </d:prop>
5243    <d:status>HTTP/1.1 200 Ok</d:status>
5244   </d:propstat>
5245   <d:propstat>
5246    <d:prop>
5247     <X:prop6 xmlns:X="http://webdav.org/neon/litmus/"></X:prop6>
5248    </d:prop>
5249    <d:status>HTTP/1.1 200 Ok</d:status>
5250   </d:propstat>
5251   <d:propstat>
5252    <d:prop>
5253     <X:prop7 xmlns:X="http://webdav.org/neon/litmus/"></X:prop7>
5254    </d:prop>
5255    <d:status>HTTP/1.1 200 Ok</d:status>
5256   </d:propstat>
5257   <d:propstat>
5258    <d:prop>
5259     <X:prop8 xmlns:X="http://webdav.org/neon/litmus/"></X:prop8>
5260    </d:prop>
5261    <d:status>HTTP/1.1 200 Ok</d:status>
5262   </d:propstat>
5263   <d:propstat>
5264    <d:prop>
5265     <X:prop9 xmlns:X="http://webdav.org/neon/litmus/"></X:prop9>
5266    </d:prop>
5267    <d:status>HTTP/1.1 200 Ok</d:status>
5268   </d:propstat>
5269  </d:response>
5270 </d:multistatus>
5271 ]

So, my question.. what am I doing wrong?

Second one, In property test 23, litmus makes the following request:

<?xml version="1.0" encoding="utf-8" ?><propertyupdate  
xmlns='DAV:'><set><prop><t:valnspace xmlns:t='http://webdav.org/neon/litmus/' 
 ><foo xmlns='bar'/></t:valnspace></prop></set></propertyupdate>

The 'bar' namespace is an invalid one, and expat is quickly to respond  
with: xmlns: URI bar is not absolute, so I respond with a 400 Bad  
Request..

This is also a FAIL for litmus, so I'm curious to what _should_ be  
returned in this situation..

Evert

---

From: Julian Reschke <[email-masked]>
Date: Thu, 28 Aug 2008 09:52:01 +0200

Evert | Rooftop wrote:
> ...
> ...

"Specifying the removal of a property that does not exist is not an 
error." -- <http://greenbytes.de/tech/webdav/rfc4918.html#rfc.section.14.23>

> ...
> xmlns='DAV:'><set><prop><t:valnspace 
> xmlns:t='http://webdav.org/neon/litmus/'><foo 
> xmlns='bar'/></t:valnspace></prop></set></propertyupdate>
> 
> with: xmlns: URI bar is not absolute, so I respond with a 400 Bad Request..
> 
 > ...

Wow, that's the first time I hear that an XML parser is choking on a 
namespace name.

Whether or not "bar" is a legal namespace name may be controversial; my 
recollection is that the W3C, after lots and lots of messages exchanged 
about that topic, basically deprecated them.

Potentially there's a config switch in expat where you can switch off 
the checking. It's well intended, but I wouldn't me surprised that 
insisting on it may break existing WebDAV clients.

BR, Julian

---

From: Evert | Rooftop <[email-masked]>
Date: Thu, 28 Aug 2008 11:03:17 -0400

On 28-Aug-08, at 3:52 AM, Julian Reschke wrote:

>
> Evert | Rooftop wrote:
>> ...
>> This was the first oddnesss, since it actually requests to delete  
>> the already deleted properties at first. According to spec.. I  
>> return the appropriate 404's and 200's:
>> ...
>
> error." -- <http://greenbytes.de/tech/webdav/rfc4918.html#rfc.section.14.23 
> >

Thanks for this ..

>> The 'bar' namespace is an invalid one, and expat is quickly to  
>> respond with: xmlns: URI bar is not absolute, so I respond with a  
>> 400 Bad Request..
> Whether or not "bar" is a legal namespace name may be controversial;  
> my recollection is that the W3C, after lots and lots of messages  
> exchanged about that topic, basically deprecated them.
>
> Potentially there's a config switch in expat where you can switch  
> off the checking. It's well intended, but I wouldn't me surprised  
> that insisting on it may break existing WebDAV clients.
>
> BR, Julian
>

I'm going to try to figure out a way around these warnings.. I  
actually also replace 'DAV:' with urn:DAV before parsing, for the same  
reasons..

Thanks a lot, this is really helpful..

Evert