docker-nginx-webdav-nononsense icon indicating copy to clipboard operation
docker-nginx-webdav-nononsense copied to clipboard

Attempt to reach compliance with litmus

Open dgraziotin opened this issue 3 years ago • 1 comments

litmus is "a WebDAV server test suite, which aims to test whether a server is compliant with the WebDAV protocol as specified in RFC2518;".

I containerized it under dgraziotin/litmus. It can be run with docker run --rm -it dgraziotin/litmus:0.13 http://ip:port user password.

Current output:

-> running `basic':
 0. init.................. pass
 1. begin................. pass
 2. options............... FAIL (server does not claim WebDAV compliance)
 3. put_get............... pass
 4. put_get_utf8_segment.. pass
 5. put_no_parent......... pass
 6. mkcol_over_plain...... pass
 7. delete................ pass
 8. delete_null........... pass
 9. delete_fragment....... WARNING: DELETE removed collection resource with Request-URI including fragment; unsafe
    ...................... pass (with 1 warning)
10. mkcol................. pass
11. mkcol_again........... pass
12. delete_coll........... pass
13. mkcol_no_parent....... pass
14. mkcol_with_body....... pass
15. finish................ pass
<- summary for `basic': of 16 tests run: 15 passed, 1 failed. 93.8%
-> 1 warning was issued.

dgraziotin avatar Dec 09 '21 15:12 dgraziotin

Current status:

-> running `basic':
 0. init.................. pass
 1. begin................. pass
 2. options............... pass
 3. put_get............... pass
 4. put_get_utf8_segment.. pass
 5. put_no_parent......... pass
 6. mkcol_over_plain...... pass
 7. delete................ pass
 8. delete_null........... pass
 9. delete_fragment....... WARNING: DELETE removed collection resource with Request-URI including fragment; unsafe
    ...................... pass (with 1 warning)
10. mkcol................. pass
11. mkcol_again........... pass
12. delete_coll........... pass
13. mkcol_no_parent....... pass
14. mkcol_with_body....... pass
15. finish................ pass
<- summary for `basic': of 16 tests run: 16 passed, 0 failed. 100.0%
-> 1 warning was issued.
-> running `copymove':
 0. init.................. pass
 1. begin................. pass
 2. copy_init............. pass
 3. copy_simple........... WARNING: COPY to new resource should give 201 (RFC2518:S8.8.5)
    ...................... pass (with 1 warning)
 4. copy_overwrite........ FAIL (COPY overwrites collection: 409 Conflict)
 5. copy_nodestcoll....... WARNING: COPY to non-existant collection '/litmus/nonesuch' gave '500 Internal Server Error' not 409 (RFC2518:S8.8.5)
    ...................... pass (with 1 warning)
 6. copy_cleanup.......... pass
 7. copy_coll............. pass
 8. copy_shallow.......... pass
 9. move.................. WARNING: MOVE to new resource didn't give 201
    ...................... FAIL (MOVE overwrites collection `/litmus/movecoll/' to `/litmus/movedest': 409 Conflict)
10. move_coll............. pass
11. move_cleanup.......... pass
12. finish................ pass
<- summary for `copymove': of 13 tests run: 11 passed, 2 failed. 84.6%
-> 3 warnings were issued.

dgraziotin avatar Dec 17 '21 15:12 dgraziotin

Any more update on this?

EdenSpire avatar Nov 21 '22 01:11 EdenSpire

Not much, no. Most of what is left out does not depend much on me but on upstream. This is with nginx-1.23.2.

docker run --rm -it dgraziotin/litmus:0.13  http://127.0.0.1:32080 user password
Unable to find image 'dgraziotin/litmus:0.13' locally
0.13: Pulling from dgraziotin/litmus
59bf1c3509f3: Already exists 
5f097145da74: Pull complete 
Digest: sha256:81743e2503bec113fbf5352fb4d6c5bbbad40fbdfc925f5bb24bfe6745515bbc
Status: Downloaded newer image for dgraziotin/litmus:0.13
-> running `basic':
 0. init.................. pass
 1. begin................. pass
 2. options............... pass
 3. put_get............... pass
 4. put_get_utf8_segment.. pass
 5. put_no_parent......... pass
 6. mkcol_over_plain...... pass
 7. delete................ pass
 8. delete_null........... pass
 9. delete_fragment....... WARNING: DELETE removed collection resource with Request-URI including fragment; unsafe
    ...................... pass (with 1 warning)
10. mkcol................. pass
11. mkcol_again........... pass
12. delete_coll........... pass
13. mkcol_no_parent....... pass
14. mkcol_with_body....... pass
15. finish................ pass
<- summary for `basic': of 16 tests run: 16 passed, 0 failed. 100.0%
-> 1 warning was issued.
-> running `copymove':
 0. init.................. pass
 1. begin................. pass
 2. copy_init............. pass
 3. copy_simple........... WARNING: COPY to new resource should give 201 (RFC2518:S8.8.5)
    ...................... pass (with 1 warning)
 4. copy_overwrite........ FAIL (COPY overwrites collection: 409 Conflict)
 5. copy_nodestcoll....... WARNING: COPY to non-existant collection '/litmus/nonesuch' gave '500 Internal Server Error' not 409 (RFC2518:S8.8.5)
    ...................... pass (with 1 warning)
 6. copy_cleanup.......... pass
 7. copy_coll............. pass
 8. copy_shallow.......... pass
 9. move.................. WARNING: MOVE to new resource didn't give 201
    ...................... FAIL (MOVE overwrites collection `/litmus/movecoll/' to `/litmus/movedest': 409 Conflict)
10. move_coll............. pass
11. move_cleanup.......... pass
12. finish................ pass
<- summary for `copymove': of 13 tests run: 11 passed, 2 failed. 84.6%
-> 3 warnings were issued.
See debug.log for network/debug traces.

This is not a major issue because most client implementation do not follow the RFC as well. WebDAV is a bit of a jungle in terms of implementation. Otherwise, my image would not be needed at all. What matters more is that it works for most people.

dgraziotin avatar Nov 22 '22 13:11 dgraziotin

The current state of things seems good enough that "it woks everywhere".

dgraziotin avatar Jan 15 '23 19:01 dgraziotin