#!/usr/bin/env sh exec guile -s "$0" "$@" !# ;;; SPDX-FileCopyrightText: 2025 Evgeny Pisemsky ;;; ;;; SPDX-License-Identifier: GPL-3.0-only (use-modules (rnrs bytevectors) (srfi srfi-64) (web uri) (web request) (web response) (pastebin httpserver)) (test-begin "pastebin-http") (let* ((dir (tmpnam)) (handler (make-pastebin-handler dir))) (mkdir dir) (let ((request (build-request (string->uri "http://localhost:8080/post") #:method 'POST #:headers '((content-type . (multipart/form-data (boundary . "------------------------s1eMqEtEr3zEuOSkwyAiLi")))) #:port (%make-void-port "w+")))) (define-values (resp body) (handler request (string->utf8 "--------------------------s1eMqEtEr3zEuOSkwyAiLi\r\nContent-Disposition: form-data; name=\"text\"\r\n\r\nPaste 0\r\n--------------------------s1eMqEtEr3zEuOSkwyAiLi\r\nContent-Disposition: form-data; name=\"showUrl\"\r\n\r\n1\r\n--------------------------s1eMqEtEr3zEuOSkwyAiLi--"))) (test-equal 200 (response-code resp)) (test-equal "http://localhost:8080/raw/00000\r\n" (call-with-output-string body))) (let ((request (build-request (string->uri "http://localhost:8080/raw/00000")))) (define-values (resp body) (handler request "")) (test-equal 200 (response-code resp)) (test-equal "Paste 0" (call-with-output-string body))) (let ((request (build-request (string->uri "http://localhost:8080/post") #:method 'POST #:headers '((content-type . (multipart/form-data (boundary . "------------------------WemU5jJZTowf8qPbKbZ6qE")))) #:port (%make-void-port "w+")))) (define-values (resp body) (handler request (string->utf8 "--------------------------WemU5jJZTowf8qPbKbZ6qE\r\nContent-Disposition: form-data; name=\"text\"\r\n\r\nPaste 1\r\n--------------------------WemU5jJZTowf8qPbKbZ6qE--"))) (test-equal 303 (response-code resp)) (test-equal "/" (uri-path (assq-ref (response-headers resp) 'location)))) (let ((request (build-request (string->uri "http://localhost:8080/raw/00001")))) (define-values (resp body) (handler request "")) (test-equal 200 (response-code resp)) (test-equal "Paste 1" (call-with-output-string body))) (let* ((uri (string->uri "http://localhost:8080/")) (request (build-request uri))) (define-values (resp body) (handler request "")) (test-equal 200 (response-code resp)))) (test-end "pastebin-http") ;; Local Variables: ;; mode: scheme ;; End: