diff options
author | Vivien Kraus <vivien@planete-kraus.eu> | 2021-05-17 22:39:03 +0200 |
---|---|---|
committer | Vivien Kraus <vivien@planete-kraus.eu> | 2021-05-18 00:49:21 +0200 |
commit | a8cc0aba66c9f25693d2c58787a6e24199e50af1 (patch) | |
tree | 1ff2095b57cd87268354afde7fa26ca9eb0d7a68 /tests/server-update-if-none-match.scm | |
parent | 1a52b8abb4ee98406d33c45eff5de9f6ca360bea (diff) |
Load and save resources for the server
Diffstat (limited to 'tests/server-update-if-none-match.scm')
-rw-r--r-- | tests/server-update-if-none-match.scm | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/tests/server-update-if-none-match.scm b/tests/server-update-if-none-match.scm new file mode 100644 index 0000000..87e5cdd --- /dev/null +++ b/tests/server-update-if-none-match.scm @@ -0,0 +1,53 @@ +(use-modules ((webid-oidc server resource) #:prefix resource:) + (webid-oidc testing) + (webid-oidc errors) + (web uri) + (ice-9 optargs) + (ice-9 receive) + (rnrs bytevectors) + (oop goops)) + +(define <resource:t> resource:<t>) +(define <resource:explicit-acl> resource:<explicit-acl>) + +(with-test-environment + "server-update-if-none-match" + (lambda () + (let ((base-resource + (make <resource:t> + #:path "/a/b/c" + #:etag "abc" + #:acl (make <resource:explicit-acl> + #:allowed-users (list (string->uri "https://example.user/card#me")) + #:allowed-groups (list (string->relative-ref "/other-people#them")) + #:public? #f) + #:content-type 'application/json + #:content "{\"hello\": \"world\"}" + #:metadata "<> <> <> ." + #:contained #f))) + (resource:save base-resource) + (let ((modified-resource + (make <resource:t> + #:path "/a/b/c" + #:etag "def" + #:acl #f + #:content-type 'text/plain + #:content "Hello, world" + #:metadata "" + #:contained '("/a/b/c/d")))) + (resource:save modified-resource #:if-none-match '("xyz")))) + (let ((loaded (resource:load "/a/b/c/"))) + (unless (equal? (resource:path loaded) "/a/b/c/") + (exit 1)) + (unless (equal? (resource:etag loaded) "def") + (exit 2)) + (when (resource:acl loaded) + (exit 3)) + (unless (eq? (resource:content-type loaded) 'text/plain) + (exit 6)) + (unless (equal? (resource:content loaded) (string->utf8 "Hello, world")) + (exit 7)) + (unless (equal? (resource:metadata loaded) "") + (exit 8)) + (unless (equal? (resource:contained loaded) '("/a/b/c/d")) + (exit 9))))) |