cmd/headscale: migrate tests from check.v1 to testify

Convert config loading tests from gopkg.in/check.v1 Suite-based testing
to standard Go tests with testify assert/require.

Changes:
- Remove Suite boilerplate (Test, Suite type, SetUpSuite, TearDownSuite)
- Convert TestConfigFileLoading and TestConfigLoading to standalone tests
- Replace check assertions with testify equivalents
This commit is contained in:
Kristoffer Dalby
2026-01-16 16:32:57 +00:00
parent 424e26d636
commit 6654142fbe

View File

@@ -9,34 +9,17 @@ import (
"github.com/juanfont/headscale/hscontrol/types" "github.com/juanfont/headscale/hscontrol/types"
"github.com/juanfont/headscale/hscontrol/util" "github.com/juanfont/headscale/hscontrol/util"
"github.com/spf13/viper" "github.com/spf13/viper"
"gopkg.in/check.v1" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
) )
func Test(t *testing.T) { func TestConfigFileLoading(t *testing.T) {
check.TestingT(t)
}
var _ = check.Suite(&Suite{})
type Suite struct{}
func (s *Suite) SetUpSuite(c *check.C) {
}
func (s *Suite) TearDownSuite(c *check.C) {
}
func (*Suite) TestConfigFileLoading(c *check.C) {
tmpDir, err := os.MkdirTemp("", "headscale") tmpDir, err := os.MkdirTemp("", "headscale")
if err != nil { require.NoError(t, err)
c.Fatal(err)
}
defer os.RemoveAll(tmpDir) defer os.RemoveAll(tmpDir)
path, err := os.Getwd() path, err := os.Getwd()
if err != nil { require.NoError(t, err)
c.Fatal(err)
}
cfgFile := filepath.Join(tmpDir, "config.yaml") cfgFile := filepath.Join(tmpDir, "config.yaml")
@@ -45,70 +28,54 @@ func (*Suite) TestConfigFileLoading(c *check.C) {
filepath.Clean(path+"/../../config-example.yaml"), filepath.Clean(path+"/../../config-example.yaml"),
cfgFile, cfgFile,
) )
if err != nil { require.NoError(t, err)
c.Fatal(err)
}
// Load example config, it should load without validation errors // Load example config, it should load without validation errors
err = types.LoadConfig(cfgFile, true) err = types.LoadConfig(cfgFile, true)
c.Assert(err, check.IsNil) require.NoError(t, err)
// Test that config file was interpreted correctly // Test that config file was interpreted correctly
c.Assert(viper.GetString("server_url"), check.Equals, "http://127.0.0.1:8080") assert.Equal(t, "http://127.0.0.1:8080", viper.GetString("server_url"))
c.Assert(viper.GetString("listen_addr"), check.Equals, "127.0.0.1:8080") assert.Equal(t, "127.0.0.1:8080", viper.GetString("listen_addr"))
c.Assert(viper.GetString("metrics_listen_addr"), check.Equals, "127.0.0.1:9090") assert.Equal(t, "127.0.0.1:9090", viper.GetString("metrics_listen_addr"))
c.Assert(viper.GetString("database.type"), check.Equals, "sqlite") assert.Equal(t, "sqlite", viper.GetString("database.type"))
c.Assert(viper.GetString("database.sqlite.path"), check.Equals, "/var/lib/headscale/db.sqlite") assert.Equal(t, "/var/lib/headscale/db.sqlite", viper.GetString("database.sqlite.path"))
c.Assert(viper.GetString("tls_letsencrypt_hostname"), check.Equals, "") assert.Empty(t, viper.GetString("tls_letsencrypt_hostname"))
c.Assert(viper.GetString("tls_letsencrypt_listen"), check.Equals, ":http") assert.Equal(t, ":http", viper.GetString("tls_letsencrypt_listen"))
c.Assert(viper.GetString("tls_letsencrypt_challenge_type"), check.Equals, "HTTP-01") assert.Equal(t, "HTTP-01", viper.GetString("tls_letsencrypt_challenge_type"))
c.Assert( assert.Equal(t, fs.FileMode(0o770), util.GetFileMode("unix_socket_permission"))
util.GetFileMode("unix_socket_permission"), assert.False(t, viper.GetBool("logtail.enabled"))
check.Equals,
fs.FileMode(0o770),
)
c.Assert(viper.GetBool("logtail.enabled"), check.Equals, false)
} }
func (*Suite) TestConfigLoading(c *check.C) { func TestConfigLoading(t *testing.T) {
tmpDir, err := os.MkdirTemp("", "headscale") tmpDir, err := os.MkdirTemp("", "headscale")
if err != nil { require.NoError(t, err)
c.Fatal(err)
}
defer os.RemoveAll(tmpDir) defer os.RemoveAll(tmpDir)
path, err := os.Getwd() path, err := os.Getwd()
if err != nil { require.NoError(t, err)
c.Fatal(err)
}
// Symlink the example config file // Symlink the example config file
err = os.Symlink( err = os.Symlink(
filepath.Clean(path+"/../../config-example.yaml"), filepath.Clean(path+"/../../config-example.yaml"),
filepath.Join(tmpDir, "config.yaml"), filepath.Join(tmpDir, "config.yaml"),
) )
if err != nil { require.NoError(t, err)
c.Fatal(err)
}
// Load example config, it should load without validation errors // Load example config, it should load without validation errors
err = types.LoadConfig(tmpDir, false) err = types.LoadConfig(tmpDir, false)
c.Assert(err, check.IsNil) require.NoError(t, err)
// Test that config file was interpreted correctly // Test that config file was interpreted correctly
c.Assert(viper.GetString("server_url"), check.Equals, "http://127.0.0.1:8080") assert.Equal(t, "http://127.0.0.1:8080", viper.GetString("server_url"))
c.Assert(viper.GetString("listen_addr"), check.Equals, "127.0.0.1:8080") assert.Equal(t, "127.0.0.1:8080", viper.GetString("listen_addr"))
c.Assert(viper.GetString("metrics_listen_addr"), check.Equals, "127.0.0.1:9090") assert.Equal(t, "127.0.0.1:9090", viper.GetString("metrics_listen_addr"))
c.Assert(viper.GetString("database.type"), check.Equals, "sqlite") assert.Equal(t, "sqlite", viper.GetString("database.type"))
c.Assert(viper.GetString("database.sqlite.path"), check.Equals, "/var/lib/headscale/db.sqlite") assert.Equal(t, "/var/lib/headscale/db.sqlite", viper.GetString("database.sqlite.path"))
c.Assert(viper.GetString("tls_letsencrypt_hostname"), check.Equals, "") assert.Empty(t, viper.GetString("tls_letsencrypt_hostname"))
c.Assert(viper.GetString("tls_letsencrypt_listen"), check.Equals, ":http") assert.Equal(t, ":http", viper.GetString("tls_letsencrypt_listen"))
c.Assert(viper.GetString("tls_letsencrypt_challenge_type"), check.Equals, "HTTP-01") assert.Equal(t, "HTTP-01", viper.GetString("tls_letsencrypt_challenge_type"))
c.Assert( assert.Equal(t, fs.FileMode(0o770), util.GetFileMode("unix_socket_permission"))
util.GetFileMode("unix_socket_permission"), assert.False(t, viper.GetBool("logtail.enabled"))
check.Equals, assert.False(t, viper.GetBool("randomize_client_port"))
fs.FileMode(0o770),
)
c.Assert(viper.GetBool("logtail.enabled"), check.Equals, false)
c.Assert(viper.GetBool("randomize_client_port"), check.Equals, false)
} }