Add litmus compliance

This commit is contained in:
bohwaz 2022-10-01 01:37:03 +02:00
parent 27548b45db
commit c266159a19

108
README.md
View file

@ -24,7 +24,7 @@ This server features:
* Support for [RFC 3230](https://greenbytes.de/tech/webdav/rfc3230.xhtml) to get the MD5 digest hash of a file (to check integrity) on `HEAD` requests (only MD5 is supported so far) * Support for [RFC 3230](https://greenbytes.de/tech/webdav/rfc3230.xhtml) to get the MD5 digest hash of a file (to check integrity) on `HEAD` requests (only MD5 is supported so far)
* Support for `Content-MD5` with `PUT` requests, see [dCache documentation for details](https://dcache.org/old/manuals/UserGuide-6.0/webdav.shtml#checksums) * Support for `Content-MD5` with `PUT` requests, see [dCache documentation for details](https://dcache.org/old/manuals/UserGuide-6.0/webdav.shtml#checksums)
* Support for some of the [Microsoft proprietary properties](https://greenbytes.de/tech/webdav/webdavfaq.html) * Support for some of the [Microsoft proprietary properties](https://greenbytes.de/tech/webdav/webdavfaq.html)
* Passes [Litmus compliance tests](https://github.com/tolsen/litmus) for basic, copymove, props * Passes most of the [Litmus compliance tests](https://github.com/tolsen/litmus)
## NextCloud compatibility ## NextCloud compatibility
@ -58,25 +58,37 @@ They are lightweight and easy to use in your own software to add support for Web
## Litmus compliance tests ## Litmus compliance tests
Tests were performed using litmus source code as of December 13, 2017 from [the Github repo](https://github.com/tolsen/litmus).
``` ```
-> running `basic': -> running `http':
0. init.................. pass
1. begin................. pass
2. expect100............. pass
3. finish................ pass
<- summary for `http': of 4 tests run: 4 passed, 0 failed. 100.0%
-> running `basic':
0. init.................. pass 0. init.................. pass
1. begin................. pass 1. begin................. pass
2. options............... pass 2. options............... pass
3. put_get............... pass 3. put_get............... pass
4. put_get_utf8_segment.. pass 4. put_get_utf8_segment.. pass
5. put_no_parent......... pass 5. mkcol_over_plain...... pass
6. mkcol_over_plain...... pass 6. delete................ pass
7. delete................ pass 7. delete_null........... pass
8. delete_null........... pass 8. delete_fragment....... pass
9. delete_fragment....... pass 9. mkcol................. pass
10. mkcol................. pass 10. mkcol_percent_encoded. pass
11. mkcol_again........... pass 11. mkcol_again........... pass
12. delete_coll........... pass 12. delete_coll........... pass
13. mkcol_no_parent....... pass 13. mkcol_no_parent....... pass
14. mkcol_with_body....... pass 14. mkcol_with_body....... pass
15. finish................ pass 15. mkcol_forbidden....... pass
<- summary for `basic': of 16 tests run: 16 passed, 0 failed. 100.0% 16. chk_ETag.............. pass
17. finish................ pass
<- summary for `basic': of 18 tests run: 18 passed, 0 failed. 100.0%
-> running `copymove': -> running `copymove':
0. init.................. pass 0. init.................. pass
1. begin................. pass 1. begin................. pass
@ -85,13 +97,26 @@ They are lightweight and easy to use in your own software to add support for Web
4. copy_overwrite........ pass 4. copy_overwrite........ pass
5. copy_nodestcoll....... pass 5. copy_nodestcoll....... pass
6. copy_cleanup.......... pass 6. copy_cleanup.......... pass
7. copy_coll............. pass 7. copy_content_check.... pass
8. copy_shallow.......... pass 8. copy_coll_depth....... pass
9. move.................. pass 9. copy_coll............. pass
10. move_coll............. pass 10. depth_zero_copy....... pass
11. move_cleanup.......... pass 11. copy_med_on_coll...... pass
12. finish................ pass 12. move.................. pass
<- summary for `copymove': of 13 tests run: 13 passed, 0 failed. 100.0% 13. move_coll............. pass
14. move_cleanup.......... pass
15. move_content_check.... pass
16. move_collection_check. pass
17. finish................ pass
<- summary for `copymove': of 18 tests run: 18 passed, 0 failed. 100.0%
```
With this litmus version, `props` and `locks` tests currently fail.
But they mostly pass with litmus 0.13-3 supplied by Debian:
```
-> running `props': -> running `props':
0. init.................. pass 0. init.................. pass
1. begin................. pass 1. begin................. pass
@ -124,8 +149,55 @@ They are lightweight and easy to use in your own software to add support for Web
28. propcleanup........... pass 28. propcleanup........... pass
29. finish................ pass 29. finish................ pass
<- summary for `props': of 30 tests run: 30 passed, 0 failed. 100.0% <- summary for `props': of 30 tests run: 30 passed, 0 failed. 100.0%
```
-> running `locks':
0. init.................. pass
1. begin................. pass
2. options............... pass
3. precond............... pass
4. init_locks............ pass
5. put................... pass
6. lock_excl............. pass
7. discover.............. pass
8. refresh............... pass
9. notowner_modify....... pass
10. notowner_lock......... pass
11. owner_modify.......... pass
12. notowner_modify....... pass
13. notowner_lock......... pass
14. copy.................. pass
15. cond_put.............. pass
16. fail_cond_put......... pass
17. cond_put_with_not..... pass
18. cond_put_corrupt_token WARNING: PUT failed with 400 not 423
...................... pass (with 1 warning)
19. complex_cond_put...... pass
20. fail_complex_cond_put. pass
21. unlock................ pass
22. fail_cond_put_unlocked pass
23. lock_shared........... pass
24. notowner_modify....... pass
25. notowner_lock......... FAIL (LOCK on locked resource)
26. owner_modify.......... pass
27. double_sharedlock..... FAIL (shared LOCK on locked resource:
423 Locked)
28. notowner_modify....... pass
29. notowner_lock......... pass
30. unlock................ pass
31. prep_collection....... pass
32. lock_collection....... pass
33. owner_modify.......... FAIL (PROPPATCH on locked resouce on `/files/demo/litmus/lockcoll/lockme.txt': 423 Locked)
34. notowner_modify....... pass
35. refresh............... pass
36. indirect_refresh...... pass
37. unlock................ pass
38. unmapped_lock......... WARNING: LOCK on unmapped url returned 200 not 201 (RFC4918:S7.3)
...................... pass (with 1 warning)
39. unlock................ pass
40. finish................ pass
<- summary for `locks': of 41 tests run: 38 passed, 3 failed. 92.7%
-> 2 warnings were issued.
````
## Author ## Author
BohwaZ. Contact me on: IRC = bohwaz@irc.libera.chat / Mastodon = https://mamot.fr/@bohwaz / Twitter = @bohwaz BohwaZ. Contact me on: IRC = bohwaz@irc.libera.chat / Mastodon = https://mamot.fr/@bohwaz / Twitter = @bohwaz