diff options
| author | Ludovic Courtès <ludo@gnu.org> | 2016-07-20 16:54:31 +0200 |
|---|---|---|
| committer | Ludovic Courtès <ludo@gnu.org> | 2016-07-20 16:54:31 +0200 |
| commit | ff6638d112d794c9c433731643711932452fd2ff (patch) | |
| tree | 483ff44e6ba65eb14a1fcd8482315f14da63f252 /tests/publish.scm | |
| parent | 260bc60f83b1955ac7f48b71872d3d2809132ee2 (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.scm | 34 |
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") |
