github.com/sacloud/iaas-api-go@v1.12.0/test/nfs_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/helper/power"
    22  	"github.com/sacloud/iaas-api-go/helper/query"
    23  	"github.com/sacloud/iaas-api-go/testutil"
    24  	"github.com/sacloud/iaas-api-go/types"
    25  )
    26  
    27  func TestNFSOp_CRUD(t *testing.T) {
    28  	testutil.RunCRUD(t, &testutil.CRUDTestCase{
    29  		Parallel: true,
    30  
    31  		SetupAPICallerFunc: singletonAPICaller,
    32  		Setup: func(ctx *testutil.CRUDTestContext, caller iaas.APICaller) error {
    33  			err := setupSwitchFunc("nfs",
    34  				createNFSParam,
    35  				createNFSExpected,
    36  				updateNFSExpected,
    37  				updateNFSToMinExpected,
    38  			)(ctx, caller)
    39  			if err != nil {
    40  				return err
    41  			}
    42  
    43  			// find plan id
    44  			planID, err := query.FindNFSPlanID(ctx, iaas.NewNoteOp(caller), types.NFSPlans.HDD, types.NFSHDDSizes.Size100GB)
    45  			if err != nil {
    46  				return err
    47  			}
    48  			createNFSParam.PlanID = planID
    49  			createNFSExpected.PlanID = planID
    50  			updateNFSExpected.PlanID = planID
    51  			updateNFSToMinExpected.PlanID = planID
    52  			return nil
    53  		},
    54  
    55  		Create: &testutil.CRUDTestFunc{
    56  			Func: testNFSCreate,
    57  			CheckFunc: testutil.AssertEqualWithExpected(&testutil.CRUDTestExpect{
    58  				ExpectValue:  createNFSExpected,
    59  				IgnoreFields: ignoreNFSFields,
    60  			}),
    61  		},
    62  
    63  		Read: &testutil.CRUDTestFunc{
    64  			Func: testNFSRead,
    65  			CheckFunc: testutil.AssertEqualWithExpected(&testutil.CRUDTestExpect{
    66  				ExpectValue:  createNFSExpected,
    67  				IgnoreFields: ignoreNFSFields,
    68  			}),
    69  		},
    70  
    71  		Updates: []*testutil.CRUDTestFunc{
    72  			{
    73  				Func: testNFSUpdate,
    74  				CheckFunc: testutil.AssertEqualWithExpected(&testutil.CRUDTestExpect{
    75  					ExpectValue:  updateNFSExpected,
    76  					IgnoreFields: ignoreNFSFields,
    77  				}),
    78  			},
    79  			{
    80  				Func: testNFSUpdateToMin,
    81  				CheckFunc: testutil.AssertEqualWithExpected(&testutil.CRUDTestExpect{
    82  					ExpectValue:  updateNFSToMinExpected,
    83  					IgnoreFields: ignoreNFSFields,
    84  				}),
    85  			},
    86  		},
    87  
    88  		Shutdown: func(ctx *testutil.CRUDTestContext, caller iaas.APICaller) error {
    89  			client := iaas.NewNFSOp(caller)
    90  			return power.ShutdownNFS(ctx, client, testZone, ctx.ID, true)
    91  		},
    92  
    93  		Delete: &testutil.CRUDTestDeleteFunc{
    94  			Func: testNFSDelete,
    95  		},
    96  
    97  		Cleanup: cleanupSwitchFunc("nfs"),
    98  	})
    99  }
   100  
   101  var (
   102  	ignoreNFSFields = []string{
   103  		"ID",
   104  		"Class",
   105  		"Availability",
   106  		"InstanceStatus",
   107  		"InstanceHostName",
   108  		"InstanceHostInfoURL",
   109  		"InstanceStatusChangedAt",
   110  		"Interfaces",
   111  		"SwitchName",
   112  		"ZoneID",
   113  		"CreatedAt",
   114  		"ModifiedAt",
   115  	}
   116  	createNFSParam = &iaas.NFSCreateRequest{
   117  		// PlanID:      type.ID(0), // プランIDはSetUpで設定する
   118  		IPAddresses:    []string{"192.168.0.11"},
   119  		NetworkMaskLen: 24,
   120  		DefaultRoute:   "192.168.0.1",
   121  		Name:           testutil.ResourceName("nfs"),
   122  		Description:    "desc",
   123  		Tags:           []string{"tag1", "tag2"},
   124  	}
   125  	createNFSExpected = &iaas.NFS{
   126  		Name:           createNFSParam.Name,
   127  		Description:    createNFSParam.Description,
   128  		Tags:           createNFSParam.Tags,
   129  		PlanID:         createNFSParam.PlanID,
   130  		DefaultRoute:   createNFSParam.DefaultRoute,
   131  		NetworkMaskLen: createNFSParam.NetworkMaskLen,
   132  		IPAddresses:    createNFSParam.IPAddresses,
   133  	}
   134  	updateNFSParam = &iaas.NFSUpdateRequest{
   135  		Name:        testutil.ResourceName("nfs-upd"),
   136  		Tags:        []string{"tag1-upd", "tag2-upd"},
   137  		Description: "desc-upd",
   138  		IconID:      testIconID,
   139  	}
   140  	updateNFSExpected = &iaas.NFS{
   141  		Name:           updateNFSParam.Name,
   142  		Description:    updateNFSParam.Description,
   143  		Tags:           updateNFSParam.Tags,
   144  		DefaultRoute:   createNFSParam.DefaultRoute,
   145  		NetworkMaskLen: createNFSParam.NetworkMaskLen,
   146  		IPAddresses:    createNFSParam.IPAddresses,
   147  		IconID:         testIconID,
   148  	}
   149  	updateNFSToMinParam = &iaas.NFSUpdateRequest{
   150  		Name: testutil.ResourceName("nfs-to-min"),
   151  	}
   152  	updateNFSToMinExpected = &iaas.NFS{
   153  		Name:           updateNFSToMinParam.Name,
   154  		DefaultRoute:   createNFSParam.DefaultRoute,
   155  		NetworkMaskLen: createNFSParam.NetworkMaskLen,
   156  		IPAddresses:    createNFSParam.IPAddresses,
   157  	}
   158  )
   159  
   160  func testNFSCreate(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) {
   161  	client := iaas.NewNFSOp(caller)
   162  	return client.Create(ctx, testZone, createNFSParam)
   163  }
   164  
   165  func testNFSRead(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) {
   166  	client := iaas.NewNFSOp(caller)
   167  	return client.Read(ctx, testZone, ctx.ID)
   168  }
   169  
   170  func testNFSUpdate(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) {
   171  	client := iaas.NewNFSOp(caller)
   172  	return client.Update(ctx, testZone, ctx.ID, updateNFSParam)
   173  }
   174  
   175  func testNFSUpdateToMin(ctx *testutil.CRUDTestContext, caller iaas.APICaller) (interface{}, error) {
   176  	client := iaas.NewNFSOp(caller)
   177  	return client.Update(ctx, testZone, ctx.ID, updateNFSToMinParam)
   178  }
   179  
   180  func testNFSDelete(ctx *testutil.CRUDTestContext, caller iaas.APICaller) error {
   181  	client := iaas.NewNFSOp(caller)
   182  	return client.Delete(ctx, testZone, ctx.ID)
   183  }