github.com/sacloud/iaas-api-go@v1.12.0/helper/query/_previous_id_test.go (about)

     1  // Copyright 2016-2022 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 query
    16  
    17  import (
    18  	"context"
    19  	"testing"
    20  
    21  	"github.com/sacloud/iaas-api-go"
    22  	internetBuilder "github.com/sacloud/iaas-api-go/helper/builder/internet"
    23  	"github.com/sacloud/iaas-api-go/helper/plans"
    24  	"github.com/sacloud/iaas-api-go/testutil"
    25  	"github.com/sacloud/iaas-api-go/types"
    26  	"github.com/sacloud/packages-go/size"
    27  	"github.com/stretchr/testify/require"
    28  )
    29  
    30  func TestReadServer(t *testing.T) {
    31  	ctx := context.Background()
    32  	caller := testutil.SingletonAPICaller()
    33  	zone := testutil.TestZone()
    34  
    35  	serverOp := iaas.NewServerOp(caller)
    36  
    37  	server, err := serverOp.Create(ctx, zone, &iaas.ServerCreateRequest{
    38  		Name:     testutil.ResourceName("query-server-with-previous-id"),
    39  		CPU:      1,
    40  		MemoryMB: 1 * size.GiB,
    41  	})
    42  	if err != nil {
    43  		t.Fatal(err)
    44  	}
    45  
    46  	// ID指定でreadできる
    47  	read, err := ReadServer(ctx, caller, zone, server.ID)
    48  	if err != nil {
    49  		t.Fatal(err)
    50  	}
    51  	require.EqualValues(t, server.ID, read.ID)
    52  
    53  	// プラン変更(@previous-idタグが付与される)
    54  	_, err = plans.ChangeServerPlan(ctx, caller, zone, server.ID, 1, 2, types.Commitments.Standard, types.PlanGenerations.Default)
    55  	if err != nil {
    56  		t.Fatal(err)
    57  	}
    58  
    59  	// 旧IDでReadできる
    60  	read2, err := ReadServer(ctx, caller, zone, server.ID)
    61  	if err != nil {
    62  		t.Fatal(err)
    63  	}
    64  	require.Equal(t, 2, read2.GetMemoryGB())
    65  
    66  	// 存在しないIDだとNoResultErr
    67  	_, err = ReadServer(ctx, caller, zone, types.ID(9999999999))
    68  	require.True(t, iaas.IsNoResultsError(err))
    69  
    70  	// cleanup
    71  	if err := serverOp.Delete(ctx, zone, read2.ID); err != nil {
    72  		t.Fatal(err)
    73  	}
    74  }
    75  
    76  func TestReadRouter(t *testing.T) {
    77  	ctx := context.Background()
    78  	caller := testutil.SingletonAPICaller()
    79  	zone := testutil.TestZone()
    80  
    81  	routerOp := iaas.NewInternetOp(caller)
    82  	routerBuilder := &internetBuilder.Builder{
    83  		Name:           testutil.ResourceName("query-router-with-previous-id"),
    84  		NetworkMaskLen: 28,
    85  		BandWidthMbps:  100,
    86  		Client:         internetBuilder.NewAPIClient(caller),
    87  	}
    88  
    89  	router, err := routerBuilder.Build(ctx, zone)
    90  	if err != nil {
    91  		t.Fatal(err)
    92  	}
    93  
    94  	// ID指定でreadできる
    95  	read, err := ReadRouter(ctx, caller, zone, router.ID)
    96  	if err != nil {
    97  		t.Fatal(err)
    98  	}
    99  	require.EqualValues(t, router.ID, read.ID)
   100  
   101  	// プラン変更(@previous-idタグが付与される)
   102  	_, err = plans.ChangeRouterPlan(ctx, caller, zone, router.ID, 250)
   103  	if err != nil {
   104  		t.Fatal(err)
   105  	}
   106  
   107  	// 旧IDでReadできる
   108  	read2, err := ReadRouter(ctx, caller, zone, router.ID)
   109  	if err != nil {
   110  		t.Fatal(err)
   111  	}
   112  	require.Equal(t, 250, read2.BandWidthMbps)
   113  
   114  	// cleanup
   115  	if err := routerOp.Delete(ctx, zone, read2.ID); err != nil {
   116  		t.Fatal(err)
   117  	}
   118  }
   119  
   120  func TestReadProxyLB(t *testing.T) {
   121  	ctx := context.Background()
   122  	caller := testutil.SingletonAPICaller()
   123  
   124  	elbOp := iaas.NewProxyLBOp(caller)
   125  	elb, err := elbOp.Create(ctx, &iaas.ProxyLBCreateRequest{
   126  		Plan:   types.ProxyLBPlans.CPS100,
   127  		Region: types.ProxyLBRegions.IS1,
   128  		Name:   testutil.ResourceName("query-elb-with-previous-id"),
   129  		HealthCheck: &iaas.ProxyLBHealthCheck{
   130  			Protocol:  types.ProxyLBProtocols.TCP,
   131  			DelayLoop: 10,
   132  		},
   133  		Timeout: &iaas.ProxyLBTimeout{
   134  			InactiveSec: 10,
   135  		},
   136  	})
   137  	if err != nil {
   138  		t.Fatal(err)
   139  	}
   140  
   141  	// ID指定でreadできる
   142  	read, err := ReadProxyLB(ctx, caller, elb.ID)
   143  	if err != nil {
   144  		t.Fatal(err)
   145  	}
   146  	require.EqualValues(t, elb.ID, read.ID)
   147  
   148  	// プラン変更(@previous-idタグが付与される)
   149  	_, err = plans.ChangeProxyLBPlan(ctx, caller, elb.ID, types.ProxyLBPlans.CPS500.Int())
   150  	if err != nil {
   151  		t.Fatal(err)
   152  	}
   153  
   154  	// 旧IDでReadできる
   155  	read2, err := ReadProxyLB(ctx, caller, elb.ID)
   156  	if err != nil {
   157  		t.Fatal(err)
   158  	}
   159  	require.Equal(t, types.ProxyLBPlans.CPS500, read2.Plan)
   160  
   161  	// cleanup
   162  	if err := elbOp.Delete(ctx, read2.ID); err != nil {
   163  		t.Fatal(err)
   164  	}
   165  }