AtlatestRepositorycourier

courier / tree / testtest-config.sgl

1(import (sigil test)
2 (sigil string)
3 (sigil dict)
4 (sigil yaml)
5 (sigil fs)
6 (sigil path)
7 (sigil process)
8 (sigil io)
9 (courier config))
11;; ============================================================
12;; Config struct defaults
13;; ============================================================
15(test-group "config defaults"
16 (test "courier-config has sensible defaults"
17 (let ((cfg (courier-config)))
18 (assert-false (courier-config-telegram-token cfg))
19 (assert-false (courier-config-telegram-chat-id cfg))
20 (assert-equal '() (courier-config-allowed-senders cfg)))))
22;; ============================================================
23;; load-courier-config
24;; ============================================================
26(test-group "load-courier-config"
27 (test "loads from env vars and courier.yaml"
28 (let* ((tmp (make-temp-directory))
29 (yaml-content (string-append
30 "allowed-senders:\n"
31 " - \"123456789\"\n"
32 " - \"987654321\"\n"))
33 (config-file (path-join tmp "courier.yaml"))
34 (prev-dir (current-directory)))
35 (write-file-string config-file yaml-content)
36 (setenv! "COURIER_TELEGRAM_TOKEN" "test-token-123")
37 (setenv! "COURIER_TELEGRAM_CHAT_ID" "42")
38 (set-current-directory! tmp)
39 (let ((cfg (load-courier-config)))
40 (set-current-directory! prev-dir)
41 (setenv! "COURIER_TELEGRAM_TOKEN" "")
42 (setenv! "COURIER_TELEGRAM_CHAT_ID" "")
43 (assert-equal "test-token-123" (courier-config-telegram-token cfg))
44 (assert-equal 42 (courier-config-telegram-chat-id cfg))
45 (assert-equal 2 (length (courier-config-allowed-senders cfg)))
46 (assert-true (member "123456789" (courier-config-allowed-senders cfg))))
47 (delete-file config-file)
48 (delete-directory tmp)))
50 (test "works without courier.yaml"
51 (let* ((tmp (make-temp-directory))
52 (prev-dir (current-directory)))
53 (setenv! "COURIER_TELEGRAM_TOKEN" "tok")
54 (setenv! "COURIER_TELEGRAM_CHAT_ID" "99")
55 (set-current-directory! tmp)
56 (let ((cfg (load-courier-config)))
57 (set-current-directory! prev-dir)
58 (setenv! "COURIER_TELEGRAM_TOKEN" "")
59 (setenv! "COURIER_TELEGRAM_CHAT_ID" "")
60 (assert-equal "tok" (courier-config-telegram-token cfg))
61 (assert-equal 99 (courier-config-telegram-chat-id cfg))
62 (assert-equal '() (courier-config-allowed-senders cfg)))
63 (delete-directory tmp)))
65 (test "handles numeric sender IDs in YAML"
66 (let* ((tmp (make-temp-directory))
67 (config-file (path-join tmp "courier.yaml"))
68 (prev-dir (current-directory)))
69 (write-file-string config-file
70 (string-append
71 "allowed-senders:\n"
72 " - 123456789\n"))
73 (setenv! "COURIER_TELEGRAM_TOKEN" "")
74 (setenv! "COURIER_TELEGRAM_CHAT_ID" "")
75 (set-current-directory! tmp)
76 (let ((cfg (load-courier-config)))
77 (set-current-directory! prev-dir)
78 ;; Numeric YAML values should be converted to strings
79 (assert-true (member "123456789" (courier-config-allowed-senders cfg))))
80 (delete-file config-file)
81 (delete-directory tmp))))
83(run-tests)