ScuttleBot

scuttlebot / internal / ergo / ircdconfig_test.go
Blame History Raw 140 lines
1
package ergo_test
2
3
import (
4
"strings"
5
"testing"
6
7
"github.com/conflicthq/scuttlebot/internal/config"
8
"github.com/conflicthq/scuttlebot/internal/ergo"
9
)
10
11
func TestGenerateConfig(t *testing.T) {
12
cfg := config.ErgoConfig{
13
NetworkName: "testnet",
14
ServerName: "irc.test.local",
15
IRCAddr: "127.0.0.1:6667",
16
DataDir: "/tmp/ergo",
17
APIAddr: "127.0.0.1:8089",
18
APIToken: "test-token-abc123",
19
}
20
21
data, err := ergo.GenerateConfig(cfg)
22
if err != nil {
23
t.Fatalf("GenerateConfig: %v", err)
24
}
25
26
yaml := string(data)
27
28
cases := []struct {
29
field string
30
want string
31
}{
32
{"network name", "name: testnet"},
33
{"server name", "name: irc.test.local"},
34
{"irc addr", `"127.0.0.1:6667"`},
35
{"data dir", "path: ./ircd.db"},
36
{"api addr", `"127.0.0.1:8089"`},
37
{"api token", "test-token-abc123"},
38
{"api enabled", "enabled: true"},
39
}
40
41
for _, tc := range cases {
42
t.Run(tc.field, func(t *testing.T) {
43
if !strings.Contains(yaml, tc.want) {
44
t.Errorf("generated config missing %q\ngot:\n%s", tc.want, yaml)
45
}
46
})
47
}
48
}
49
50
func TestGenerateConfigWithPostgresHistory(t *testing.T) {
51
cfg := config.ErgoConfig{
52
NetworkName: "testnet",
53
ServerName: "irc.test.local",
54
IRCAddr: "127.0.0.1:6667",
55
DataDir: "/tmp/ergo",
56
APIAddr: "127.0.0.1:8089",
57
APIToken: "tok",
58
History: config.HistoryConfig{
59
Enabled: true,
60
PostgresDSN: "postgres://ergo:pass@localhost/ergo_history",
61
},
62
}
63
64
data, err := ergo.GenerateConfig(cfg)
65
if err != nil {
66
t.Fatalf("GenerateConfig: %v", err)
67
}
68
69
yaml := string(data)
70
if !strings.Contains(yaml, "enabled: true") {
71
t.Error("expected history enabled")
72
}
73
if !strings.Contains(yaml, "postgres://ergo:pass@localhost/ergo_history") {
74
t.Error("expected postgres DSN in config")
75
}
76
}
77
78
func TestGenerateConfigNoHistory(t *testing.T) {
79
cfg := config.ErgoConfig{
80
NetworkName: "testnet",
81
ServerName: "irc.test.local",
82
IRCAddr: "127.0.0.1:6667",
83
DataDir: "/tmp/ergo",
84
APIAddr: "127.0.0.1:8089",
85
APIToken: "tok",
86
}
87
88
data, err := ergo.GenerateConfig(cfg)
89
if err != nil {
90
t.Fatalf("GenerateConfig: %v", err)
91
}
92
93
yaml := string(data)
94
if strings.Contains(yaml, "postgres") {
95
t.Error("postgres config should not appear when history disabled")
96
}
97
}
98
99
func TestGenerateConfigRequireSASL(t *testing.T) {
100
cfg := config.ErgoConfig{
101
NetworkName: "testnet",
102
ServerName: "irc.test.local",
103
IRCAddr: "127.0.0.1:6667",
104
APIAddr: "127.0.0.1:8089",
105
APIToken: "tok",
106
RequireSASL: true,
107
}
108
109
data, err := ergo.GenerateConfig(cfg)
110
if err != nil {
111
t.Fatalf("GenerateConfig: %v", err)
112
}
113
114
yaml := string(data)
115
if !strings.Contains(yaml, "enabled: true") {
116
t.Error("require-sasl.enabled should be true")
117
}
118
}
119
120
func TestGenerateConfigDefaultChannelModes(t *testing.T) {
121
cfg := config.ErgoConfig{
122
NetworkName: "testnet",
123
ServerName: "irc.test.local",
124
IRCAddr: "127.0.0.1:6667",
125
APIAddr: "127.0.0.1:8089",
126
APIToken: "tok",
127
DefaultChannelModes: "+Rn",
128
}
129
130
data, err := ergo.GenerateConfig(cfg)
131
if err != nil {
132
t.Fatalf("GenerateConfig: %v", err)
133
}
134
135
yaml := string(data)
136
if !strings.Contains(yaml, `default-modes: "+Rn"`) {
137
t.Errorf("default-modes not set correctly\ngot:\n%s", yaml)
138
}
139
}
140

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button