~ruther/guix-local

b73427bf6ba06d9df71785b1093dc264fb3ab407 — Rodion Goritskov 4 months ago 32fca2d
tests: mail: Add Radicale test.

* gnu/tests/mail.scm
(%radicale-os): New variable.
(run-radicale-test): New function with basic tests.
(%test-radicale): New variable.

Change-Id: I4a4e093ca7ac2a20a575bcf38b6ff763edf67652
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Merges: #5361
1 files changed, 67 insertions(+), 1 deletions(-)

M gnu/tests/mail.scm
M gnu/tests/mail.scm => gnu/tests/mail.scm +67 -1
@@ 42,7 42,8 @@
            %test-exim
            %test-dovecot
            %test-getmail
            %test-rspamd))
            %test-rspamd
            %test-radicale))

(define %qemu-static-networking-no-nameserver
  ;; Networking configuration for QEMU without nameserver.


@@ 721,3 722,68 @@ Subject: Hello Nice to meet you!")
   (name "rspamd")
   (description "Basic rspamd service test.")
   (value (run-rspamd-test))))

(define %radicale-os
  (simple-operating-system
   (service dhcpcd-service-type)
   (service radicale-service-type)))

(define (run-radicale-test)
  "Return a test of an OS running Radicale service."

  (define forwarded-port 5232)

  (define vm
    (virtual-machine
      (operating-system
        (marionette-operating-system
         %radicale-os
         #:imported-modules '((gnu services herd))))
      (port-forwardings `((5232 . ,forwarded-port)))))

  (define test
    (with-imported-modules '((gnu build marionette))
      #~(begin
          (use-modules (srfi srfi-64)
                       (gnu build marionette))

          (define marionette
            (make-marionette '(#$vm)))

          (test-runner-current (system-test-runner #$output))
          (test-begin "Radicale")

          (test-assert "Radicale service is running"
            (marionette-eval
             '(begin
                (use-modules (gnu services herd))
                (wait-for-service 'radicale))
             marionette))

          (test-assert "Radicale TCP port ready, IPv4"
            (wait-for-tcp-port #$forwarded-port marionette))

          (test-equal "Radicale internal web interface works"
            200
            (marionette-eval
             '(begin
                (use-modules (web client)
                             (web response))
                (response-code (http-get "http://localhost:5232/.web/index.html")))
             marionette))

          (test-assert "Radicale configuration action"
            (marionette-eval '(with-shepherd-action 'radicale ('configuration)
                                                    results
                                (file-exists? (car results)))
                             marionette))

          (test-end))))

  (gexp->derivation "radicale-test" test))

(define %test-radicale
  (system-test
   (name "radicale")
   (description "Basic radicale service test.")
   (value (run-radicale-test))))