github.com/sacloud/iaas-api-go@v1.12.0/test/private_host_op_test.go (about)

     1  // Copyright 2022-2023 The sacloud/iaas-api-go 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 test
    16  
    17  import (
    18  	"testing"
    19  
    20  	"github.com/sacloud/iaas-api-go"
    21  	"github.com/sacloud/iaas-api-go/testutil"
    22  )
    23  
    24  func TestPrivateHostOp_CRUD(t *testing.T) {
    25  	testutil.RunCRUD(t, &testutil.CRUDTestCase{
    26  		Parallel:           true,
    27  		IgnoreStartupWait:  true,
    28  		SetupAPICallerFunc: singletonAPICaller,
    29  		Setup: func(ctx *testutil.CRUDTestContext, caller iaas.APICaller) error {
    30  			planOp := iaas.NewPrivateHostPlanOp(caller)
    31  			searched, err := planOp.Find(ctx, privateHostTestZone, nil)
    32  			if err != nil {
    33  				return err
    34  			}
    35  			planID := searched.PrivateHostPlans[0].ID
    36  			createPrivateHostParam.PlanID = planID
    37  			createPrivateHostExpected.PlanID = planID
    38  			updatePrivateHostExpected.PlanID = planID
    39  			updatePrivateHostToMinExpected.PlanID = planID
    40  			return nil
    41  		},
    42  		Create: &testutil.CRUDTestFunc{
    43  			Func: testPrivateHostCreate,
    44  			CheckFunc: testutil.AssertEqualWithExpected(&testutil.CRUDTestExpect{
    45  				ExpectValue:  createPrivateHostExpected,
    46  				IgnoreFields: ignorePrivateHostFields,
    47  			}),
    48  		},
    49  		Read: &testutil.CRUDTestFunc{
    50  			Func: testPrivateHostRead,
    51  			CheckFunc: testutil.AssertEqualWithExpected(&testutil.CRUDTestExpect{
    52  				ExpectValue:  createPrivateHostExpected,
    53  				IgnoreFields: ignorePrivateHostFields,
    54  			}),
    55  		},
    56  		Updates: []*testutil.CRUDTestFunc{
    57  			{
    58  				Func: testPrivateHostUpdate,
    59  				CheckFunc: testutil.AssertEqualWithExpected(&testutil.CRUDTestExpect{
    60  					ExpectValue:  updatePrivateHostExpected,
    61  					IgnoreFields: ignorePrivateHostFields,
    62  				}),
    63  			},
    64  			{
    65  				Func: testPrivateHostUpdateToMin,
    66  				CheckFunc: testutil.AssertEqualWithExpected(&testutil.CRUDTestExpect{
    67  					ExpectValue:  updatePrivateHostToMinExpected,
    68  					IgnoreFields: ignorePrivateHostFields,
    69  				}),
    70  			},
    71  		},
    72  		Delete: &testutil.CRUDTestDeleteFunc{
    73  			Func: testPrivateHostDelete,
    74  		},
    75  	})
    76  }
    77  
    78  var (
    79  	privateHostTestZone = "tk1a"
    80  
    81  	ignorePrivateHostFields = []string{
    82  		"ID",
    83  		"CreatedAt",
    84  		"PlanName",
    85  		"PlanClass",
    86  		"HostName",
    87  		"CPU",
    88  		"MemoryMB",
    89  	}
    90  
    91  	createPrivateHostParam = &iaas.PrivateHostCreateRequest{
    92  		Name:        testutil.ResourceName("private-host"),
    93  		Description: "libsacloud-private-host",
    94  		Tags:        []string{"tag1", "tag2"},
    95  	}
    96  	createPrivateHostExpected = &iaas.PrivateHost{
    97  		Name:             createPrivateHostParam.Name,
    98  		Description:      createPrivateHostParam.Description,
    99  		Tags:             createPrivateHostParam.Tags,
   100  		CPU:              224,
   101  		AssignedCPU:      0,
   102  		AssignedMemoryMB: 0,
   103  	}
   104  	updatePrivateHostParam = &iaas.PrivateHostUpdateRequest{
   105  		Name:        testutil.ResourceName("private-host-upd"),
   106  		Description: "libsacloud-private-host-upd",
   107  		Tags:        []string{"tag1-upd", "tag2-upd"},
   108  		IconID:      testIconID,
   109  	}
   110  	updatePrivateHostExpected = &iaas.PrivateHost{
   111  		Name:             updatePrivateHostParam.Name,
   112  		Description:      updatePrivateHostParam.Description,
   113  		Tags:             updatePrivateHostParam.Tags,
   114  		CPU:              224,
   115  		AssignedCPU:      0,
   116  		AssignedMemoryMB: 0,
   117  		IconID:           testIconID,
   118  	}
   119  	updatePrivateHostToMinParam = &iaas.PrivateHostUpdateRequest{
   120  		Name: testutil.ResourceName("private-host-to-min"),
   121  	}
   122  	updatePrivateHostToMinExpected = &iaas.PrivateHost{
   123  		Name:             updatePrivateHostToMinParam.Name,
   124  		CPU:              224,
   125  		AssignedCPU:      0,
   126  		AssignedMemoryMB: 0,
   127  	}
   128  )
   129  
   130  func testPrivateHostCreate(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) {
   131  	client := iaas.NewPrivateHostOp(caller)
   132  	return client.Create(ctx, privateHostTestZone, createPrivateHostParam)
   133  }
   134  
   135  func testPrivateHostRead(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) {
   136  	client := iaas.NewPrivateHostOp(caller)
   137  	return client.Read(ctx, privateHostTestZone, ctx.ID)
   138  }
   139  
   140  func testPrivateHostUpdate(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) {
   141  	client := iaas.NewPrivateHostOp(caller)
   142  	return client.Update(ctx, privateHostTestZone, ctx.ID, updatePrivateHostParam)
   143  }
   144  
   145  func testPrivateHostUpdateToMin(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) {
   146  	client := iaas.NewPrivateHostOp(caller)
   147  	return client.Update(ctx, privateHostTestZone, ctx.ID, updatePrivateHostToMinParam)
   148  }
   149  
   150  func testPrivateHostDelete(ctx *testutil.CRUDTestContext, caller iaas.APICaller) error {
   151  	client := iaas.NewPrivateHostOp(caller)
   152  	return client.Delete(ctx, privateHostTestZone, ctx.ID)
   153  }