summaryrefslogtreecommitdiff
path: root/tests/cache-valid.scm
diff options
context:
space:
mode:
Diffstat (limited to 'tests/cache-valid.scm')
-rw-r--r--tests/cache-valid.scm58
1 files changed, 58 insertions, 0 deletions
diff --git a/tests/cache-valid.scm b/tests/cache-valid.scm
new file mode 100644
index 0000000..eda831e
--- /dev/null
+++ b/tests/cache-valid.scm
@@ -0,0 +1,58 @@
+(use-modules (webid-oidc cache)
+ (webid-oidc testing)
+ (web uri)
+ (web request)
+ (web response)
+ (srfi srfi-19)
+ (ice-9 optargs)
+ (ice-9 receive))
+
+(with-test-environment
+ "cache-valid"
+ (lambda ()
+ (define response-not-stored
+ (build-response #:headers `((cache-control . (no-store)))))
+ (define response-not-cached
+ (build-response #:headers `((cache-control . (no-cache)))))
+ (define response-with-expires
+ (build-response #:headers `((expires . ,(time-utc->date (make-time time-utc 0 120))))))
+ (define response-with-overriden-expires
+ (build-response #:headers `((expires . ,(time-utc->date (make-time time-utc 0 120)))
+ (cache-control . (private (max-age . 100)))
+ (date . ,(time-utc->date (make-time time-utc 0 10))))))
+ (define response-without-max-age
+ (build-response #:headers `((cache-control . (private))
+ (date . ,(time-utc->date (make-time time-utc 0 10))))))
+ (define response-with-heuristic-max-age
+ (build-response #:headers `((cache-control . (private))
+ (last-modified . ,(time-utc->date (make-time time-utc 0 10)))
+ (date . ,(time-utc->date (make-time time-utc 0 30))))))
+ ;; response-not-stored: never valid.
+ (when (valid? response-not-stored #:current-time 0)
+ (exit 1))
+ (when (valid? response-not-stored #:current-time 100)
+ (exit 2))
+ ;; response-not-cached: never valid.
+ (when (valid? response-not-cached #:current-time 0)
+ (exit 3))
+ (when (valid? response-not-cached #:current-time 100)
+ (exit 4))
+ ;; response-with-expires: valid at 110, invalid at 130.
+ (unless (valid? response-with-expires #:current-time 110)
+ (exit 5))
+ (when (valid? response-with-expires #:current-time 130)
+ (exit 6))
+ ;; response-with-overriden-expires: valid at 105, invalid at 115
+ (unless (valid? response-with-overriden-expires #:current-time 105)
+ (exit 7))
+ (when (valid? response-with-overriden-expires #:current-time 115)
+ (exit 8))
+ ;; response-without-max-age: not valid, cannot get a heuristic
+ (when (valid? response-without-max-age #:current-time 10)
+ (exit 9))
+ ;; response-with-heuristic-max-age: the heuristic max age is 2, so
+ ;; it is valid at 31 but not at 33.
+ (unless (valid? response-with-heuristic-max-age #:current-time 31)
+ (exit 10))
+ (when (valid? response-with-heuristic-max-age #:current-time 33)
+ (exit 11))))