chore: validate endpoints is not empty in update machine requests

This commit is contained in:
Pasha Sviderski
2026-03-03 19:04:41 +10:00
parent 4de17cb63c
commit 2405b156e4
2 changed files with 22 additions and 0 deletions
+3
View File
@@ -260,6 +260,9 @@ func (c *Cluster) UpdateMachine(ctx context.Context, req *pb.UpdateMachineReques
}
}
if req.Endpoints != nil {
if len(req.Endpoints) == 0 {
return nil, status.Error(codes.InvalidArgument, "endpoints cannot be empty")
}
updatedMachine.Network.Endpoints = req.Endpoints
}
+19
View File
@@ -10,6 +10,8 @@ import (
"github.com/psviderski/uncloud/pkg/api"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
func TestMachineRename(t *testing.T) {
@@ -359,6 +361,23 @@ func TestUpdateMachine(t *testing.T) {
assert.Equal(t, targetMachine.Machine.Network.Subnet.Bits, updatedMachine.Network.Subnet.Bits)
assert.Equal(t, targetMachine.Machine.Network.ManagementIp.Ip, updatedMachine.Network.ManagementIp.Ip)
assert.Equal(t, targetMachine.Machine.Network.PublicKey, updatedMachine.Network.PublicKey)
// Try to update with empty endpoints (should be rejected).
req = &pb.UpdateMachineRequest{
MachineId: targetMachine.Machine.Id,
Endpoints: []*pb.IPPort{},
}
_, err = cli.UpdateMachine(ctx, req)
require.Error(t, err)
st, ok := status.FromError(err)
require.True(t, ok)
assert.Equal(t, codes.InvalidArgument, st.Code())
// Verify endpoints remain unchanged.
inspected, err := cli.InspectMachine(ctx, targetMachine.Machine.Id)
require.NoError(t, err)
assert.Equal(t, newEndpoints, inspected.Machine.Network.Endpoints)
})
t.Run("update multiple fields simultaneously", func(t *testing.T) {