mirror of
https://github.com/juanfont/headscale.git
synced 2025-08-01 19:44:31 -04:00
70 lines
2.4 KiB
Go
70 lines
2.4 KiB
Go
package cli
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestServeCommand(t *testing.T) {
|
|
// Test that the serve command exists and is properly configured
|
|
assert.NotNil(t, serveCmd)
|
|
assert.Equal(t, "serve", serveCmd.Use)
|
|
assert.Equal(t, "Launches the headscale server", serveCmd.Short)
|
|
assert.NotNil(t, serveCmd.Run)
|
|
assert.NotNil(t, serveCmd.Args)
|
|
}
|
|
|
|
func TestServeCommandInRootCommand(t *testing.T) {
|
|
// Test that serve is available as a subcommand of root
|
|
cmd, _, err := rootCmd.Find([]string{"serve"})
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "serve", cmd.Name())
|
|
assert.Equal(t, serveCmd, cmd)
|
|
}
|
|
|
|
func TestServeCommandArgs(t *testing.T) {
|
|
// Test that the Args function is defined and accepts any arguments
|
|
// The current implementation always returns nil (accepts any args)
|
|
assert.NotNil(t, serveCmd.Args)
|
|
|
|
// Test the args function directly
|
|
err := serveCmd.Args(serveCmd, []string{})
|
|
assert.NoError(t, err, "Args function should accept empty arguments")
|
|
|
|
err = serveCmd.Args(serveCmd, []string{"extra", "args"})
|
|
assert.NoError(t, err, "Args function should accept extra arguments")
|
|
}
|
|
|
|
func TestServeCommandHelp(t *testing.T) {
|
|
// Test that the command has proper help text
|
|
assert.NotEmpty(t, serveCmd.Short)
|
|
assert.Contains(t, serveCmd.Short, "server")
|
|
assert.Contains(t, serveCmd.Short, "headscale")
|
|
}
|
|
|
|
func TestServeCommandStructure(t *testing.T) {
|
|
// Test basic command structure
|
|
assert.Equal(t, "serve", serveCmd.Name())
|
|
assert.Equal(t, "Launches the headscale server", serveCmd.Short)
|
|
|
|
// Test that it has no subcommands (it's a leaf command)
|
|
subcommands := serveCmd.Commands()
|
|
assert.Empty(t, subcommands, "Serve command should not have subcommands")
|
|
}
|
|
|
|
// Note: We can't easily test the actual execution of serve because:
|
|
// 1. It depends on configuration files being present and valid
|
|
// 2. It calls log.Fatal() which would exit the test process
|
|
// 3. It tries to start an actual HTTP server which would block forever
|
|
// 4. It requires database connections and other infrastructure
|
|
//
|
|
// In a real refactor, we would:
|
|
// 1. Extract server initialization logic to a testable function
|
|
// 2. Use dependency injection for configuration and dependencies
|
|
// 3. Return errors instead of calling log.Fatal()
|
|
// 4. Add graceful shutdown capabilities for testing
|
|
// 5. Allow server startup to be cancelled via context
|
|
//
|
|
// For now, we test the command structure and basic properties. |