AtlatestRepositorycourier
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 defaults13
;; ============================================================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-config24
;; ============================================================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-append30
"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-file70
(string-append71
"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 strings79
(assert-true (member "123456789" (courier-config-allowed-senders cfg))))80
(delete-file config-file)81
(delete-directory tmp))))83
(run-tests)