github.com/sacloud/iaas-api-go@v1.12.0/test/sim_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 "context" 19 "os" 20 "testing" 21 22 "github.com/sacloud/iaas-api-go" 23 "github.com/sacloud/iaas-api-go/testutil" 24 "github.com/sacloud/iaas-api-go/types" 25 "github.com/stretchr/testify/assert" 26 ) 27 28 func TestSIMOpCRUD(t *testing.T) { 29 testutil.PreCheckEnvsFunc("SAKURACLOUD_SIM_ICCID", "SAKURACLOUD_SIM_PASSCODE")(t) 30 31 initSIMVariables() 32 33 testutil.RunCRUD(t, &testutil.CRUDTestCase{ 34 Parallel: true, 35 IgnoreStartupWait: true, 36 37 SetupAPICallerFunc: singletonAPICaller, 38 39 Create: &testutil.CRUDTestFunc{ 40 Func: testSIMCreate, 41 CheckFunc: testutil.AssertEqualWithExpected(&testutil.CRUDTestExpect{ 42 ExpectValue: createSIMExpected, 43 IgnoreFields: ignoreSIMFields, 44 }), 45 }, 46 47 Read: &testutil.CRUDTestFunc{ 48 Func: testSIMRead, 49 CheckFunc: testutil.AssertEqualWithExpected(&testutil.CRUDTestExpect{ 50 ExpectValue: createSIMExpected, 51 IgnoreFields: ignoreSIMFields, 52 }), 53 }, 54 55 Updates: []*testutil.CRUDTestFunc{ 56 { 57 Func: testSIMUpdate, 58 CheckFunc: testutil.AssertEqualWithExpected(&testutil.CRUDTestExpect{ 59 ExpectValue: updateSIMExpected, 60 IgnoreFields: ignoreSIMFields, 61 }), 62 }, 63 // activate 64 { 65 Func: func(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) { 66 client := iaas.NewSIMOp(caller) 67 if err := client.Activate(ctx, ctx.ID); err != nil { 68 return nil, err 69 } 70 return client.Status(ctx, ctx.ID) 71 }, 72 CheckFunc: func(t testutil.TestT, ctx *testutil.CRUDTestContext, v interface{}) error { 73 simInfo := v.(*iaas.SIMInfo) 74 return testutil.DoAsserts( 75 testutil.AssertNotNilFunc(t, simInfo, "SIMInfo"), 76 testutil.AssertTrueFunc(t, simInfo.Activated, "SIMInfo.Activated"), 77 ) 78 }, 79 SkipExtractID: true, 80 }, 81 // deactivate 82 { 83 Func: func(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) { 84 client := iaas.NewSIMOp(caller) 85 if err := client.Deactivate(ctx, ctx.ID); err != nil { 86 return nil, err 87 } 88 return client.Status(ctx, ctx.ID) 89 }, 90 CheckFunc: func(t testutil.TestT, ctx *testutil.CRUDTestContext, v interface{}) error { 91 simInfo := v.(*iaas.SIMInfo) 92 return testutil.DoAsserts( 93 testutil.AssertNotNilFunc(t, simInfo, "SIMInfo"), 94 testutil.AssertFalseFunc(t, simInfo.Activated, "SIMInfo.Activated"), 95 ) 96 }, 97 SkipExtractID: true, 98 }, 99 // IMEI lock 100 { 101 Func: func(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) { 102 client := iaas.NewSIMOp(caller) 103 if err := client.IMEILock(ctx, ctx.ID, &iaas.SIMIMEILockRequest{ 104 IMEI: "123456789012345", 105 }); err != nil { 106 return nil, err 107 } 108 return client.Status(ctx, ctx.ID) 109 }, 110 CheckFunc: func(t testutil.TestT, ctx *testutil.CRUDTestContext, v interface{}) error { 111 simInfo := v.(*iaas.SIMInfo) 112 return testutil.DoAsserts( 113 testutil.AssertTrueFunc(t, simInfo.IMEILock, "SIMInfo.IMEILock"), 114 testutil.AssertEqualFunc(t, "123456789012345", simInfo.IMEI, "SIMInfo.IMEI"), 115 ) 116 }, 117 SkipExtractID: true, 118 }, 119 // IMEI unlock 120 { 121 Func: func(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) { 122 client := iaas.NewSIMOp(caller) 123 if err := client.IMEIUnlock(ctx, ctx.ID); err != nil { 124 return nil, err 125 } 126 return client.Status(ctx, ctx.ID) 127 }, 128 CheckFunc: func(t testutil.TestT, ctx *testutil.CRUDTestContext, v interface{}) error { 129 simInfo := v.(*iaas.SIMInfo) 130 return testutil.DoAsserts( 131 testutil.AssertFalseFunc(t, simInfo.IMEILock, "SIMInfo.IMEILock"), 132 testutil.AssertEqualFunc(t, "", simInfo.IMEI, "SIMInfo.IMEI"), 133 ) 134 }, 135 SkipExtractID: true, 136 }, 137 // network operator 138 { 139 Func: func(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) { 140 client := iaas.NewSIMOp(caller) 141 configs := []*iaas.SIMNetworkOperatorConfig{ 142 { 143 Name: "SoftBank", 144 Allow: true, 145 }, 146 } 147 if err := client.SetNetworkOperator(ctx, ctx.ID, configs); err != nil { 148 return nil, err 149 } 150 return client.GetNetworkOperator(ctx, ctx.ID) 151 }, 152 CheckFunc: func(t testutil.TestT, ctx *testutil.CRUDTestContext, v interface{}) error { 153 config := v.([]*iaas.SIMNetworkOperatorConfig) 154 return testutil.DoAsserts( 155 testutil.AssertNotEmptyFunc(t, config, "NetworkOperatorConfig"), 156 ) 157 }, 158 SkipExtractID: true, 159 }, 160 }, 161 162 Delete: &testutil.CRUDTestDeleteFunc{ 163 Func: testSIMDelete, 164 }, 165 }) 166 } 167 168 func TestSIMOp_Logs(t *testing.T) { 169 if !isAccTest() { 170 t.Skip("TestSIMOp_Logs only exec at Acceptance Test") 171 } 172 testutil.PreCheckEnvsFunc("SAKURACLOUD_SIM_ID")(t) 173 id := types.StringID(os.Getenv("SAKURACLOUD_SIM_ID")) 174 175 client := iaas.NewSIMOp(singletonAPICaller()) 176 logs, err := client.Logs(context.Background(), id) 177 assert.NoError(t, err) 178 assert.NotEmpty(t, logs) 179 } 180 181 func initSIMVariables() { 182 iccid := os.Getenv("SAKURACLOUD_SIM_ICCID") 183 passcode := os.Getenv("SAKURACLOUD_SIM_PASSCODE") 184 185 createSIMParam = &iaas.SIMCreateRequest{ 186 Name: testutil.ResourceName("sim"), 187 Description: "desc", 188 Tags: []string{"tag1", "tag2"}, 189 ICCID: iccid, 190 PassCode: passcode, 191 } 192 createSIMExpected = &iaas.SIM{ 193 Name: createSIMParam.Name, 194 Description: createSIMParam.Description, 195 Tags: createSIMParam.Tags, 196 Availability: types.Availabilities.Available, 197 ICCID: createSIMParam.ICCID, 198 } 199 updateSIMParam = &iaas.SIMUpdateRequest{ 200 Name: testutil.ResourceName("sim-upd"), 201 Description: "desc-upd", 202 Tags: []string{"tag1-upd", "tag2-upd"}, 203 } 204 updateSIMExpected = &iaas.SIM{ 205 Name: updateSIMParam.Name, 206 Description: updateSIMParam.Description, 207 Tags: updateSIMParam.Tags, 208 Availability: types.Availabilities.Available, 209 ICCID: createSIMParam.ICCID, 210 } 211 } 212 213 var ( 214 ignoreSIMFields = []string{ 215 "ID", 216 "Class", 217 "IconID", 218 "Info", 219 "CreatedAt", 220 "ModifiedAt", 221 } 222 createSIMParam *iaas.SIMCreateRequest 223 createSIMExpected *iaas.SIM 224 updateSIMParam *iaas.SIMUpdateRequest 225 updateSIMExpected *iaas.SIM 226 ) 227 228 func testSIMCreate(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) { 229 client := iaas.NewSIMOp(caller) 230 return client.Create(ctx, createSIMParam) 231 } 232 233 func testSIMRead(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) { 234 client := iaas.NewSIMOp(caller) 235 return client.Read(ctx, ctx.ID) 236 } 237 238 func testSIMUpdate(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) { 239 client := iaas.NewSIMOp(caller) 240 return client.Update(ctx, ctx.ID, updateSIMParam) 241 } 242 243 func testSIMDelete(ctx *testutil.CRUDTestContext, caller iaas.APICaller) error { 244 client := iaas.NewSIMOp(caller) 245 return client.Delete(ctx, ctx.ID) 246 }