mirror of
https://github.com/psviderski/uncloud.git
synced 2026-08-26 19:13:34 +00:00
chore: validate endpoints is not empty in update machine requests
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user