mirror of
https://github.com/juanfont/headscale.git
synced 2026-03-24 10:21:33 +01:00
init
This commit is contained in:
143
integration/version_cli_test.go
Normal file
143
integration/version_cli_test.go
Normal file
@@ -0,0 +1,143 @@
|
||||
package integration
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/juanfont/headscale/integration/hsic"
|
||||
"github.com/juanfont/headscale/integration/tsic"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestVersionCommand(t *testing.T) {
|
||||
IntegrationSkip(t)
|
||||
|
||||
spec := ScenarioSpec{
|
||||
Users: []string{"version-user"},
|
||||
}
|
||||
|
||||
scenario, err := NewScenario(spec)
|
||||
assertNoErr(t, err)
|
||||
defer scenario.ShutdownAssertNoPanics(t)
|
||||
|
||||
err = scenario.CreateHeadscaleEnv([]tsic.Option{}, hsic.WithTestName("cliversion"))
|
||||
assertNoErr(t, err)
|
||||
|
||||
headscale, err := scenario.Headscale()
|
||||
assertNoErr(t, err)
|
||||
|
||||
t.Run("test_version_basic", func(t *testing.T) {
|
||||
// Test basic version output
|
||||
result, err := headscale.Execute(
|
||||
[]string{
|
||||
"headscale",
|
||||
"version",
|
||||
},
|
||||
)
|
||||
assertNoErr(t, err)
|
||||
|
||||
// Version output should contain version information
|
||||
assert.NotEmpty(t, result, "version output should not be empty")
|
||||
// In development, version is "dev", in releases it would be semver like "1.0.0"
|
||||
trimmed := strings.TrimSpace(result)
|
||||
assert.True(t, trimmed == "dev" || len(trimmed) > 2, "version should be 'dev' or valid version string")
|
||||
})
|
||||
|
||||
t.Run("test_version_help", func(t *testing.T) {
|
||||
// Test version command help
|
||||
result, err := headscale.Execute(
|
||||
[]string{
|
||||
"headscale",
|
||||
"version",
|
||||
"--help",
|
||||
},
|
||||
)
|
||||
assertNoErr(t, err)
|
||||
|
||||
// Help text should contain expected information
|
||||
assert.Contains(t, result, "version", "help should mention version command")
|
||||
assert.Contains(t, result, "version of headscale", "help should contain command description")
|
||||
})
|
||||
|
||||
t.Run("test_version_with_extra_args", func(t *testing.T) {
|
||||
// Test version command with unexpected extra arguments
|
||||
result, err := headscale.Execute(
|
||||
[]string{
|
||||
"headscale",
|
||||
"version",
|
||||
"extra",
|
||||
"args",
|
||||
},
|
||||
)
|
||||
// Should either ignore extra args or handle gracefully
|
||||
// The exact behavior depends on implementation, but shouldn't crash
|
||||
assert.NotPanics(t, func() {
|
||||
headscale.Execute(
|
||||
[]string{
|
||||
"headscale",
|
||||
"version",
|
||||
"extra",
|
||||
"args",
|
||||
},
|
||||
)
|
||||
}, "version command should handle extra arguments gracefully")
|
||||
|
||||
// If it succeeds, should still contain version info
|
||||
if err == nil {
|
||||
assert.NotEmpty(t, result, "version output should not be empty")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func TestVersionCommandEdgeCases(t *testing.T) {
|
||||
IntegrationSkip(t)
|
||||
|
||||
spec := ScenarioSpec{
|
||||
Users: []string{"version-edge-user"},
|
||||
}
|
||||
|
||||
scenario, err := NewScenario(spec)
|
||||
assertNoErr(t, err)
|
||||
defer scenario.ShutdownAssertNoPanics(t)
|
||||
|
||||
err = scenario.CreateHeadscaleEnv([]tsic.Option{}, hsic.WithTestName("cliversionedge"))
|
||||
assertNoErr(t, err)
|
||||
|
||||
headscale, err := scenario.Headscale()
|
||||
assertNoErr(t, err)
|
||||
|
||||
t.Run("test_version_multiple_calls", func(t *testing.T) {
|
||||
// Test that version command can be called multiple times
|
||||
for i := 0; i < 3; i++ {
|
||||
result, err := headscale.Execute(
|
||||
[]string{
|
||||
"headscale",
|
||||
"version",
|
||||
},
|
||||
)
|
||||
assertNoErr(t, err)
|
||||
assert.NotEmpty(t, result, "version output should not be empty")
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("test_version_with_invalid_flag", func(t *testing.T) {
|
||||
// Test version command with invalid flag
|
||||
_, _ = headscale.Execute(
|
||||
[]string{
|
||||
"headscale",
|
||||
"version",
|
||||
"--invalid-flag",
|
||||
},
|
||||
)
|
||||
// Should handle invalid flag gracefully (either succeed ignoring flag or fail with error)
|
||||
assert.NotPanics(t, func() {
|
||||
headscale.Execute(
|
||||
[]string{
|
||||
"headscale",
|
||||
"version",
|
||||
"--invalid-flag",
|
||||
},
|
||||
)
|
||||
}, "version command should handle invalid flags gracefully")
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user