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  }