docker-nginx-webdav-nononsense
docker-nginx-webdav-nononsense copied to clipboard
Attempt to reach compliance with litmus
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.
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.
Any more update on this?
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.
The current state of things seems good enough that "it woks everywhere".