mirror of
https://github.com/juanfont/headscale.git
synced 2024-12-20 19:09:07 +01:00
Add namespace command test
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
This commit is contained in:
parent
2c0488da0b
commit
cb61a490e0
93
integration/cli_test.go
Normal file
93
integration/cli_test.go
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
package integration
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
v1 "github.com/juanfont/headscale/gen/go/headscale/v1"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func executeAndUnmarshal[T any](headscale ControlServer, command []string, result T) error {
|
||||||
|
str, err := headscale.Execute(command)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = json.Unmarshal([]byte(str), result)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestNamespaceCommand(t *testing.T) {
|
||||||
|
IntegrationSkip(t)
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
scenario, err := NewScenario()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
spec := map[string]int{
|
||||||
|
"namespace1": 0,
|
||||||
|
"namespace2": 0,
|
||||||
|
}
|
||||||
|
|
||||||
|
err = scenario.CreateHeadscaleEnv(spec)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
var listNamespaces []v1.Namespace
|
||||||
|
err = executeAndUnmarshal(scenario.Headscale(),
|
||||||
|
[]string{
|
||||||
|
"headscale",
|
||||||
|
"namespaces",
|
||||||
|
"list",
|
||||||
|
"--output",
|
||||||
|
"json",
|
||||||
|
},
|
||||||
|
&listNamespaces,
|
||||||
|
)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
assert.Equal(
|
||||||
|
t,
|
||||||
|
[]string{"namespace1", "namespace2"},
|
||||||
|
[]string{listNamespaces[0].Name, listNamespaces[1].Name},
|
||||||
|
)
|
||||||
|
|
||||||
|
_, err = scenario.Headscale().Execute(
|
||||||
|
[]string{
|
||||||
|
"headscale",
|
||||||
|
"namespaces",
|
||||||
|
"rename",
|
||||||
|
"--output",
|
||||||
|
"json",
|
||||||
|
"namespace2",
|
||||||
|
"newname",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
var listAfterRenameNamespaces []v1.Namespace
|
||||||
|
err = executeAndUnmarshal(scenario.Headscale(),
|
||||||
|
[]string{
|
||||||
|
"headscale",
|
||||||
|
"namespaces",
|
||||||
|
"list",
|
||||||
|
"--output",
|
||||||
|
"json",
|
||||||
|
},
|
||||||
|
&listAfterRenameNamespaces,
|
||||||
|
)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
assert.Equal(
|
||||||
|
t,
|
||||||
|
[]string{"namespace1", "newname"},
|
||||||
|
[]string{listAfterRenameNamespaces[0].Name, listAfterRenameNamespaces[1].Name},
|
||||||
|
)
|
||||||
|
|
||||||
|
err = scenario.Shutdown()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user