github.com/sacloud/iaas-api-go@v1.12.0/test/enhanced_db_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 "fmt" 19 "testing" 20 21 "github.com/sacloud/iaas-api-go" 22 "github.com/sacloud/iaas-api-go/testutil" 23 "github.com/sacloud/iaas-api-go/types" 24 sacloudtestutil "github.com/sacloud/packages-go/testutil" 25 ) 26 27 func TestEnhancedDBOp_CRUD(t *testing.T) { 28 testutil.RunCRUD(t, &testutil.CRUDTestCase{ 29 Parallel: true, 30 SetupAPICallerFunc: singletonAPICaller, 31 Create: &testutil.CRUDTestFunc{ 32 Func: testEnhancedDBCreate, 33 CheckFunc: testutil.AssertEqualWithExpected(&testutil.CRUDTestExpect{ 34 ExpectValue: createEnhancedDBExpected, 35 IgnoreFields: ignoreEnhancedDBFields, 36 }), 37 }, 38 39 Read: &testutil.CRUDTestFunc{ 40 Func: testEnhancedDBRead, 41 CheckFunc: testutil.AssertEqualWithExpected(&testutil.CRUDTestExpect{ 42 ExpectValue: createEnhancedDBExpected, 43 IgnoreFields: ignoreEnhancedDBFields, 44 }), 45 }, 46 47 Updates: []*testutil.CRUDTestFunc{ 48 { 49 Func: testEnhancedDBUpdate, 50 CheckFunc: testutil.AssertEqualWithExpected(&testutil.CRUDTestExpect{ 51 ExpectValue: updateEnhancedDBExpected, 52 IgnoreFields: ignoreEnhancedDBFields, 53 }), 54 }, 55 { 56 Func: func(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) { 57 edbOp := iaas.NewEnhancedDBOp(caller) 58 return nil, edbOp.SetConfig(ctx, ctx.ID, &iaas.EnhancedDBSetConfigRequest{ 59 AllowedNetworks: []string{"192.0.2.1/32"}, 60 }) 61 }, 62 SkipExtractID: true, 63 }, 64 { 65 Func: func(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) { 66 edbOp := iaas.NewEnhancedDBOp(caller) 67 config, err := edbOp.GetConfig(ctx, ctx.ID) 68 if err != nil { 69 return nil, err 70 } 71 if config.MaxConnections != 50 { 72 return nil, fmt.Errorf("got unexpected value: MaxConnections: expect: %d actual: %d", 50, config.MaxConnections) 73 } 74 if testutil.IsAccTest() { 75 if len(config.AllowedNetworks) != 1 || config.AllowedNetworks[0] != "192.0.2.1/32" { 76 return nil, fmt.Errorf("got unexpected value: AllowedNetworks: expect: %s actual: %s", "[192.0.2.1/32]", config.AllowedNetworks) 77 } 78 } 79 return nil, nil 80 }, 81 SkipExtractID: true, 82 }, 83 { 84 Func: func(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) { 85 edbOp := iaas.NewEnhancedDBOp(caller) 86 return nil, edbOp.SetPassword(ctx, ctx.ID, &iaas.EnhancedDBSetPasswordRequest{ 87 Password: "password", 88 }) 89 }, 90 SkipExtractID: true, 91 }, 92 }, 93 94 Delete: &testutil.CRUDTestDeleteFunc{ 95 Func: testEnhancedDBDelete, 96 }, 97 }) 98 } 99 100 var ( 101 ignoreEnhancedDBFields = []string{ 102 "ID", 103 "Class", 104 "SettingsHash", 105 "CreatedAt", 106 "ModifiedAt", 107 } 108 createEnhancedDBParam = &iaas.EnhancedDBCreateRequest{ 109 Name: testutil.ResourceName("enhanced-db"), 110 Description: "desc", 111 Tags: []string{"tag1", "tag2"}, 112 DatabaseName: sacloudtestutil.RandomName("", 32, sacloudtestutil.CharSetAlpha), 113 DatabaseType: types.EnhancedDBTypesMariaDB, 114 Region: types.EnhancedDBRegionsTk1, 115 } 116 createEnhancedDBExpected = &iaas.EnhancedDB{ 117 Name: createEnhancedDBParam.Name, 118 Description: createEnhancedDBParam.Description, 119 Tags: createEnhancedDBParam.Tags, 120 Availability: types.Availabilities.Available, 121 DatabaseName: createEnhancedDBParam.DatabaseName, 122 DatabaseType: types.EnhancedDBTypesMariaDB, 123 Region: types.EnhancedDBRegionsTk1, 124 HostName: createEnhancedDBParam.DatabaseName + ".mariadb-tk1.db.sakurausercontent.com", 125 Port: 3306, 126 } 127 updateEnhancedDBParam = &iaas.EnhancedDBUpdateRequest{ 128 Name: testutil.ResourceName("enhanced-db-upd"), 129 Description: "desc-upd", 130 Tags: []string{"tag1-upd", "tag2-upd"}, 131 IconID: testIconID, 132 } 133 updateEnhancedDBExpected = &iaas.EnhancedDB{ 134 Name: updateEnhancedDBParam.Name, 135 Description: updateEnhancedDBParam.Description, 136 Tags: updateEnhancedDBParam.Tags, 137 Availability: types.Availabilities.Available, 138 IconID: testIconID, 139 DatabaseName: createEnhancedDBParam.DatabaseName, 140 DatabaseType: types.EnhancedDBTypesMariaDB, 141 Region: types.EnhancedDBRegionsTk1, 142 HostName: createEnhancedDBParam.DatabaseName + ".mariadb-tk1.db.sakurausercontent.com", 143 Port: 3306, 144 } 145 ) 146 147 func testEnhancedDBCreate(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) { 148 client := iaas.NewEnhancedDBOp(caller) 149 return client.Create(ctx, createEnhancedDBParam) 150 } 151 152 func testEnhancedDBRead(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) { 153 client := iaas.NewEnhancedDBOp(caller) 154 return client.Read(ctx, ctx.ID) 155 } 156 157 func testEnhancedDBUpdate(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) { 158 client := iaas.NewEnhancedDBOp(caller) 159 return client.Update(ctx, ctx.ID, updateEnhancedDBParam) 160 } 161 162 func testEnhancedDBDelete(ctx *testutil.CRUDTestContext, caller iaas.APICaller) error { 163 client := iaas.NewEnhancedDBOp(caller) 164 return client.Delete(ctx, ctx.ID) 165 }