github.com/sacloud/libsacloud/v2@v2.32.3/helper/builder/sim/builder_test.go (about)

     1  // Copyright 2016-2022 The Libsacloud 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 sim
    16  
    17  import (
    18  	"os"
    19  	"testing"
    20  
    21  	"github.com/sacloud/libsacloud/v2/helper/query"
    22  
    23  	"github.com/sacloud/libsacloud/v2/helper/cleanup"
    24  	"github.com/sacloud/libsacloud/v2/sacloud"
    25  	"github.com/sacloud/libsacloud/v2/sacloud/testutil"
    26  	"github.com/sacloud/libsacloud/v2/sacloud/types"
    27  )
    28  
    29  func TestSIMBuilder_Build(t *testing.T) {
    30  	testutil.PreCheckEnvsFunc("SAKURACLOUD_SIM_ICCID", "SAKURACLOUD_SIM_PASSCODE")(t)
    31  
    32  	iccid := os.Getenv("SAKURACLOUD_SIM_ICCID")
    33  	passcode := os.Getenv("SAKURACLOUD_SIM_PASSCODE")
    34  	imei := "123456789012345"
    35  	imeiUpd := "123456789012346"
    36  
    37  	testutil.RunCRUD(t, &testutil.CRUDTestCase{
    38  		SetupAPICallerFunc: func() sacloud.APICaller {
    39  			return testutil.SingletonAPICaller()
    40  		},
    41  		Parallel:          true,
    42  		IgnoreStartupWait: true,
    43  		Create: &testutil.CRUDTestFunc{
    44  			Func: func(ctx *testutil.CRUDTestContext, caller sacloud.APICaller) (interface{}, error) {
    45  				builder := &Builder{
    46  					Name:        testutil.ResourceName("sim-builder"),
    47  					Description: "description",
    48  					Tags:        types.Tags{"tag1", "tag2"},
    49  					ICCID:       iccid,
    50  					PassCode:    passcode,
    51  					Activate:    true,
    52  					IMEI:        imei,
    53  					Carrier: []*sacloud.SIMNetworkOperatorConfig{
    54  						{
    55  							Allow: true,
    56  							Name:  types.SIMOperators.SoftBank.String(),
    57  						},
    58  					},
    59  					Client: NewAPIClient(caller),
    60  				}
    61  				return builder.Build(ctx)
    62  			},
    63  		},
    64  		Read: &testutil.CRUDTestFunc{
    65  			Func: func(ctx *testutil.CRUDTestContext, caller sacloud.APICaller) (interface{}, error) {
    66  				simOp := sacloud.NewSIMOp(caller)
    67  				return query.FindSIMByID(ctx, simOp, ctx.ID)
    68  			},
    69  			CheckFunc: func(t testutil.TestT, ctx *testutil.CRUDTestContext, value interface{}) error {
    70  				sim := value.(*sacloud.SIM)
    71  				return testutil.DoAsserts(
    72  					testutil.AssertNotNilFunc(t, sim, "SIM"),
    73  					testutil.AssertNotNilFunc(t, sim.Info, "SIM.Info"),
    74  					testutil.AssertTrueFunc(t, sim.Info.Activated, "SIM.Info.Activated"),
    75  					testutil.AssertTrueFunc(t, sim.Info.IMEILock, "SIM.Info.IMEILock"),
    76  				)
    77  			},
    78  		},
    79  		Updates: []*testutil.CRUDTestFunc{
    80  			{
    81  				Func: func(ctx *testutil.CRUDTestContext, caller sacloud.APICaller) (interface{}, error) {
    82  					sim := ctx.LastValue.(*sacloud.SIM)
    83  					builder := &Builder{
    84  						Name:        sim.Name,
    85  						Description: sim.Description,
    86  						Tags:        sim.Tags,
    87  						ICCID:       iccid,
    88  						PassCode:    passcode,
    89  						Activate:    true,
    90  						IMEI:        imeiUpd,
    91  						Carrier: []*sacloud.SIMNetworkOperatorConfig{
    92  							{
    93  								Allow: true,
    94  								Name:  types.SIMOperators.SoftBank.String(),
    95  							},
    96  						},
    97  						Client: NewAPIClient(caller),
    98  					}
    99  					return builder.Update(ctx, sim.ID)
   100  				},
   101  				CheckFunc: func(t testutil.TestT, ctx *testutil.CRUDTestContext, value interface{}) error {
   102  					sim := value.(*sacloud.SIM)
   103  					return testutil.DoAsserts(
   104  						testutil.AssertTrueFunc(t, sim.Info.IMEILock, "SIM.Info.IMEILock"),
   105  					)
   106  				},
   107  			},
   108  			{
   109  				Func: func(ctx *testutil.CRUDTestContext, caller sacloud.APICaller) (interface{}, error) {
   110  					sim := ctx.LastValue.(*sacloud.SIM)
   111  					builder := &Builder{
   112  						Name:        sim.Name,
   113  						Description: sim.Description,
   114  						Tags:        sim.Tags,
   115  						ICCID:       iccid,
   116  						PassCode:    passcode,
   117  						Activate:    true,
   118  						IMEI:        "",
   119  						Carrier: []*sacloud.SIMNetworkOperatorConfig{
   120  							{
   121  								Allow: true,
   122  								Name:  types.SIMOperators.SoftBank.String(),
   123  							},
   124  						},
   125  						Client: NewAPIClient(caller),
   126  					}
   127  					return builder.Update(ctx, sim.ID)
   128  				},
   129  				CheckFunc: func(t testutil.TestT, ctx *testutil.CRUDTestContext, value interface{}) error {
   130  					sim := value.(*sacloud.SIM)
   131  					return testutil.DoAsserts(
   132  						testutil.AssertFalseFunc(t, sim.Info.IMEILock, "SIM.Info.IMEILock"),
   133  					)
   134  				},
   135  			},
   136  		},
   137  		Delete: &testutil.CRUDTestDeleteFunc{
   138  			Func: func(ctx *testutil.CRUDTestContext, caller sacloud.APICaller) error {
   139  				simOp := sacloud.NewSIMOp(caller)
   140  				return cleanup.DeleteSIM(ctx, simOp, ctx.ID)
   141  			},
   142  		},
   143  	})
   144  }