aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2022 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (test-http-client)
  #:use-module (guix http-client)
  #:use-module (guix tests http)
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-34)
  #:use-module (srfi srfi-64)
  #:use-module (rnrs bytevectors)
  #:use-module (rnrs io ports)
  #:use-module (web response)
  #:use-module (web uri))

(test-begin "http-client")

(test-equal "http-fetch, one request, binary"
  (string->utf8 "Hello, world.")
  (with-http-server `((200 "Hello, world."))
    (let* ((port (http-fetch (%local-url)))
           (bv   (get-bytevector-all port)))
      (close-port port)
      bv)))

(test-equal "http-fetch, one request, text"
  "Hello, world."
  (with-http-server `((200 "Hello, world."))
    (let* ((port (http-fetch (%local-url) #:text? #t))
           (data (get-string-all port)))
      (close-port port)
      data)))

(test-equal "http-fetch, redirect"
  "Hello, world."
  (with-http-server `((,(build-response
                         #:code 301
                         #:headers
                         `((location
                            . ,(string->uri-reference "/elsewhere")))
                         #:reason-phrase "Moved")
                       "Redirect!")
                      (200 "Hello, world."))
    (let* ((port (http-fetch (%local-url)))
           (data (get-string-all port)))
      (close-port port)
      data)))

