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  }