--- /dev/null
+;;; Copyright (c) 2026 Jakub Czajka <jakub@ekhem.eu.org>
+;;; License: GPL-3.0 or later.
+;;;
+;;; Static networking test cases.
+
+(define-module (tests networking)
+ #:use-module (guix gexp)
+ #:export (networking-test-cases))
+
+(define (networking-test-cases marionette)
+ "Return a gexp with static networking test assertions."
+ #~(begin
+ (test-assert "net: service running"
+ (marionette-eval '(begin
+ (use-modules (gnu services herd))
+ (start-service 'networking))
+ #$marionette))
+
+ (test-assert "net: eth0 is up"
+ (marionette-eval '(file-exists?
+ "/sys/class/net/eth0/operstate")
+ #$marionette))))
--- /dev/null
+;;; Copyright (c) 2026 Jakub Czajka <jakub@ekhem.eu.org>
+;;; License: GPL-3.0 or later.
+;;;
+;;; SSH daemon test cases.
+
+(define-module (tests sshd)
+ #:use-module (guix gexp)
+ #:export (sshd-test-cases))
+
+(define (sshd-test-cases marionette connect-gexp)
+ "Return a gexp with SSH daemon test assertions."
+ #~(begin
+ (test-assert "sshd: service running"
+ (marionette-eval '(begin
+ (use-modules (gnu services herd))
+ (start-service 'ssh-daemon))
+ #$marionette))
+
+ (test-assert "sshd: port 72 TCP"
+ (wait-for-tcp-port 72
+ #$marionette))
+
+ ;; Diagnostic: verify the authorized keys file is in place.
+ (test-assert "sshd: authorized_keys exists for dak"
+ (marionette-eval '(file-exists?
+ "/etc/ssh/authorized_keys.d/dak")
+ #$marionette))
+
+ (test-equal "sshd: shell command via key auth"
+ 'hello
+ (#$connect-gexp))))
#:use-module (tests claude-code)
#:use-module (tests dotfiles)
#:use-module (tests paseo)
+ #:use-module (tests sshd)
+ #:use-module (tests networking)
#:use-module (guix gexp)
#:export (%test-vps %vps-test-os run-vps-test))
(let ((claude claude-code-test-cases)
(paseo paseo-test-cases)
(dots dotfiles-test-cases)
- (home home-activation-test-cases))
+ (home home-activation-test-cases)
+ (ssh (lambda (m)
+ (sshd-test-cases m
+ (make-ssh-connect m))))
+ (net networking-test-cases))
(system-test (name "vps")
(description "VPS test suite.")
- (value (run-vps-test (list claude paseo dots home))))))
+ (value (run-vps-test (list claude
+ paseo
+ dots
+ home
+ ssh
+ net))))))