(test-equal "http-fetch, error"
  404
  (with-http-server `((404 "Ne trovita."))
    (guard (c ((http-get-error? c) (http-get-error-code c)))
      (http-fetch (%local-url))
      #f)))

(test-equal "http-fetch, redirect + error"
  403
  (with-http-server `((,(build-response
                         #:code 302
                         #:headers
                         `((location
                            . ,(string->uri-reference "/elsewhere")))
                         #:reason-phrase "Moved")
                       "Redirect!")
                      (403 "Verboten."))
    (guard (c ((http-get-error? c) (http-get-error-code c)))
      (http-fetch (%local-url))
      #f)))

(test-end "http-client")
.scm (qutebrowser)[inputs]: Likewise. Leo Famulari 2023-02-13gnu: fet: Update to 6.8.3....* gnu/packages/education.scm (fet): Update to 6.8.3. Signed-off-by: Christopher Baines <mail@cbaines.net> Nicolas Goaziou 2023-02-04gnu: fet: Update to 6.8.2....* gnu/packages/education.scm (fet): Update to 6.8.2. Nicolas Goaziou 2023-01-27gnu: fet: Update to 6.8.0....* gnu/packages/education.scm (fet): Update to 6.8.0. Nicolas Goaziou 2023-01-15gnu: klavaro: Update to 3.14....* gnu/packages/education.scm (klavaro): Update to 3.14. Tobias Geerinckx-Rice 2023-01-03gnu: toutenclic: Remove defunct source URI....* gnu/packages/education.scm (toutenclic)[source](uri): Remove URI that serves an error page. Marius Bakke 2022-12-23gnu: fet: Update to 6.7.7....* gnu/packages/education.scm (fet): Update to 6.7.7. Nicolas Goaziou 2022-12-14gnu: fet: Update to 6.7.6....* gnu/packages/education.scm (fet): Update to 6.7.6. Nicolas Goaziou 2022-12-12gnu: ffmpeg: Promote version 5 to the default....* gnu/packages/video.scm (ffmpeg): Alias to FFMPEG-5. (mlt-6)[inpust]: Replace "ffmpeg" with FFMPEG-4. (transcode, libquicktime, ffmpegthumbnailer, mplayer, obs, simplescreenrecorder, handbrake, ffms2, libopenshot, wlstream)[inputs]: Change from FFMPEG to FFMPEG-4. * gnu/packages/arcan.scm (arcan)[inputs]: Likewise. * gnu/packages/astronomy.scm (stackistry, libskry)[inputs]: Likewise. * gnu/packages/audio.scm (aubio, bs1770gain)[inputs]: Likewise. * gnu/packages/education.scm (openboard)[inputs]: Likewise. * gnu/packages/emulators.scm (dolphin-emu, retroarch, pcsxr, ppsspp)[inputs]: Likewise. * gnu/packages/game-development.scm (warsow-qfusion)[inputs]: Likewise. * gnu/packages/games.scm (oshu, hedgewars)[inputs]: Likewise. * gnu/packages/gnunet.scm (libextractor)[inputs]: Likewise. * gnu/packages/graphics.scm (openscenegraph)[inputs]: Likewise. * gnu/packages/image-processing.scm (opencv, paraview-5.9)[inputs]: Likewise. * gnu/packages/julia-jll.scm (julia-ffmpeg-jll)[inputs]: Likewise. * gnu/packages/kde-multimedia.scm (kid3)[inputs]: Likewise. * gnu/packages/kodi.scm (kodi)[inputs]: Likewise. * gnu/packages/linphone.scm (mediastreamer2)[inputs]: Likewise. * gnu/packages/linux.scm (pipewire)[inputs]: Likewise. (pipewire-0.3)[inputs]: Replace "ffmpeg" with FFMPEG. * gnu/packages/mp3.scm (chromaprint)[inputs]: Change from FFMPEG to FFMPEG-4. * gnu/packages/music.scm (musikcube)[inputs]: Likewise. * gnu/packages/rdesktop.scm (freerdp)[inputs]: Likewise. * gnu/packages/qt.scm (qtwebengine-5)[inputs]: Likewise. Marius Bakke 2022-11-21gnu: ktouch: Remove kqtquickcharts form inputs....* gnu/packages/education.scm (ktouch) [inputs]: Remove kqtquickcharts. Signed-off-by: Marius Bakke <marius@gnu.org> Petr Hodina 2022-11-12gnu: fet: Update to 6.7.1....* gnu/packages/education.scm (fet): Update to 6.7.1. Nicolas Goaziou 2022-11-08gnu: exercism: Update to 3.1.0....* gnu/packages/education.scm (exercism): Update to 3.1.0. Signed-off-by: Nicolas Goaziou <mail@nicolasgoaziou.fr> Morgan Smith 2022-11-01gnu: fet: Update to 6.7.0....* gnu/packages/education.scm (fet): Update to 6.7.0. Nicolas Goaziou 2022-10-12Merge remote-tracking branch 'origin/master' into staging...Conflicts: gnu/packages/gnuzilla.scm gnu/packages/graphics.scm gnu/packages/gstreamer.scm gnu/packages/gtk.scm gnu/packages/kde-frameworks.scm gnu/packages/video.scm Efraim Flashner 2022-10-10gnu: fet: Update to 6.6.2....* gnu/packages/education.scm (fet): Update to 6.6.2. Nicolas Goaziou 2022-10-01gnu: exercism: Remove input labels....* gnu/packages/education.scm (exercism)[inputs]: Remove input labels. Efraim Flashner 2022-10-01gnu: exercism: Update home-page....* gnu/packages/education.scm (exercism)[home-page]: Follow redirect. Efraim Flashner 2022-10-01gnu: exercism: Install shell completions....* gnu/packages/education.scm (exercism)[arguments]: Add a phase to build and install shell completions. Efraim Flashner 2022-09-16Merge branch 'master' into stagingMarius Bakke 2022-09-16gnu: Add mazo....* gnu/packages/education.scm (mazo): New variable. Signed-off-by: Christopher Baines <mail@cbaines.net> Luis Felipe 2022-09-01gnu: ktouch: Update to 21.12.2....* gnu/packages/education.scm (ktouch): Update to 21.12.2. Signed-off-by: Marius Bakke <marius@gnu.org> Brendan Tildesley 2022-08-28gnu: fet: Update to 6.5.7....* gnu/packages/education.scm (fet): Update to 6.5.7. Nicolas Goaziou 2022-07-31gnu: qttools: Rename to qttools-5....Automated with: git grep -l qttools | xargs sed 's/\bqttools\b/\0-5/g' -i git checkout NEWS Maxim Cournoyer 2022-07-31gnu: qtwebengine: Rename to qtwebengine-5....Automated with: git grep -l qtwebengine | xargs sed 's/\bqtwebengine\b/\0-5/g' -i git checkout NEWS Maxim Cournoyer 2022-07-31gnu: qtwebchannel: Rename to qtwebchannel-5....Automated via: git grep -l qtwebchannel | xargs sed 's/\bqtwebchannel\b/\0-5/g' -i git checkout NEWS Maxim Cournoyer 2022-07-31gnu: qtquickcontrols2: Rename to qtquickcontrols2-5....Automated via: git grep -l qtquickcontrols2 | xargs sed 's/\bqtquickcontrols2\b/\0-5/g' -i git checkout NEWS Maxim Cournoyer 2022-07-31gnu: qtquickcontrols: Rename to qtquickcontrols-5....Automated via: git grep -l qtquickcontrols | xargs sed 's/\bqtquickcontrols\b/\0-5/g' -i git checkout NEWS Maxim Cournoyer 2022-07-31gnu: qtdeclarative: Rename to qtdeclarative-5....Automated via the following commands: git grep -l '\bqtdeclarative\b' | xargs sed -E 's/qtdeclarative/\0-5/g' -i git checkout NEWS Maxim Cournoyer 2022-07-31gnu: qtmultimedia: Rename to qtmultimedia-5....Automated via: git grep -l qtmultimedia | xargs sed 's/qtmultimedia/qtmultimedia-5/g' -i git checkout NEWS Maxim Cournoyer 2022-07-31gnu: qtsvg: Rename variable to qtsvg-5....This is in preparation of the qtsvg update to version 6. This change was automated via the following command: git grep -l '\bqtsvg\b' | xargs sed 's/qtsvg/qtsvg-5/g' -i Maxim Cournoyer 2022-06-21gnu: fet: Update to 6.5.3....* gnu/packages/education.scm (fet): Update to 6.5.3. Nicolas Goaziou 2022-05-31gnu: Remove childsplay....* gnu/packages/education.scm (childsplay): Delete variable. Maxim Cournoyer 2022-05-31gnu: Remove omnitux....* gnu/packages/education.scm (omnitux): Delete variable. Maxim Cournoyer