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