github.com/sacloud/iaas-api-go@v1.12.0/test/icon_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 ) 24 25 func TestIconOp_CRUD(t *testing.T) { 26 testutil.RunCRUD(t, &testutil.CRUDTestCase{ 27 Parallel: true, 28 IgnoreStartupWait: true, 29 SetupAPICallerFunc: singletonAPICaller, 30 Create: &testutil.CRUDTestFunc{ 31 Func: testIconCreate, 32 CheckFunc: testutil.AssertEqualWithExpected(&testutil.CRUDTestExpect{ 33 ExpectValue: createIconExpected, 34 IgnoreFields: ignoreIconFields, 35 }), 36 }, 37 Read: &testutil.CRUDTestFunc{ 38 Func: testIconRead, 39 CheckFunc: testutil.AssertEqualWithExpected(&testutil.CRUDTestExpect{ 40 ExpectValue: createIconExpected, 41 IgnoreFields: ignoreIconFields, 42 }), 43 }, 44 Updates: []*testutil.CRUDTestFunc{ 45 { 46 Func: testIconUpdate, 47 CheckFunc: testutil.AssertEqualWithExpected(&testutil.CRUDTestExpect{ 48 ExpectValue: updateIconExpected, 49 IgnoreFields: ignoreIconFields, 50 }), 51 }, 52 { 53 Func: testIconUpdateToMin, 54 CheckFunc: testutil.AssertEqualWithExpected(&testutil.CRUDTestExpect{ 55 ExpectValue: updateIconToMinExpected, 56 IgnoreFields: ignoreIconFields, 57 }), 58 }, 59 }, 60 Delete: &testutil.CRUDTestDeleteFunc{ 61 Func: testIconDelete, 62 }, 63 }) 64 } 65 66 var ( 67 ignoreIconFields = []string{ 68 "ID", 69 "CreatedAt", 70 "ModifiedAt", 71 "URL", 72 } 73 createIconParam = &iaas.IconCreateRequest{ 74 Name: testutil.ResourceName("icon"), 75 Tags: []string{"tag1", "tag2"}, 76 Image: `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`, 77 } 78 createIconExpected = &iaas.Icon{ 79 Name: createIconParam.Name, 80 Tags: createIconParam.Tags, 81 Scope: types.Scopes.User, 82 Availability: types.Availabilities.Available, 83 } 84 updateIconParam = &iaas.IconUpdateRequest{ 85 Name: testutil.ResourceName("icon-upd"), 86 Tags: []string{"tag1-upd", "tag2-upd"}, 87 } 88 updateIconExpected = &iaas.Icon{ 89 Name: updateIconParam.Name, 90 Tags: updateIconParam.Tags, 91 Scope: types.Scopes.User, 92 Availability: types.Availabilities.Available, 93 } 94 updateIconToMinParam = &iaas.IconUpdateRequest{ 95 Name: testutil.ResourceName("icon-to-min"), 96 } 97 updateIconToMinExpected = &iaas.Icon{ 98 Name: updateIconToMinParam.Name, 99 Scope: types.Scopes.User, 100 Availability: types.Availabilities.Available, 101 } 102 ) 103 104 func testIconCreate(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) { 105 client := iaas.NewIconOp(caller) 106 return client.Create(ctx, createIconParam) 107 } 108 109 func testIconRead(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) { 110 client := iaas.NewIconOp(caller) 111 return client.Read(ctx, ctx.ID) 112 } 113 114 func testIconUpdate(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) { 115 client := iaas.NewIconOp(caller) 116 return client.Update(ctx, ctx.ID, updateIconParam) 117 } 118 119 func testIconUpdateToMin(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) { 120 client := iaas.NewIconOp(caller) 121 return client.Update(ctx, ctx.ID, updateIconToMinParam) 122 } 123 124 func testIconDelete(ctx *testutil.CRUDTestContext, caller iaas.APICaller) error { 125 client := iaas.NewIconOp(caller) 126 return client.Delete(ctx, ctx.ID) 127 }