github.com/sacloud/libsacloud/v2@v2.32.3/helper/service/server/apply_test.go (about) 1 // Copyright 2016-2022 The Libsacloud Authors 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package server 16 17 import ( 18 "testing" 19 20 diskBuilder "github.com/sacloud/libsacloud/v2/helper/builder/disk" 21 serverBuilder "github.com/sacloud/libsacloud/v2/helper/builder/server" 22 diskService "github.com/sacloud/libsacloud/v2/helper/service/disk" 23 "github.com/sacloud/libsacloud/v2/sacloud/testutil" 24 "github.com/sacloud/libsacloud/v2/sacloud/types" 25 "github.com/stretchr/testify/require" 26 ) 27 28 func TestServerService_convertApplyRequest(t *testing.T) { 29 caller := testutil.SingletonAPICaller() 30 31 cases := []struct { 32 in *ApplyRequest 33 expect *serverBuilder.Builder 34 }{ 35 { 36 in: &ApplyRequest{ 37 Zone: "tk1a", 38 ID: 101, 39 Name: "name", 40 Description: "desc", 41 Tags: types.Tags{"tag1", "tag2"}, 42 IconID: 102, 43 CPU: 2, 44 MemoryGB: 4, 45 GPU: 0, 46 Commitment: types.Commitments.DedicatedCPU, 47 Generation: types.PlanGenerations.Default, 48 InterfaceDriver: types.InterfaceDrivers.VirtIO, 49 BootAfterCreate: true, 50 CDROMID: 103, 51 PrivateHostID: 104, 52 NetworkInterfaces: []*NetworkInterface{ 53 {Upstream: "shared", PacketFilterID: 105}, 54 {Upstream: "106", PacketFilterID: 107, UserIPAddress: "192.168.0.101"}, 55 }, 56 Disks: []*diskService.ApplyRequest{ 57 { 58 Zone: "tk1a", 59 ID: 201, 60 Name: "name", 61 Description: "desc", 62 SizeGB: 20, 63 }, 64 }, 65 NoWait: true, 66 ForceShutdown: true, 67 }, 68 expect: &serverBuilder.Builder{ 69 Name: "name", 70 CPU: 2, 71 MemoryGB: 4, 72 Commitment: types.Commitments.DedicatedCPU, 73 Generation: types.PlanGenerations.Default, 74 InterfaceDriver: types.InterfaceDrivers.VirtIO, 75 Description: "desc", 76 IconID: 102, 77 Tags: types.Tags{"tag1", "tag2"}, 78 BootAfterCreate: true, 79 CDROMID: 103, 80 PrivateHostID: 104, 81 NIC: &serverBuilder.SharedNICSetting{PacketFilterID: 105}, 82 AdditionalNICs: []serverBuilder.AdditionalNICSettingHolder{ 83 &serverBuilder.ConnectedNICSetting{ 84 SwitchID: 106, 85 DisplayIPAddress: "192.168.0.101", 86 PacketFilterID: 107, 87 }, 88 }, 89 DiskBuilders: []diskBuilder.Builder{ 90 &diskBuilder.ConnectedDiskBuilder{ 91 ID: 201, 92 Name: "name", 93 Description: "desc", 94 Client: diskBuilder.NewBuildersAPIClient(caller), 95 }, 96 }, 97 Client: serverBuilder.NewBuildersAPIClient(caller), 98 NoWait: true, 99 ServerID: 101, 100 ForceShutdown: true, 101 }, 102 }, 103 } 104 105 for _, tc := range cases { 106 builder, err := tc.in.Builder(caller) 107 require.NoError(t, err) 108 require.EqualValues(t, tc.expect, builder) 109 } 110 }