mirror of
https://github.com/juanfont/headscale.git
synced 2024-12-28 07:05:51 -05:00
14e29a7bee
This is step one in detaching the Database layer from Headscale (h). The ultimate goal is to have all function that does database operations in its own package, and keep the business logic and writing separate. Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
76 lines
1.2 KiB
Go
76 lines
1.2 KiB
Go
package hscontrol
|
|
|
|
import (
|
|
"net/netip"
|
|
"os"
|
|
"testing"
|
|
|
|
"gopkg.in/check.v1"
|
|
)
|
|
|
|
func Test(t *testing.T) {
|
|
check.TestingT(t)
|
|
}
|
|
|
|
var _ = check.Suite(&Suite{})
|
|
|
|
type Suite struct{}
|
|
|
|
var (
|
|
tmpDir string
|
|
app Headscale
|
|
)
|
|
|
|
func (s *Suite) SetUpTest(c *check.C) {
|
|
s.ResetDB(c)
|
|
}
|
|
|
|
func (s *Suite) TearDownTest(c *check.C) {
|
|
os.RemoveAll(tmpDir)
|
|
}
|
|
|
|
func (s *Suite) ResetDB(c *check.C) {
|
|
if len(tmpDir) != 0 {
|
|
os.RemoveAll(tmpDir)
|
|
}
|
|
var err error
|
|
tmpDir, err = os.MkdirTemp("", "autoygg-client-test")
|
|
if err != nil {
|
|
c.Fatal(err)
|
|
}
|
|
cfg := Config{
|
|
IPPrefixes: []netip.Prefix{
|
|
netip.MustParsePrefix("10.27.0.0/23"),
|
|
},
|
|
OIDC: OIDCConfig{
|
|
StripEmaildomain: false,
|
|
},
|
|
}
|
|
|
|
// TODO(kradalby): make this use NewHeadscale properly so it doesnt drift
|
|
app = Headscale{
|
|
cfg: &cfg,
|
|
dbType: "sqlite3",
|
|
dbString: tmpDir + "/headscale_test.db",
|
|
|
|
stateUpdateChan: make(chan struct{}),
|
|
cancelStateUpdateChan: make(chan struct{}),
|
|
}
|
|
|
|
go app.watchStateChannel()
|
|
|
|
db, err := NewHeadscaleDatabase(
|
|
app.dbType,
|
|
app.dbString,
|
|
cfg.OIDC.StripEmaildomain,
|
|
false,
|
|
app.stateUpdateChan,
|
|
cfg.IPPrefixes,
|
|
"",
|
|
)
|
|
if err != nil {
|
|
c.Fatal(err)
|
|
}
|
|
app.db = db
|
|
}
|