Add a very simple test.

This commit is contained in:
Ward Vandewege 2021-04-25 11:24:42 -04:00
parent 031c91a545
commit 37601f6b4d
3 changed files with 70 additions and 6 deletions

View file

@ -7,7 +7,7 @@ build:
dev: lint test build dev: lint test build
test: test:
go test -coverprofile=coverage.out @go test -coverprofile=coverage.out ./...
coverprofile_func: coverprofile_func:
go tool cover -func=coverage.out go tool cover -func=coverage.out

View file

@ -249,11 +249,16 @@ var createPreAuthKeyCmd = &cobra.Command{
}, },
} }
func main() { func loadConfig(path string) {
viper.SetConfigName("config") viper.SetConfigName("config")
viper.AddConfigPath("/etc/headscale/") if path == "" {
viper.AddConfigPath("$HOME/.headscale") viper.AddConfigPath("/etc/headscale/")
viper.AddConfigPath(".") viper.AddConfigPath("$HOME/.headscale")
viper.AddConfigPath(".")
} else {
// For testing
viper.AddConfigPath(path)
}
viper.AutomaticEnv() viper.AutomaticEnv()
viper.SetDefault("tls_letsencrypt_cache_dir", "/var/www/.cache") viper.SetDefault("tls_letsencrypt_cache_dir", "/var/www/.cache")
@ -279,6 +284,10 @@ func main() {
if !strings.HasPrefix(viper.GetString("server_url"), "http://") && !strings.HasPrefix(viper.GetString("server_url"), "https://") { if !strings.HasPrefix(viper.GetString("server_url"), "http://") && !strings.HasPrefix(viper.GetString("server_url"), "https://") {
log.Fatalf("Fatal config error: server_url must start with https:// or http://") log.Fatalf("Fatal config error: server_url must start with https:// or http://")
} }
}
func main() {
loadConfig("")
headscaleCmd.AddCommand(versionCmd) headscaleCmd.AddCommand(versionCmd)
headscaleCmd.AddCommand(serveCmd) headscaleCmd.AddCommand(serveCmd)
@ -302,7 +311,6 @@ func main() {
fmt.Println(err) fmt.Println(err)
os.Exit(-1) os.Exit(-1)
} }
} }
func absPath(path string) string { func absPath(path string) string {

View file

@ -0,0 +1,56 @@
package main
import (
"io/ioutil"
"os"
"path/filepath"
"testing"
"github.com/spf13/viper"
"gopkg.in/check.v1"
)
func Test(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) TestConfigLoading(c *check.C) {
tmpDir, err := ioutil.TempDir("", "headscale")
if err != nil {
c.Fatal(err)
}
defer os.RemoveAll(tmpDir)
path, err := os.Getwd()
if err != nil {
c.Fatal(err)
}
// Symlink the example config file
err = os.Symlink(filepath.Clean(path+"/../../config.json.example"), filepath.Join(tmpDir, "config.json"))
if err != nil {
c.Fatal(err)
}
// Load config
loadConfig(tmpDir)
// Test that config file was interpreted correctly
c.Assert(viper.GetString("server_url"), check.Equals, "http://192.168.1.12:8000")
c.Assert(viper.GetString("listen_addr"), check.Equals, "0.0.0.0:8000")
c.Assert(viper.GetString("derp_map_path"), check.Equals, "derp.yaml")
c.Assert(viper.GetString("db_port"), check.Equals, "5432")
c.Assert(viper.GetString("tls_letsencrypt_hostname"), check.Equals, "")
c.Assert(viper.GetString("tls_letsencrypt_challenge_type"), check.Equals, "HTTP-01")
}