summaryrefslogtreecommitdiff
path: root/tests/server-update-if-none-match.scm
diff options
context:
space:
mode:
authorVivien Kraus <vivien@planete-kraus.eu>2021-05-17 22:39:03 +0200
committerVivien Kraus <vivien@planete-kraus.eu>2021-05-18 00:49:21 +0200
commita8cc0aba66c9f25693d2c58787a6e24199e50af1 (patch)
tree1ff2095b57cd87268354afde7fa26ca9eb0d7a68 /tests/server-update-if-none-match.scm
parent1a52b8abb4ee98406d33c45eff5de9f6ca360bea (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.scm53
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)))))