github.com/sacloud/iaas-api-go@v1.12.0/test/interface_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 "github.com/sacloud/iaas-api-go/types" 23 "github.com/sacloud/packages-go/size" 24 "github.com/stretchr/testify/assert" 25 ) 26 27 func TestInterface_Operations(t *testing.T) { 28 testutil.RunCRUD(t, &testutil.CRUDTestCase{ 29 Parallel: true, 30 IgnoreStartupWait: true, 31 32 SetupAPICallerFunc: singletonAPICaller, 33 34 Setup: func(ctx *testutil.CRUDTestContext, caller iaas.APICaller) error { 35 serverClient := iaas.NewServerOp(caller) 36 server, err := serverClient.Create(ctx, testZone, &iaas.ServerCreateRequest{ 37 CPU: 1, 38 MemoryMB: 1 * size.GiB, 39 //ConnectedSwitches: []*ConnectedSwitch{ 40 // {Scope: types.Scopes.Shared}, 41 // }, 42 ServerPlanCommitment: types.Commitments.Standard, 43 Name: testutil.ResourceName("server-with-interface"), 44 }) 45 if !assert.NoError(t, err) { 46 return err 47 } 48 49 ctx.Values["interface/server"] = server.ID 50 createInterfaceParam.ServerID = server.ID 51 createInterfaceExpected.ServerID = server.ID 52 updateInterfaceExpected.ServerID = server.ID 53 return nil 54 }, 55 56 Create: &testutil.CRUDTestFunc{ 57 Func: testInterfaceCreate, 58 CheckFunc: testutil.AssertEqualWithExpected(&testutil.CRUDTestExpect{ 59 ExpectValue: createInterfaceExpected, 60 IgnoreFields: ignoreInterfaceFields, 61 }), 62 }, 63 Read: &testutil.CRUDTestFunc{ 64 Func: testInterfaceRead, 65 CheckFunc: testutil.AssertEqualWithExpected(&testutil.CRUDTestExpect{ 66 ExpectValue: createInterfaceExpected, 67 IgnoreFields: ignoreInterfaceFields, 68 }), 69 }, 70 Updates: []*testutil.CRUDTestFunc{ 71 { 72 Func: testInterfaceUpdate, 73 CheckFunc: testutil.AssertEqualWithExpected(&testutil.CRUDTestExpect{ 74 ExpectValue: updateInterfaceExpected, 75 IgnoreFields: ignoreInterfaceFields, 76 }), 77 }, 78 }, 79 Delete: &testutil.CRUDTestDeleteFunc{ 80 Func: testInterfaceDelete, 81 }, 82 83 Cleanup: func(ctx *testutil.CRUDTestContext, caller iaas.APICaller) error { 84 serverID, ok := ctx.Values["interface/server"] 85 if !ok { 86 return nil 87 } 88 89 serverClient := iaas.NewServerOp(caller) 90 return serverClient.Delete(ctx, testZone, serverID.(types.ID)) 91 }, 92 }) 93 } 94 95 var ( 96 ignoreInterfaceFields = []string{ 97 "ID", 98 "MACAddress", 99 "IPAddress", 100 "CreatedAt", 101 "ModifiedAt", 102 } 103 createInterfaceParam = &iaas.InterfaceCreateRequest{} 104 105 createInterfaceExpected = &iaas.Interface{ 106 UserIPAddress: "", 107 HostName: "", 108 SwitchID: types.ID(0), 109 PacketFilterID: types.ID(0), 110 } 111 updateInterfaceParam = &iaas.InterfaceUpdateRequest{ 112 UserIPAddress: "192.2.0.1", 113 } 114 updateInterfaceExpected = &iaas.Interface{ 115 UserIPAddress: "192.2.0.1", 116 HostName: "", 117 SwitchID: types.ID(0), 118 PacketFilterID: types.ID(0), 119 } 120 ) 121 122 func testInterfaceCreate(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) { 123 client := iaas.NewInterfaceOp(caller) 124 return client.Create(ctx, testZone, createInterfaceParam) 125 } 126 127 func testInterfaceRead(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) { 128 client := iaas.NewInterfaceOp(caller) 129 return client.Read(ctx, testZone, ctx.ID) 130 } 131 132 func testInterfaceUpdate(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) { 133 client := iaas.NewInterfaceOp(caller) 134 return client.Update(ctx, testZone, ctx.ID, updateInterfaceParam) 135 } 136 137 func testInterfaceDelete(ctx *testutil.CRUDTestContext, caller iaas.APICaller) error { 138 client := iaas.NewInterfaceOp(caller) 139 return client.Delete(ctx, testZone, ctx.ID) 140 }