summaryrefslogtreecommitdiff
path: root/rodion/tests/services.scm
diff options
context:
space:
mode:
Diffstat (limited to 'rodion/tests/services.scm')
-rw-r--r--rodion/tests/services.scm45
1 files changed, 43 insertions, 2 deletions
diff --git a/rodion/tests/services.scm b/rodion/tests/services.scm
index 758be89..e5f7571 100644
--- a/rodion/tests/services.scm
+++ b/rodion/tests/services.scm
@@ -12,13 +12,35 @@
#:use-module (rodion services miniflux)
#:use-module (guix gexp))
+(define retry-on-error
+ #~(lambda* (f #:key times delay)
+ (let loop ((attempt 1))
+ (match (catch
+ #t
+ (lambda ()
+ (cons #t
+ (f)))
+ (lambda args
+ (cons #f
+ args)))
+ ((#t . return-value)
+ return-value)
+ ((#f . error-args)
+ (if (>= attempt times)
+ error-args
+ (begin
+ (sleep delay)
+ (loop (+ 1 attempt)))))))))
+
(define %miniflux-os
(simple-operating-system
(service dhcp-client-service-type)
(service postgresql-service-type
(postgresql-configuration
(postgresql postgresql-15)))
- (service miniflux-service-type)))
+ (service miniflux-service-type
+ (miniflux-configuration
+ (listen-addr "0.0.0.0:8080")))))
(define* (run-miniflux-test name test-os)
(define os
@@ -32,13 +54,19 @@
(define vm
(virtual-machine
(operating-system os)
+ (memory-size 512)
(port-forwardings `((8080 . ,forwarded-port)))))
(define test
(with-imported-modules '((gnu build marionette))
#~(begin
(use-modules (srfi srfi-64)
- (gnu build marionette))
+ (srfi srfi-11)
+ (gnu build marionette)
+ (web client)
+ (web uri)
+ (web response)
+ (ice-9 match))
(define marionette
(make-marionette (list #$vm)))
@@ -60,6 +88,19 @@
(test-assert "Miniflux TCP port ready, IPv4"
(wait-for-tcp-port #$forwarded-port marionette))
+
+ (test-assert "Miniflux login page is opened"
+ (begin
+ (wait-for-tcp-port #$forwarded-port marionette)
+ (#$retry-on-error
+ (lambda ()
+ (let-values (((response text)
+ (http-get
+ #$(format #f "http://localhost:~A/" forwarded-port)
+ #:decode-body? #t)))
+ (string-contains text "<title>Sign In - Miniflux</title>")))
+ #:times 10
+ #:delay 5)))
(test-end))))
(gexp->derivation "miniflux-test" test))