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 }