;; webid-oidc, implementation of the Solid specification ;; Copyright (C) 2020, 2021 Vivien Kraus ;; This program is free software: you can redistribute it and/or modify ;; it under the terms of the GNU Affero General Public License as ;; published by the Free Software Foundation, either version 3 of the ;; License, or (at your option) any later version. ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU Affero General Public License for more details. ;; You should have received a copy of the GNU Affero General Public License ;; along with this program. If not, see . (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))))