blocky/config/hosts_file_test.go

85 lines
1.9 KiB
Go

package config
import (
"time"
"github.com/creasty/defaults"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)
var _ = Describe("HostsFileConfig", func() {
var cfg HostsFile
suiteBeforeEach()
BeforeEach(func() {
cfg = HostsFile{
Sources: append(
NewBytesSources("/a/file/path"),
TextBytesSource("127.0.0.1 localhost"),
),
HostsTTL: Duration(29 * time.Minute),
Loading: SourceLoading{RefreshPeriod: Duration(30 * time.Minute)},
FilterLoopback: true,
}
})
Describe("IsEnabled", func() {
It("should be false by default", func() {
cfg := HostsFile{}
Expect(defaults.Set(&cfg)).Should(Succeed())
Expect(cfg.IsEnabled()).Should(BeFalse())
})
When("enabled", func() {
It("should be true", func() {
Expect(cfg.IsEnabled()).Should(BeTrue())
})
})
When("disabled", func() {
It("should be false", func() {
cfg := HostsFile{}
Expect(cfg.IsEnabled()).Should(BeFalse())
})
})
})
Describe("LogConfig", func() {
It("should log configuration", func() {
cfg.LogConfig(logger)
Expect(hook.Calls).ShouldNot(BeEmpty())
Expect(hook.Messages).Should(ContainElements(
ContainSubstring("- file:///a/file/path"),
ContainSubstring("- 127.0.0.1 lo..."),
))
})
})
Describe("migrate", func() {
It("should", func() {
cfg, err := WithDefaults[HostsFile]()
Expect(err).Should(Succeed())
cfg.Deprecated.Filepath = ptrOf(newBytesSource("/a/file/path"))
cfg.Deprecated.RefreshPeriod = ptrOf(Duration(time.Hour))
migrated := cfg.migrate(logger)
Expect(migrated).Should(BeTrue())
Expect(hook.Calls).ShouldNot(BeEmpty())
Expect(hook.Messages).Should(ContainElements(
ContainSubstring("hostsFile.loading.refreshPeriod"),
ContainSubstring("hostsFile.sources"),
))
Expect(cfg.Sources).Should(Equal([]BytesSource{*cfg.Deprecated.Filepath}))
Expect(cfg.Loading.RefreshPeriod).Should(Equal(*cfg.Deprecated.RefreshPeriod))
})
})
})