Files
ionscale/tests/set_machine_name_test.go
2025-02-15 15:17:37 +01:00

90 lines
2.3 KiB
Go

package tests
import (
"github.com/jsiebens/ionscale/tests/sc"
"github.com/jsiebens/ionscale/tests/tsn"
"github.com/stretchr/testify/require"
"testing"
)
func TestNewHostnameShouldPropagateToPeersWhenSet(t *testing.T) {
sc.Run(t, func(s *sc.Scenario) {
tailnet := s.CreateTailnet()
key := s.CreateAuthKey(tailnet.Id, true)
initialName := sc.RandomName()
nodeA := s.NewTailscaleNode()
nodeB := s.NewTailscaleNode(sc.WithName(initialName))
require.NoError(t, nodeA.Up(key))
require.NoError(t, nodeB.Up(key))
require.NoError(t, nodeA.WaitFor(tsn.HasPeer(initialName)))
newName := sc.RandomName()
require.NoError(t, nodeB.SetHostname(newName))
require.NoError(t, nodeA.WaitFor(tsn.HasPeer(newName)))
})
}
func TestSetHostname(t *testing.T) {
sc.Run(t, func(s *sc.Scenario) {
tailnet := s.CreateTailnet()
key := s.CreateAuthKey(tailnet.Id, true)
initialName := sc.RandomName()
nodeA := s.NewTailscaleNode()
nodeB := s.NewTailscaleNode(sc.WithName(initialName))
require.NoError(t, nodeA.Up(key))
require.NoError(t, nodeB.Up(key))
require.NoError(t, nodeA.WaitFor(tsn.HasPeer(initialName)))
mid, err := s.FindMachine(tailnet.Id, initialName)
require.NoError(t, err)
newName := sc.RandomName()
require.NoError(t, s.SetMachineName(mid, false, newName))
require.NoError(t, nodeA.WaitFor(tsn.HasPeer(newName)))
require.NoError(t, s.SetMachineName(mid, true, ""))
require.NoError(t, nodeA.WaitFor(tsn.HasPeer(initialName)))
})
}
func TestSetHostnameWhenNameAlreadyInUse(t *testing.T) {
sc.Run(t, func(s *sc.Scenario) {
tailnet := s.CreateTailnet()
key := s.CreateAuthKey(tailnet.Id, true)
nodeA := s.NewTailscaleNode(sc.WithName("node-a"))
nodeB := s.NewTailscaleNode(sc.WithName("node-b"))
require.NoError(t, nodeA.Up(key))
require.NoError(t, nodeB.Up(key))
require.NoError(t, nodeA.WaitFor(tsn.PeerCount(1)))
require.NoError(t, nodeB.WaitFor(tsn.PeerCount(1)))
mida, err := s.FindMachine(tailnet.Id, "node-a")
require.NoError(t, err)
midb, err := s.FindMachine(tailnet.Id, "node-b")
require.NoError(t, err)
newName := sc.RandomName()
require.NoError(t, s.SetMachineName(mida, false, newName))
require.NoError(t, nodeB.WaitFor(tsn.HasPeer(newName)))
err = s.SetMachineName(midb, false, newName)
require.ErrorContains(t, err, "machine name already in use")
})
}