ScuttleBot

scuttlebot / internal / ergo / ircdconfig_test.go
Source Blame History 139 lines
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 }

Keyboard Shortcuts

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