summaryrefslogtreecommitdiff
path: root/tests/cache-revalidate.scm
diff options
context:
space:
mode:
Diffstat (limited to 'tests/cache-revalidate.scm')
-rw-r--r--tests/cache-revalidate.scm42
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/cache-revalidate.scm b/tests/cache-revalidate.scm
new file mode 100644
index 0000000..29cc038
--- /dev/null
+++ b/tests/cache-revalidate.scm
@@ -0,0 +1,42 @@
+(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-revalidate"
+ (lambda ()
+ (define original-response
+ (build-response #:headers `((etag . ("xxx" . #t))
+ (content-type text/plain)
+ (date . ,(time-utc->date (make-time time-utc 0 0))))))
+ (define* (backend uri #:key (headers '()))
+ (unless (equal? uri (string->uri "https://example.com"))
+ (exit 1))
+ (unless (equal? (assq-ref headers 'if-none-match)
+ '(("xxx" . #t)))
+ (exit 2))
+ (unless (equal? (assq-ref headers 'user-agent) "Testbed")
+ (exit 3))
+ (unless (eqv? (length headers) 2)
+ (exit 4))
+ (values
+ (build-response #:code 304 #:reason-phrase "Not Modified"
+ #:headers `((date . ,(time-utc->date (make-time time-utc 0 10)))))
+ #f))
+ (receive (response response-body)
+ (revalidate (string->uri "https://example.com") original-response "hello"
+ #:headers `((if-none-match . ("yyy" . #t))
+ (if-unmodified-since . ,(time-utc->date (make-time time-utc 0 42)))
+ (user-agent . "Testbed"))
+ #:http-get backend)
+ (unless (eqv? (response-code response) 200)
+ (exit 5))
+ (unless (equal? (response-headers response)
+ `((date . ,(time-utc->date (make-time time-utc 0 10)))
+ (content-type text/plain)))
+ (exit 6)))))