Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tests for Precedence of Preconditions #109

Open
JakeChampion opened this issue Oct 17, 2022 · 1 comment
Open

Tests for Precedence of Preconditions #109

JakeChampion opened this issue Oct 17, 2022 · 1 comment
Labels

Comments

@JakeChampion
Copy link
Contributor

Howdy, this project is excellent, I'm really happy to see it exists ☺️

I've been working on implementing support for Conditional Requests in a project and wanted to ensure I've implemented the precedence of preconditions correctly and I couldn't find any tests in this project for that section of the RFC.

I've had a go at writing out all the combinations possible from the precedence rules and I came up with 146 possible tests, I've included them in the section below.

My first question is, does 146 sound like the correct total? I'd like to ensure I've got all the combinations

My second question is, would including those tests in this project be correct? If so, I can possibly work on converting my tests into the format this project uses ☺️

All combinations possible from the precedence of preconditions
  1. When If-Match, and evaluation of If-Match is false, return 412 or 2XX
  2. When If-Match, and evaluation of If-Match is true, perform the requested method and respond according to its success or failure.
  3. When If-Unmodified-Since, and evaluation of If-Unmodified-Since is false, return 412 or 2xx
  4. When If-Unmodified-Since, and evaluation of If-Unmodified-Since is true, perform the requested method and respond according to its success or failure.
  5. When If-Modified-Since and method is GET or HEAD, and evaluation of If-Modified-Since is false, return 304
  6. When If-Modified-Since and method is not GET or HEAD, do not use If-Modified-Since is false, perform the requested method and respond according to its success or failure.
  7. When If-None-Match, and evaluation of If-None-Match is false, and method is GET/HEAD, return 304
  8. When If-None-Match, and evaluation of If-None-Match is false, and method is not GET/HEAD, return 412
  9. When If-None-Match, and evaluation of If-None-Match is true, perform the requested method and respond according to its success or failure.
  10. When If-Range, do not use If-Range, perform the requested method and respond according to its success or failure.
  11. When If-Range and Range, and method is not GET, do not use If-Range, perform the requested method and respond according to its success or failure.
  12. When If-Range and Range, and method is GET, and evaluation of If-Range is true, return 206
  13. When If-Range and Range, and method is GET, and evaluation of If-Range is false, return 200
  14. When If-Match and If-Unmodified-Since, and evaluation of If-Match is false, return 412 or 2XX
  15. When If-Match and If-Unmodified-Since, and evaluation of If-Match is true, do not use If-Unmodified-Since, perform the requested method and respond according to its success or failure.
  16. When If-Match and If-Modified-Since and evaluation of If-Match is false, return 412 or 2xx
  17. When If-Match and If-Modified-Since and evaluation of If-Match is true and method is GET/HEAD, do not use If-Modified-Since, perform the requested method and respond according to its success or failure.
  18. When If-Match and If-Modified-Since and evaluation of If-Match is true and method is not GET/HEAD, do not use If-Modified-Since, perform the requested method and respond according to its success or failure.
  19. When If-Match and If-None-Match and evaluation of If-Match is false, return 412 or 2xx
  20. When If-Match and If-None-Match and evaluation of If-Match is true and evaluation of If-None-Match is false, and method is GET/HEAD, return 304
  21. When If-Match and If-None-Match and evaluation of If-Match is true and evaluation of If-None-Match is false, and method is not GET/HEAD, return 412
  22. When If-Match and If-Range and evaluation of If-Match is false, return 412 or 2xx
  23. When If-Match and If-Range and method is not GET, do not use If-Range, perform the requested method and respond according to its success or failure.
  24. When If-Match and If-Range and Range and method is not GET, do not use If-Range
  25. When If-Match and If-Range and Range and method is GET, and evaluation of If-Range is true, return 206
  26. When If-Match and If-Range and Range and method is GET, and evaluation of If-Range is false, return 200
  27. When If-Unmodified-Since and If-Modified-Since and evaluation of If-Unmodified-Since is false, return 412 or 2xx
  28. When If-Unmodified-Since and If-Modified-Since and evaluation of If-Unmodified-Since is true and evaluation of If-Modified-Since is false, return 304
  29. When If-Unmodified-Since and If-Modified-Since and evaluation of If-Unmodified-Since is true and method is not GET/HEAD do not use If-Modified-Since, perform the requested method and respond according to its success or failure.
  30. When If-Unmodified-Since and If-Modified-Since and evaluation of If-Unmodified-Since is true and method is GET/HEAD and evaluation of If-Modified-Since is false, return 304
  31. When If-Unmodified-Since and If-Modified-Since and evaluation of If-Unmodified-Since is true and method is GET/HEAD and evaluation of If-Modified-Since is true, perform the requested method and respond according to its success or failure.
  32. When If-Unmodified-Since and If-None-Match and evaluation of If-Unmodified-Since is false, return 412 or 2xx
  33. When If-Unmodified-Since and If-None-Match and evaluation of If-Unmodified-Since is true and evaluation of If-None-Match is false, and method is GET/HEAD, return 304
  34. When If-Unmodified-Since and If-None-Match and evaluation of If-Unmodified-Since is true and evaluation of If-None-Match is false, and method is not GET/HEAD, return 412
  35. When If-Unmodified-Since and If-Range and evaluation of If-Unmodified-Since is false, return 412 or 2xx
  36. When If-Unmodified-Since and If-Range and method is not GET, do not use If-Range, perform the requested method and respond according to its success or failure.
  37. When If-Unmodified-Since and If-Range and Range and method is not GET, do not use If-Range, perform the requested method and respond according to its success or failure.
  38. When If-Unmodified-Since and If-Range and Range and method is GET, and evaluation of If-Range is true, return 206
  39. When If-Unmodified-Since and If-Range and Range and method is GET, and evaluation of If-Range is false, return 200
  40. When If-Modified-Since and If-None-Match and evaluation of If-None-Match is false, and method is GET/HEAD, return 304
  41. When If-Modified-Since and If-None-Match and evaluation of If-None-Match is false, and method is not GET/HEAD, return 412
  42. When If-Modified-Since and If-None-Match and evaluation of If-None-Match is true, do not use If-Modified-Since, perform the requested method and respond according to its success or failure.
  43. When If-Modified-Since and If-Range and method is GET or HEAD and evaluation of If-Modified-Since is false, return 304
  44. When If-Modified-Since and If-Range and method is HEAD and evaluation of If-Modified-Since is true, do not use If-Range
  45. When If-Modified-Since and If-Range and method is GET and evaluation of If-Modified-Since is true, do not use If-Range
  46. When If-Modified-Since and If-Range and method is GET and Range and evaluation of If-Range is true, return 206
  47. When If-Modified-Since and If-Range and method is GET and Range and evaluation of If-Range is false, return 200
  48. When If-None-Match and If-Range and evaluation of If-None-Match is false, and method is GET/HEAD, return 304
  49. When If-None-Match and If-Range and evaluation of If-None-Match is false, and method is not GET/HEAD, return 412
  50. When If-None-Match and If-Range and evaluation of If-None-Match is true, do not use If-Range
  51. When If-None-Match and If-Range and Range and evaluation of If-None-Match is true and method is not GET, do not use If-Range
  52. When If-None-Match and If-Range and Range and evaluation of If-None-Match is true and method is GET and evaluation of If-Range is true, return 206
  53. When If-None-Match and If-Range and Range and evaluation of If-None-Match is true and method is GET and evaluation of If-Range is false, return 200
  54. When If-Match and If-Unmodified-Since and If-Modified-Since, and evaluation of If-Match is false, return 412 or 2xx
  55. When If-Match and If-Unmodified-Since and If-Modified-Since, and evaluation of If-Match is true, do not use If-Unmodified-Since
  56. When If-Match and If-Unmodified-Since and If-Modified-Since, and evaluation of If-Match is true and method is not GET or HEAD, do not use If-Unmodified-Since and do not use If-Modified-Since
  57. When If-Match and If-Unmodified-Since and If-Modified-Since, and evaluation of If-Match is true and method is GET or HEAD, do not use If-Unmodified-Since and evaluation of If-Modified-Since is false, return 304
  58. When If-Match and If-Unmodified-Since and If-Modified-Since, and evaluation of If-Match is true and method is GET or HEAD, do not use If-Unmodified-Since and evaluation of If-Modified-Since is true, perform the requested method and respond according to its success or failure
  59. When If-Match and If-Unmodified-Since and If-None-Match, and evaluation of If-Match is false, return 412 or 2xx
  60. When If-Match and If-Unmodified-Since and If-None-Match, and evaluation of If-Match is true, do not use If-Unmodified-Since, and evaluation of If-None-Match is false and method is GET or HEAD, return 304
  61. When If-Match and If-Unmodified-Since and If-None-Match, and evaluation of If-Match is true, do not use If-Unmodified-Since, and evaluation of If-None-Match is false and method is not GET or HEAD, return 412
  62. When If-Match and If-Unmodified-Since and If-None-Match, and evaluation of If-Match is true, do not use If-Unmodified-Since, and evaluation of If-None-Match is true, perform the requested method and respond according to its success or failure
  63. When If-Match and If-Unmodified-Since and If-Range, and evaluation of If-Match is false, return 412 or 2xx
  64. When If-Match and If-Unmodified-Since and If-Range, and evaluation of If-Match is true, do not use If-Unmodified-Since, and do not use If-Range, perform the requested method and respond according to its success or failure
  65. When If-Match and If-Unmodified-Since and If-Range and Range, and evaluation of If-Match is true, do not use If-Unmodified-Since, and evaluation of If-Range is true, return 206
  66. When If-Match and If-Unmodified-Since and If-Range and Range, and evaluation of If-Match is true, do not use If-Unmodified-Since, and evaluation of If-Range is false, return 200
  67. When If-Match and If-Modified-Since and If-None-Match, and evaluation of If-Match is false, return 412 or 2xx
  68. When If-Match and If-Modified-Since and If-None-Match, and evaluation of If-Match is true, and evaluation of If-None-Match is false and method is GET or HEAD, return 304
  69. When If-Match and If-Modified-Since and If-None-Match, and evaluation of If-Match is true, and evaluation of If-None-Match is false and method is not GET or HEAD, return 412
  70. When If-Match and If-Modified-Since and If-None-Match, and evaluation of If-Match is true, and evaluation of If-None-Match is true, and method is not GET or HEAD, do not use If-Modified-Since, perform the requested method and respond according to its success or failure
  71. When If-Match and If-Modified-Since and If-None-Match, and evaluation of If-Match is true, and evaluation of If-None-Match is true, and method is GET or HEAD, and evaluation of If-Modified-Since is false, return 304
  72. When If-Match and If-Modified-Since and If-None-Match, and evaluation of If-Match is true, and evaluation of If-None-Match is true, and method is GET or HEAD, and evaluation of If-Modified-Since is true, perform the requested method and respond according to its success or failure
  73. When If-Match and If-Modified-Since and If-Range, and evaluation of If-Match is false, return 412 or 2xx
  74. When If-Match and If-Modified-Since and If-Range, and evaluation of If-Match is true and method is not GET or HEAD, do not use If-Modified-Since, do not use If-Range, perform the requested method and respond according to its success or failure
  75. When If-Match and If-Modified-Since and If-Range, and evaluation of If-Match is true and method is GET or HEAD, and evaluation of If-Modified-Since is false, return 304
  76. When If-Match and If-Modified-Since and If-Range, and evaluation of If-Match is true and method is GET or HEAD, and evaluation of If-Modified-Since is true, do not use If-Range, perform the requested method and respond according to its success or failure
  77. When If-Match and If-Modified-Since and If-Range and Range, and evaluation of If-Match is true and method is not GET, and evaluation of If-Modified-Since is true, do not use If-Range, perform the requested method and respond according to its success or failure
  78. When If-Match and If-Modified-Since and If-Range and Range, and evaluation of If-Match is true and method is GET, and evaluation of If-Modified-Since is true, and evaluation of If-Range is true, return 206
  79. When If-Match and If-Modified-Since and If-Range and Range, and evaluation of If-Match is true and method is GET, and evaluation of If-Modified-Since is true, and evaluation of If-Range is false, return 200
  80. When If-Match and If-None-Match and If-Range, and evaluation of If-Match is false, return 412 or 2xx
  81. When If-Match and If-None-Match and If-Range, and evaluation of If-Match is true, and evaluation of If-None-Match is false and method is GET or HEAD, return 304
  82. When If-Match and If-None-Match and If-Range, and evaluation of If-Match is true, and evaluation of If-None-Match is false and method not is GET or HEAD, return 412
  83. When If-Match and If-None-Match and If-Range, and evaluation of If-Match is true, and evaluation of If-None-Match is true, do not use If-Range, perform the requested method and respond according to its success or failure
  84. When If-Match and If-None-Match and If-Range and Range, and evaluation of If-Match is true, and evaluation of If-None-Match is true, and method is not GET, do not use If-Range, perform the requested method and respond according to its success or failure
  85. When If-Match and If-None-Match and If-Range and Range, and evaluation of If-Match is true, and evaluation of If-None-Match is true, and method is GET, and evaluation of If-Range is true, return 206
  86. When If-Match and If-None-Match and If-Range and Range, and evaluation of If-Match is true, and evaluation of If-None-Match is true, and method is GET, and evaluation of If-Range is false, return 200
  87. When If-Unmodified-Since and If-Modified-Since and If-None-Match, and evaluation of If-Unmodified-Since is false, return 412 or 2xx
  88. When If-Unmodified-Since and If-Modified-Since and If-None-Match, and evaluation of If-Unmodified-Since is true, and evaluation of If-None-Match is false and method is GET or HEAD, return 304
  89. When If-Unmodified-Since and If-Modified-Since and If-None-Match, and evaluation of If-Unmodified-Since is true, and evaluation of If-None-Match is false and method not is GET or HEAD, return 412
  90. When If-Unmodified-Since and If-Modified-Since and If-None-Match, and evaluation of If-Unmodified-Since is true, and evaluation of If-None-Match is true, do not use If-Modified-Since, perform the requested method and respond according to its success or failure
  91. When If-Unmodified-Since and If-Modified-Since and If-Range, and evaluation of If-Unmodified-Since is false, return 412 or 2xx
  92. When If-Unmodified-Since and If-Modified-Since and If-Range, and evaluation of If-Unmodified-Since is true, do not use If-Modified-Since, do not use If-Range, perform the requested method and respond according to its success or failure
  93. When If-Unmodified-Since and If-Modified-Since and If-Range and Range, and evaluation of If-Unmodified-Since is true, do not use If-Modified-Since, and method not GET, do not use If-Range, perform the requested method and respond according to its success or failure
  94. When If-Unmodified-Since and If-Modified-Since and If-Range and Range, and evaluation of If-Unmodified-Since is true, do not use If-Modified-Since, and method GET, and evaluation of If-Range is true, return 206
  95. When If-Unmodified-Since and If-Modified-Since and If-Range and Range, and evaluation of If-Unmodified-Since is true, do not use If-Modified-Since, and method GET, and evaluation of If-Range is false, return 200
  96. When If-Unmodified-Since and If-None-Match and If-Range, and evaluation of If-Unmodified-Since is false, return 412 or 2xx
  97. When If-Unmodified-Since and If-None-Match and If-Range, and evaluation of If-Unmodified-Since is true, and evaluation of If-None-Match is false and method is GET or HEAD, return 304
  98. When If-Unmodified-Since and If-None-Match and If-Range, and evaluation of If-Unmodified-Since is true, and evaluation of If-None-Match is false and method not is GET or HEAD, return 412
  99. When If-Unmodified-Since and If-None-Match and If-Range, and evaluation of If-Unmodified-Since is true, and evaluation of If-None-Match is true, do not use If-Range, perform the requested method and respond according to its success or failure
  100. When If-Unmodified-Since and If-None-Match and If-Range and Range, and evaluation of If-Unmodified-Since is true, and evaluation of If-None-Match is true, and method not GET, do not use If-Range, perform the requested method and respond according to its success or failure
  101. When If-Unmodified-Since and If-None-Match and If-Range and Range, and evaluation of If-Unmodified-Since is true, and evaluation of If-None-Match is true, and method GET, and evaluation of If-Range is true, return 206
  102. When If-Unmodified-Since and If-None-Match and If-Range and Range, and evaluation of If-Unmodified-Since is true, and evaluation of If-None-Match is true, and method GET, and evaluation of If-Range is false, return 200
  103. When If-Modified-Since and If-None-Match and If-Range, and evaluation of If-None-Match is false and method is GET or HEAD, return 304
  104. When If-Modified-Since and If-None-Match and If-Range, and evaluation of If-None-Match is false and method not is GET or HEAD, return 412
  105. When If-Modified-Since and If-None-Match and If-Range, and evaluation of If-None-Match is true, do not use If-Modified-Since, do not use If-Range, perform the requested method and respond according to its success or failure
  106. When If-Modified-Since and If-None-Match and If-Range and Range, and evaluation of If-None-Match is true, do not use If-Modified-Since, and method not GET, do not use If-Range, perform the requested method and respond according to its success or failure
  107. When If-Modified-Since and If-None-Match and If-Range and Range, and evaluation of If-None-Match is true, do not use If-Modified-Since, and method GET, and evaluation of If-Range is true, return 206
  108. When If-Modified-Since and If-None-Match and If-Range and Range, and evaluation of If-None-Match is true, do not use If-Modified-Since, and method GET, and evaluation of If-Range is false, return 200
  109. When If-Match and If-Unmodified-Since and If-Modified-Since and If-None-Match, and evaluation of If-Match is false, return 412 or 2xx
  110. When If-Match and If-Unmodified-Since and If-Modified-Since and If-None-Match, and evaluation of If-Match is true, do not use If-Unmodified-Since, and evaluation of If-None-Match is false and method is GET or HEAD, return 304
  111. When If-Match and If-Unmodified-Since and If-Modified-Since and If-None-Match, and evaluation of If-Match is true, do not use If-Unmodified-Since, and evaluation of If-None-Match is false and method is not GET or HEAD, return 412
  112. When If-Match and If-Unmodified-Since and If-Modified-Since and If-None-Match, and evaluation of If-Match is true, do not use If-Unmodified-Since, and evaluation of If-None-Match is true, do not use If-Modified-Since, perform the requested method and respond according to its success or failure
  113. When If-Match and If-Unmodified-Since and If-Modified-Since and If-Range, and evaluation of If-Match is false, return 412 or 2xx
  114. When If-Match and If-Unmodified-Since and If-Modified-Since and If-Range, and evaluation of If-Match is true, do not use If-Unmodified-Since, and method GET or HEAD, and evaluation of If-Modified-Since is false, return 304
  115. When If-Match and If-Unmodified-Since and If-Modified-Since and If-Range, and evaluation of If-Match is true, do not use If-Unmodified-Since, and method GET or HEAD, and evaluation of If-Modified-Since is true, do not use If-Range, perform the requested method and respond according to its success or failure
  116. When If-Match and If-Unmodified-Since and If-Modified-Since and If-Range, and evaluation of If-Match is true, do not use If-Unmodified-Since, and method not GET or HEAD, do not use If-Modified-Since is true, do not use If-Range, perform the requested method and respond according to its success or failure
  117. When If-Match and If-Unmodified-Since and If-Modified-Since and If-Range and Range, and evaluation of If-Match is true, do not use If-Unmodified-Since, and method not GET, and evaluation of If-Modified-Since is true, do not use If-Range, perform the requested method and respond according to its success or failure
  118. When If-Match and If-Unmodified-Since and If-Modified-Since and If-Range and Range, and evaluation of If-Match is true, do not use If-Unmodified-Since, and method GET, and evaluation of If-Modified-Since is true, and evaluation of If-Range is true, return 206
  119. When If-Match and If-Unmodified-Since and If-Modified-Since and If-Range and Range, and evaluation of If-Match is true, do not use If-Unmodified-Since, and method GET, and evaluation of If-Modified-Since is true, and evaluation of If-Range is false, return 200
  120. When If-Match and If-Unmodified-Since and If-None-Match and If-Range, and evaluation of If-Match is false, return 412 or 2xx
  121. When If-Match and If-Unmodified-Since and If-None-Match and If-Range, and evaluation of If-Match is true, do not use If-Unmodified-Since, and evaluation of If-None-Match is false and method is GET or HEAD, return 304
  122. When If-Match and If-Unmodified-Since and If-None-Match and If-Range, and evaluation of If-Match is true, do not use If-Unmodified-Since, and evaluation of If-None-Match is false and method is not GET or HEAD, return 412
  123. When If-Match and If-Unmodified-Since and If-None-Match and If-Range, and evaluation of If-Match is true, do not use If-Unmodified-Since, and evaluation of If-None-Match is true, do not use If-Range, perform the requested method and respond according to its success or failure
  124. When If-Match and If-Unmodified-Since and If-None-Match and If-Range and Range, and evaluation of If-Match is true, do not use If-Unmodified-Since, and evaluation of If-None-Match is true, and method is not GET, do not use If-Range, perform the requested method and respond according to its success or failure
  125. When If-Match and If-Unmodified-Since and If-None-Match and If-Range and Range, and evaluation of If-Match is true, do not use If-Unmodified-Since, and evaluation of If-None-Match is true, and method is GET, and evaluation of If-Range is true, return 206
  126. When If-Match and If-Unmodified-Since and If-None-Match and If-Range and Range, and evaluation of If-Match is true, do not use If-Unmodified-Since, and evaluation of If-None-Match is true, and method is GET, and evaluation of If-Range is false, return 200
  127. When If-Match and If-Modified-Since and If-None-Match and If-Range, and evaluation of If-Match is false, return 412 or 2xx
  128. When If-Match and If-Modified-Since and If-None-Match and If-Range, and evaluation of If-Match is true, and evaluation of If-None-Match is false and method is GET or HEAD, return 304
  129. When If-Match and If-Modified-Since and If-None-Match and If-Range, and evaluation of If-Match is true, and evaluation of If-None-Match is false and method not is GET or HEAD, return 412
  130. When If-Match and If-Modified-Since and If-None-Match and If-Range, and evaluation of If-Match is true, and evaluation of If-None-Match is true, do not use If-Modified-Since, do not use If-Range, perform the requested method and respond according to its success or failure
  131. When If-Match and If-Modified-Since and If-None-Match and If-Range and Range, and evaluation of If-Match is true, and evaluation of If-None-Match is true, do not use If-Modified-Since, and method not GET, do not use If-Range, perform the requested method and respond according to its success or failure
  132. When If-Match and If-Modified-Since and If-None-Match and If-Range and Range, and evaluation of If-Match is true, and evaluation of If-None-Match is true, do not use If-Modified-Since, and method GET, and evaluation of If-Range is true, return 206
  133. When If-Match and If-Modified-Since and If-None-Match and If-Range and Range, and evaluation of If-Match is true, and evaluation of If-None-Match is true, do not use If-Modified-Since, and method GET, and evaluation of If-Range is false, return 200
  134. When If-Unmodified-Since and If-Modified-Since and If-None-Match and If-Range, and evaluation of If-Unmodified-Since is false, return 412 or 2XX
  135. When If-Unmodified-Since and If-Modified-Since and If-None-Match and If-Range, and evaluation of If-Unmodified-Since is true, and evaluation of If-None-Match is false and method is GET or HEAD, return 304
  136. When If-Unmodified-Since and If-Modified-Since and If-None-Match and If-Range, and evaluation of If-Unmodified-Since is true, and evaluation of If-None-Match is false and method not is GET or HEAD, return 412
  137. When If-Unmodified-Since and If-Modified-Since and If-None-Match and If-Range, and evaluation of If-Unmodified-Since is true, and evaluation of If-None-Match is true, do not use If-Modified-Since, do not use If-Range, perform the requested method and respond according to its success or failure
  138. When If-Unmodified-Since and If-Modified-Since and If-None-Match and If-Range and Range, and evaluation of If-Unmodified-Since is true, and evaluation of If-None-Match is true, do not use If-Modified-Since, and method not GET, do not use If-Range, perform the requested method and respond according to its success or failure
  139. When If-Unmodified-Since and If-Modified-Since and If-None-Match and If-Range and Range, and evaluation of If-Unmodified-Since is true, and evaluation of If-None-Match is true, do not use If-Modified-Since, and method GET, and evaluation of If-Range is true, return 206
  140. When If-Unmodified-Since and If-Modified-Since and If-None-Match and If-Range and Range, and evaluation of If-Unmodified-Since is true, and evaluation of If-None-Match is true, do not use If-Modified-Since, and method GET, and evaluation of If-Range is false, return 200
  141. When If-Match and If-Unmodified-Since and If-Modified-Since and If-None-Match and If-Range, and evaluation of If-Match is false, return 412 or 2xx
  142. When If-Match and If-Unmodified-Since and If-Modified-Since and If-None-Match and If-Range, and evaluation of If-Match is true, do not use If-Unmodified-Since, and evaluation of If-None-Match is false and method is GET or HEAD, return 304
  143. When If-Match and If-Unmodified-Since and If-Modified-Since and If-None-Match and If-Range, and evaluation of If-Match is true, do not use If-Unmodified-Since, and evaluation of If-None-Match is false and method is not GET or HEAD, return 412
  144. When If-Match and If-Unmodified-Since and If-Modified-Since and If-None-Match and If-Range, and evaluation of If-Match is true, do not use If-Unmodified-Since, and evaluation of If-None-Match is true, do not use If-Modified-Since, and method not GET, do not use If-Range, perform the requested method and respond according to its success or failure
  145. When If-Match and If-Unmodified-Since and If-Modified-Since and If-None-Match and If-Range, and evaluation of If-Match is true, do not use If-Unmodified-Since, and evaluation of If-None-Match is true, do not use If-Modified-Since, and method GET, and evaluation of If-Range is true, return 206
  146. When If-Match and If-Unmodified-Since and If-Modified-Since and If-None-Match and If-Range, and evaluation of If-Match is true, do not use If-Unmodified-Since, and evaluation of If-None-Match is true, do not use If-Modified-Since, and method GET, and evaluation of If-Range is false, return 200
@mnot
Copy link
Collaborator

mnot commented Oct 20, 2022

Hello!

For the purposes of this project, it's probably best to focus on (3) and (4) in Precedence of Preconditions; (1) and (2) are focused on origins servers, and while and origin server can implement a cache, it's not really the focus here. (5) is also relevant, but as the tests show, range support is not widspread in caches, and difficult to work with in tests.

@mnot mnot added the new test label Dec 8, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants