- From: Julian Reschke <julian.reschke@gmx.de>
- Date: Sat, 22 Oct 2005 21:45:17 +0200
- To: w3c-dist-auth@w3.org
Hi. Below is a test script (for Microsoft's XMLHTTPRequest component) that tests various forms of "If" headers. Basically it does some sanity checks first, and then tries the new syntax allowing comma-separated lists (or multiple headers). Of the servers I tested, none supported the new format (not surprisingly), but most (*) replied with 400 (bad request). This means clients can test that, and there doesn't seem to be any need for a new compliance class just for this use case. Best regards, Julian (* I notified the maintainers of the other two servers, one of which happens to be myself) -- var req = new ActiveXObject ("MSXML2.ServerXMLHTTP"); if (WScript.Arguments.length == 0) { WScript.Echo("Test case If header eval"); WScript.Echo("Usage: cscript if_fail.js URI {username} {password}"); WScript.Quit(2); } var uri = WScript.Arguments(0); var user = null; var pwd = null; function dumpResponse(r) { WScript.Echo(r.status); WScript.Echo(r.getAllResponseHeaders()); WScript.Echo(r.responseText); } if (WScript.Arguments.length > 1) { user = WScript.Arguments(1); } if (WScript.Arguments.length > 2) { pwd = WScript.Arguments(2); } var x = 1; function testPut(ifheader, desc) { WScript.Echo("\n\n\nTest case " + x + ", If header: " + ifheader); WScript.Echo("(" + desc + ")"); req.open("PUT", uri, false, user, pwd); if (ifheader != null) req.setRequestHeader("If", ifheader); req.send("test case " + x); dumpResponse(req); x += 1; } // delete content WScript.Echo("DELETE " + uri); req.open("DELETE", uri, false, user, pwd); req.send("foobar"); dumpResponse(req); testPut(null, "initial content"); if (req.status < 200 || req.status >= 300) { WScript.Echo("unexpected status upon PUT"); WScript.Quit(2); } testPut("(<DAV:no-lock>)", "const false"); if (req.status != 412) { WScript.Echo("unexpected status upon PUT"); } testPut("(Not <DAV:no-lock>)", "const true"); if (req.status != 204 && req.status != 200) { WScript.Echo("unexpected status upon PUT"); } testPut("(<DAV:no-lock> Not <DAV:no-lock>)", "const false"); if (req.status != 412) { WScript.Echo("unexpected status upon PUT"); } testPut("(<DAV:no-lock>), (Not <DAV:no-lock>)", "const true using comma notation"); if (req.status == 200 || req.status == 204) { WScript.Echo("Server seems to understand ',' in If-List as per RFC2518bis"); } else if (req.status == 400) { WScript.Echo("Server seems not to understand ',' in If-List as per RFC2518bis, rejecting the request with 400"); } else { WScript.Echo("unexpected status upon PUT"); } testPut("(Not <DAV:no-lock>), (Not <DAV:no-lock>)", "const false using comma notation"); if (req.status == 412) { WScript.Echo("Server seems to understand ',' in If-List as per RFC2518bis"); } else if (req.status == 400) { WScript.Echo("Server seems not to understand ',' in If-List as per RFC2518bis, rejecting the request with 400"); } else { WScript.Echo("unexpected status upon PUT"); }
Received on Saturday, 22 October 2005 19:45:47 UTC