Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions internal/cmd/network/update/update.go
Original file line number Diff line number Diff line change
Expand Up @@ -180,8 +180,10 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli
var payloadIPv6 *iaas.UpdateNetworkIPv6Body

if model.IPv6DnsNameServers != nil || model.NoIPv6Gateway || model.IPv6Gateway != nil {
payloadIPv6 = &iaas.UpdateNetworkIPv6Body{
Nameservers: *model.IPv6DnsNameServers,
payloadIPv6 = &iaas.UpdateNetworkIPv6Body{}

if model.IPv6DnsNameServers != nil {
payloadIPv6.Nameservers = *model.IPv6DnsNameServers
}

if model.NoIPv6Gateway {
Expand All @@ -192,8 +194,10 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli
}

if model.IPv4DnsNameServers != nil || model.NoIPv4Gateway || model.IPv4Gateway != nil {
payloadIPv4 = &iaas.UpdateNetworkIPv4Body{
Nameservers: *model.IPv4DnsNameServers,
payloadIPv4 = &iaas.UpdateNetworkIPv4Body{}

if model.IPv4DnsNameServers != nil {
payloadIPv4.Nameservers = *model.IPv4DnsNameServers
Comment thread
marceljk marked this conversation as resolved.
}

if model.NoIPv4Gateway {
Expand Down
30 changes: 25 additions & 5 deletions internal/cmd/network/update/update_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,12 +80,10 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel {
return model
}

func fixtureRequest(mods ...func(request *iaas.ApiPartialUpdateNetworkRequest)) iaas.ApiPartialUpdateNetworkRequest {
func fixtureRequest(mods ...func(payload *iaas.PartialUpdateNetworkPayload)) iaas.ApiPartialUpdateNetworkRequest {
request := testClient.DefaultAPI.PartialUpdateNetwork(testCtx, testProjectId, testRegion, testNetworkId)
request = request.PartialUpdateNetworkPayload(fixturePayload())
for _, mod := range mods {
mod(&request)
}
payload := fixturePayload(mods...)
request = request.PartialUpdateNetworkPayload(payload)
return request
}

Expand Down Expand Up @@ -319,6 +317,28 @@ func TestBuildRequest(t *testing.T) {
model: fixtureInputModel(),
expectedRequest: fixtureRequest(),
},
{
description: "not setting IPv4DnsNameServers does not result in nil pointer dereference",
model: fixtureInputModel(func(model *inputModel) {
model.IPv4DnsNameServers = nil
model.IPv4Gateway = new("1.1.1.1")
}),
expectedRequest: fixtureRequest(func(payload *iaas.PartialUpdateNetworkPayload) {
payload.Ipv4.Nameservers = nil
payload.Ipv4.Gateway = *iaas.NewNullableString(new("1.1.1.1"))
}),
},
{
description: "not setting IPv6DnsNameServers does not result in nil pointer dereference",
model: fixtureInputModel(func(model *inputModel) {
model.IPv6DnsNameServers = nil
model.IPv6Gateway = new("1.1.1.1")
}),
expectedRequest: fixtureRequest(func(payload *iaas.PartialUpdateNetworkPayload) {
payload.Ipv6.Nameservers = nil
payload.Ipv6.Gateway = *iaas.NewNullableString(new("1.1.1.1"))
}),
},
}

for _, tt := range tests {
Expand Down
Loading