summaryrefslogtreecommitdiff
path: root/tests/publish.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2016-07-20 16:54:31 +0200
committerLudovic Courtès <ludo@gnu.org>2016-07-20 16:54:31 +0200
commitff6638d112d794c9c433731643711932452fd2ff (patch)
tree483ff44e6ba65eb14a1fcd8482315f14da63f252 /tests/publish.scm
parent260bc60f83b1955ac7f48b71872d3d2809132ee2 (diff)
publish: Handle '/file' URLs, for content-addressed files.
* guix/scripts/publish.scm (render-content-addressed-file): New procedure. (http-write): Add 'application/octet-stream' case. (make-request-handler): Add /file/NAME/sha256/HASH URLs. * tests/publish.scm ("/file/NAME/sha256/HASH") ("/file/NAME/sha256/INVALID-NIX-BASE32-STRING") ("/file/NAME/sha256/INVALID-HASH"): New tests. * doc/guix.texi (Invoking guix publish): Mention the /file URLs.
Diffstat (limited to 'tests/publish.scm')
-rw-r--r--tests/publish.scm34
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/publish.scm b/tests/publish.scm
index 9bf181f1fc5..0ba33487bde 100644
--- a/tests/publish.scm
+++ b/tests/publish.scm
@@ -26,6 +26,8 @@
26 #:use-module (guix utils) 26 #:use-module (guix utils)
27 #:use-module (guix hash) 27 #:use-module (guix hash)
28 #:use-module (guix store) 28 #:use-module (guix store)
29 #:use-module (guix derivations)
30 #:use-module (guix gexp)
29 #:use-module (guix base32) 31 #:use-module (guix base32)
30 #:use-module (guix base64) 32 #:use-module (guix base64)
31 #:use-module ((guix records) #:select (recutils->alist)) 33 #:use-module ((guix records) #:select (recutils->alist))
@@ -210,4 +212,36 @@ References: ~%"
210 (display "This file is not a valid store item." port))) 212 (display "This file is not a valid store item." port)))
211 (response-code (http-get (publish-uri (string-append "/nar/invalid")))))) 213 (response-code (http-get (publish-uri (string-append "/nar/invalid"))))))
212 214
215(test-equal "/file/NAME/sha256/HASH"
216 "Hello, Guix world!"
217 (let* ((data "Hello, Guix world!")
218 (hash (call-with-input-string data port-sha256))
219 (drv (run-with-store %store
220 (gexp->derivation "the-file.txt"
221 #~(call-with-output-file #$output
222 (lambda (port)
223 (display #$data port)))
224 #:hash-algo 'sha256
225 #:hash hash)))
226 (out (build-derivations %store (list drv))))
227 (utf8->string
228 (http-get-body
229 (publish-uri
230 (string-append "/file/the-file.txt/sha256/"
231 (bytevector->nix-base32-string hash)))))))
232
233(test-equal "/file/NAME/sha256/INVALID-NIX-BASE32-STRING"
234 404
235 (let ((uri (publish-uri
236 "/file/the-file.txt/sha256/not-a-nix-base32-string")))
237 (response-code (http-get uri))))
238
239(test-equal "/file/NAME/sha256/INVALID-HASH"
240 404
241 (let ((uri (publish-uri
242 (string-append "/file/the-file.txt/sha256/"
243 (bytevector->nix-base32-string
244 (call-with-input-string "" port-sha256))))))
245 (response-code (http-get uri))))
246
213(test-end "publish") 247(test-end "publish")