summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/tests/mail.scm68
1 files changed, 67 insertions, 1 deletions
diff --git a/gnu/tests/mail.scm b/gnu/tests/mail.scm
index ff9c3a690c1..87c1a2667ee 100644
--- a/gnu/tests/mail.scm
+++ b/gnu/tests/mail.scm
@@ -42,7 +42,8 @@
42 %test-exim 42 %test-exim
43 %test-dovecot 43 %test-dovecot
44 %test-getmail 44 %test-getmail
45 %test-rspamd)) 45 %test-rspamd
46 %test-radicale))
46 47
47(define %qemu-static-networking-no-nameserver 48(define %qemu-static-networking-no-nameserver
48 ;; Networking configuration for QEMU without nameserver. 49 ;; Networking configuration for QEMU without nameserver.
@@ -721,3 +722,68 @@ Subject: Hello Nice to meet you!")
721 (name "rspamd") 722 (name "rspamd")
722 (description "Basic rspamd service test.") 723 (description "Basic rspamd service test.")
723 (value (run-rspamd-test)))) 724 (value (run-rspamd-test))))
725
726(define %radicale-os
727 (simple-operating-system
728 (service dhcpcd-service-type)
729 (service radicale-service-type)))
730
731(define (run-radicale-test)
732 "Return a test of an OS running Radicale service."
733
734 (define forwarded-port 5232)
735
736 (define vm
737 (virtual-machine
738 (operating-system
739 (marionette-operating-system
740 %radicale-os
741 #:imported-modules '((gnu services herd))))
742 (port-forwardings `((5232 . ,forwarded-port)))))
743
744 (define test
745 (with-imported-modules '((gnu build marionette))
746 #~(begin
747 (use-modules (srfi srfi-64)
748 (gnu build marionette))
749
750 (define marionette
751 (make-marionette '(#$vm)))
752
753 (test-runner-current (system-test-runner #$output))
754 (test-begin "Radicale")
755
756 (test-assert "Radicale service is running"
757 (marionette-eval
758 '(begin
759 (use-modules (gnu services herd))
760 (wait-for-service 'radicale))
761 marionette))
762
763 (test-assert "Radicale TCP port ready, IPv4"
764 (wait-for-tcp-port #$forwarded-port marionette))
765
766 (test-equal "Radicale internal web interface works"
767 200
768 (marionette-eval
769 '(begin
770 (use-modules (web client)
771 (web response))
772 (response-code (http-get "http://localhost:5232/.web/index.html")))
773 marionette))
774
775 (test-assert "Radicale configuration action"
776 (marionette-eval '(with-shepherd-action 'radicale ('configuration)
777 results
778 (file-exists? (car results)))
779 marionette))
780
781 (test-end))))
782
783 (gexp->derivation "radicale-test" test))
784
785(define %test-radicale
786 (system-test
787 (name "radicale")
788 (description "Basic radicale service test.")
789 (value (run-radicale-test))))