github.com/sacloud/iaas-api-go@v1.12.0/test/nfs_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/helper/power" 22 "github.com/sacloud/iaas-api-go/helper/query" 23 "github.com/sacloud/iaas-api-go/testutil" 24 "github.com/sacloud/iaas-api-go/types" 25 ) 26 27 func TestNFSOp_CRUD(t *testing.T) { 28 testutil.RunCRUD(t, &testutil.CRUDTestCase{ 29 Parallel: true, 30 31 SetupAPICallerFunc: singletonAPICaller, 32 Setup: func(ctx *testutil.CRUDTestContext, caller iaas.APICaller) error { 33 err := setupSwitchFunc("nfs", 34 createNFSParam, 35 createNFSExpected, 36 updateNFSExpected, 37 updateNFSToMinExpected, 38 )(ctx, caller) 39 if err != nil { 40 return err 41 } 42 43 // find plan id 44 planID, err := query.FindNFSPlanID(ctx, iaas.NewNoteOp(caller), types.NFSPlans.HDD, types.NFSHDDSizes.Size100GB) 45 if err != nil { 46 return err 47 } 48 createNFSParam.PlanID = planID 49 createNFSExpected.PlanID = planID 50 updateNFSExpected.PlanID = planID 51 updateNFSToMinExpected.PlanID = planID 52 return nil 53 }, 54 55 Create: &testutil.CRUDTestFunc{ 56 Func: testNFSCreate, 57 CheckFunc: testutil.AssertEqualWithExpected(&testutil.CRUDTestExpect{ 58 ExpectValue: createNFSExpected, 59 IgnoreFields: ignoreNFSFields, 60 }), 61 }, 62 63 Read: &testutil.CRUDTestFunc{ 64 Func: testNFSRead, 65 CheckFunc: testutil.AssertEqualWithExpected(&testutil.CRUDTestExpect{ 66 ExpectValue: createNFSExpected, 67 IgnoreFields: ignoreNFSFields, 68 }), 69 }, 70 71 Updates: []*testutil.CRUDTestFunc{ 72 { 73 Func: testNFSUpdate, 74 CheckFunc: testutil.AssertEqualWithExpected(&testutil.CRUDTestExpect{ 75 ExpectValue: updateNFSExpected, 76 IgnoreFields: ignoreNFSFields, 77 }), 78 }, 79 { 80 Func: testNFSUpdateToMin, 81 CheckFunc: testutil.AssertEqualWithExpected(&testutil.CRUDTestExpect{ 82 ExpectValue: updateNFSToMinExpected, 83 IgnoreFields: ignoreNFSFields, 84 }), 85 }, 86 }, 87 88 Shutdown: func(ctx *testutil.CRUDTestContext, caller iaas.APICaller) error { 89 client := iaas.NewNFSOp(caller) 90 return power.ShutdownNFS(ctx, client, testZone, ctx.ID, true) 91 }, 92 93 Delete: &testutil.CRUDTestDeleteFunc{ 94 Func: testNFSDelete, 95 }, 96 97 Cleanup: cleanupSwitchFunc("nfs"), 98 }) 99 } 100 101 var ( 102 ignoreNFSFields = []string{ 103 "ID", 104 "Class", 105 "Availability", 106 "InstanceStatus", 107 "InstanceHostName", 108 "InstanceHostInfoURL", 109 "InstanceStatusChangedAt", 110 "Interfaces", 111 "SwitchName", 112 "ZoneID", 113 "CreatedAt", 114 "ModifiedAt", 115 } 116 createNFSParam = &iaas.NFSCreateRequest{ 117 // PlanID: type.ID(0), // プランIDはSetUpで設定する 118 IPAddresses: []string{"192.168.0.11"}, 119 NetworkMaskLen: 24, 120 DefaultRoute: "192.168.0.1", 121 Name: testutil.ResourceName("nfs"), 122 Description: "desc", 123 Tags: []string{"tag1", "tag2"}, 124 } 125 createNFSExpected = &iaas.NFS{ 126 Name: createNFSParam.Name, 127 Description: createNFSParam.Description, 128 Tags: createNFSParam.Tags, 129 PlanID: createNFSParam.PlanID, 130 DefaultRoute: createNFSParam.DefaultRoute, 131 NetworkMaskLen: createNFSParam.NetworkMaskLen, 132 IPAddresses: createNFSParam.IPAddresses, 133 } 134 updateNFSParam = &iaas.NFSUpdateRequest{ 135 Name: testutil.ResourceName("nfs-upd"), 136 Tags: []string{"tag1-upd", "tag2-upd"}, 137 Description: "desc-upd", 138 IconID: testIconID, 139 } 140 updateNFSExpected = &iaas.NFS{ 141 Name: updateNFSParam.Name, 142 Description: updateNFSParam.Description, 143 Tags: updateNFSParam.Tags, 144 DefaultRoute: createNFSParam.DefaultRoute, 145 NetworkMaskLen: createNFSParam.NetworkMaskLen, 146 IPAddresses: createNFSParam.IPAddresses, 147 IconID: testIconID, 148 } 149 updateNFSToMinParam = &iaas.NFSUpdateRequest{ 150 Name: testutil.ResourceName("nfs-to-min"), 151 } 152 updateNFSToMinExpected = &iaas.NFS{ 153 Name: updateNFSToMinParam.Name, 154 DefaultRoute: createNFSParam.DefaultRoute, 155 NetworkMaskLen: createNFSParam.NetworkMaskLen, 156 IPAddresses: createNFSParam.IPAddresses, 157 } 158 ) 159 160 func testNFSCreate(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) { 161 client := iaas.NewNFSOp(caller) 162 return client.Create(ctx, testZone, createNFSParam) 163 } 164 165 func testNFSRead(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) { 166 client := iaas.NewNFSOp(caller) 167 return client.Read(ctx, testZone, ctx.ID) 168 } 169 170 func testNFSUpdate(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) { 171 client := iaas.NewNFSOp(caller) 172 return client.Update(ctx, testZone, ctx.ID, updateNFSParam) 173 } 174 175 func testNFSUpdateToMin(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) { 176 client := iaas.NewNFSOp(caller) 177 return client.Update(ctx, testZone, ctx.ID, updateNFSToMinParam) 178 } 179 180 func testNFSDelete(ctx *testutil.CRUDTestContext, caller iaas.APICaller) error { 181 client := iaas.NewNFSOp(caller) 182 return client.Delete(ctx, testZone, ctx.ID) 183 }