diff --git a/internal/namespaces/baremetal/v1/custom_server_create_test.go b/internal/namespaces/baremetal/v1/custom_server_create_test.go index 1de6c7fc25..7e2e1d7994 100644 --- a/internal/namespaces/baremetal/v1/custom_server_create_test.go +++ b/internal/namespaces/baremetal/v1/custom_server_create_test.go @@ -1,13 +1,11 @@ package baremetal_test import ( - "errors" "testing" "github.com/scaleway/scaleway-cli/v2/core" "github.com/scaleway/scaleway-cli/v2/internal/namespaces/baremetal/v1" baremetalSDK "github.com/scaleway/scaleway-sdk-go/api/baremetal/v1" - "github.com/scaleway/scaleway-sdk-go/scw" "github.com/stretchr/testify/assert" ) @@ -22,45 +20,23 @@ func Test_CreateServer(t *testing.T) { // Simple use cases t.Run("Simple", func(t *testing.T) { t.Run("Default", core.Test(&core.TestConfig{ - Commands: baremetal.GetCommands(), - BeforeFunc: func(ctx *core.BeforeFuncCtx) error { - api := baremetalSDK.NewAPI(ctx.Client) - server, _ := api.GetOfferByName(&baremetalSDK.GetOfferByNameRequest{ - OfferName: offerNameNVME, - Zone: scw.Zone(zone), - }) - if server.Stock != baremetalSDK.OfferStockAvailable { - return errors.New("offer out of stock") - } - - return nil - }, - Cmd: "scw baremetal server create zone=" + zone + " type=" + offerNameNVME + " -w", + Commands: baremetal.GetCommands(), + BeforeFunc: checkStockOffer(), + Cmd: "scw baremetal server create zone=" + zone + " type=" + offerNameNVME + " -w", Check: core.TestCheckCombine( core.TestCheckGolden(), core.TestCheckExitCode(0), ), AfterFunc: core.ExecAfterCmd( - "scw baremetal server delete {{ .CmdResult.ID }} zone=" + zone, + "scw baremetal server delete {{ .CmdResult.ID }} zone=" + zone + " -w", ), }, )) t.Run("With name", core.Test(&core.TestConfig{ - Commands: baremetal.GetCommands(), - BeforeFunc: func(ctx *core.BeforeFuncCtx) error { - api := baremetalSDK.NewAPI(ctx.Client) - server, _ := api.GetOfferByName(&baremetalSDK.GetOfferByNameRequest{ - OfferName: offerNameNVME, - Zone: scw.Zone(zone), - }) - if server.Stock != baremetalSDK.OfferStockAvailable { - return errors.New("offer out of stock") - } - - return nil - }, - Cmd: "scw baremetal server create name=test-create-server-with-name zone=" + zone + " type=" + offerNameNVME + " -w", + Commands: baremetal.GetCommands(), + BeforeFunc: checkStockOffer(), + Cmd: "scw baremetal server create name=test-create-server-with-name zone=" + zone + " type=" + offerNameNVME + " -w", Check: core.TestCheckCombine( func(t *testing.T, ctx *core.CheckFuncCtx) { t.Helper() @@ -73,25 +49,14 @@ func Test_CreateServer(t *testing.T) { core.TestCheckExitCode(0), ), AfterFunc: core.ExecAfterCmd( - "scw baremetal server delete {{ .CmdResult.ID }} zone=" + zone, + "scw baremetal server delete {{ .CmdResult.ID }} zone=" + zone + " -w", ), })) t.Run("Tags", core.Test(&core.TestConfig{ - Commands: baremetal.GetCommands(), - BeforeFunc: func(ctx *core.BeforeFuncCtx) error { - api := baremetalSDK.NewAPI(ctx.Client) - server, _ := api.GetOfferByName(&baremetalSDK.GetOfferByNameRequest{ - OfferName: offerNameNVME, - Zone: scw.Zone(zone), - }) - if server.Stock != baremetalSDK.OfferStockAvailable { - return errors.New("offer out of stock") - } - - return nil - }, - Cmd: "scw baremetal server create tags.0=prod tags.1=blue zone=" + zone + " type=" + offerNameNVME + " -w", + Commands: baremetal.GetCommands(), + BeforeFunc: checkStockOffer(), + Cmd: "scw baremetal server create tags.0=prod tags.1=blue zone=" + zone + " type=" + offerNameNVME + " -w", Check: core.TestCheckCombine( func(t *testing.T, ctx *core.CheckFuncCtx) { t.Helper() @@ -101,7 +66,7 @@ func Test_CreateServer(t *testing.T) { core.TestCheckExitCode(0), ), AfterFunc: core.ExecAfterCmd( - "scw baremetal server delete {{ .CmdResult.ID }} zone=" + zone, + "scw baremetal server delete {{ .CmdResult.ID }} zone=" + zone + " -w", ), })) }) diff --git a/internal/namespaces/baremetal/v1/custom_server_fip_test.go b/internal/namespaces/baremetal/v1/custom_server_fip_test.go index 62c3bc3d82..1a48871f39 100644 --- a/internal/namespaces/baremetal/v1/custom_server_fip_test.go +++ b/internal/namespaces/baremetal/v1/custom_server_fip_test.go @@ -1,15 +1,12 @@ package baremetal_test import ( - "errors" "testing" "github.com/scaleway/scaleway-cli/v2/core" "github.com/scaleway/scaleway-cli/v2/internal/interactive" "github.com/scaleway/scaleway-cli/v2/internal/namespaces/baremetal/v1" flexibleip "github.com/scaleway/scaleway-cli/v2/internal/namespaces/flexibleip/v1alpha1" - baremetalSDK "github.com/scaleway/scaleway-sdk-go/api/baremetal/v1" - "github.com/scaleway/scaleway-sdk-go/scw" ) func Test_CreateFlexibleIPInteractive(t *testing.T) { @@ -22,18 +19,7 @@ func Test_CreateFlexibleIPInteractive(t *testing.T) { t.Run("Simple Interactive", core.Test(&core.TestConfig{ Commands: cmds, BeforeFunc: core.BeforeFuncCombine( - func(ctx *core.BeforeFuncCtx) error { - api := baremetalSDK.NewAPI(ctx.Client) - server, _ := api.GetOfferByName(&baremetalSDK.GetOfferByNameRequest{ - OfferName: offerNameNVME, - Zone: scw.Zone(zone), - }) - if server.Stock != baremetalSDK.OfferStockAvailable { - return errors.New("offer out of stock") - } - - return nil - }, + checkStockOffer(), createServerAndWait(), ), Cmd: "scw baremetal server add-flexible-ip {{ .Server.ID }} zone=" + zone, @@ -55,18 +41,7 @@ func Test_CreateFlexibleIP(t *testing.T) { t.Run("Simple", core.Test(&core.TestConfig{ Commands: cmds, BeforeFunc: core.BeforeFuncCombine( - func(ctx *core.BeforeFuncCtx) error { - api := baremetalSDK.NewAPI(ctx.Client) - server, _ := api.GetOfferByName(&baremetalSDK.GetOfferByNameRequest{ - OfferName: offerNameNVME, - Zone: scw.Zone(zone), - }) - if server.Stock != baremetalSDK.OfferStockAvailable { - return errors.New("offer out of stock") - } - - return nil - }, + checkStockOffer(), createServerAndWait(), ), Cmd: "scw baremetal server add-flexible-ip {{ .Server.ID }} ip-type=IPv4 zone=" + zone, diff --git a/internal/namespaces/baremetal/v1/custom_server_install_test.go b/internal/namespaces/baremetal/v1/custom_server_install_test.go index b527d4df7f..c0b709dd43 100644 --- a/internal/namespaces/baremetal/v1/custom_server_install_test.go +++ b/internal/namespaces/baremetal/v1/custom_server_install_test.go @@ -1,14 +1,11 @@ package baremetal_test import ( - "errors" "testing" "github.com/scaleway/scaleway-cli/v2/core" "github.com/scaleway/scaleway-cli/v2/internal/namespaces/baremetal/v1" iam "github.com/scaleway/scaleway-cli/v2/internal/namespaces/iam/v1alpha1" - baremetalSDK "github.com/scaleway/scaleway-sdk-go/api/baremetal/v1" - "github.com/scaleway/scaleway-sdk-go/scw" ) func Test_InstallServer(t *testing.T) { @@ -22,20 +19,7 @@ func Test_InstallServer(t *testing.T) { t.Run("With ID", core.Test(&core.TestConfig{ BeforeFunc: core.BeforeFuncCombine( - func(ctx *core.BeforeFuncCtx) error { - api := baremetalSDK.NewAPI(ctx.Client) - server, _ := api.GetOfferByName(&baremetalSDK.GetOfferByNameRequest{ - OfferName: offerNameNVME, - Zone: scw.Zone(zone), - }) - if server.Stock != baremetalSDK.OfferStockAvailable { - err := errors.New("offer out of stock") - - return err - } - - return nil - }, + checkStockOffer(), addSSH("key", sshKey), createServerAndWait(), ), @@ -54,18 +38,7 @@ func Test_InstallServer(t *testing.T) { t.Run("All SSH keys", core.Test(&core.TestConfig{ Commands: cmds, BeforeFunc: core.BeforeFuncCombine( - func(ctx *core.BeforeFuncCtx) error { - api := baremetalSDK.NewAPI(ctx.Client) - server, _ := api.GetOfferByName(&baremetalSDK.GetOfferByNameRequest{ - OfferName: offerNameNVME, - Zone: scw.Zone(zone), - }) - if server.Stock != baremetalSDK.OfferStockAvailable { - return errors.New("offer out of stock") - } - - return nil - }, + checkStockOffer(), addSSH("key", sshKey), createServerAndWait(), ), diff --git a/internal/namespaces/baremetal/v1/custom_server_test.go b/internal/namespaces/baremetal/v1/custom_server_test.go index 66d910847c..cdd9444a87 100644 --- a/internal/namespaces/baremetal/v1/custom_server_test.go +++ b/internal/namespaces/baremetal/v1/custom_server_test.go @@ -1,7 +1,6 @@ package baremetal_test import ( - "errors" "testing" "github.com/scaleway/scaleway-cli/v2/core" @@ -13,18 +12,7 @@ import ( func Test_StartServerErrors(t *testing.T) { t.Run("Error: cannot be started while not delivered", core.Test(&core.TestConfig{ BeforeFunc: core.BeforeFuncCombine( - func(ctx *core.BeforeFuncCtx) error { - api := baremetalSDK.NewAPI(ctx.Client) - server, _ := api.GetOfferByName(&baremetalSDK.GetOfferByNameRequest{ - OfferName: offerNameSATA, - Zone: scw.Zone(zone), - }) - if server.Stock != baremetalSDK.OfferStockAvailable { - return errors.New("offer out of stock") - } - - return nil - }, + checkStockOffer(), createServer("Server", offerNameSATA), ), Commands: baremetal.GetCommands(), @@ -54,18 +42,7 @@ func Test_StartServerErrors(t *testing.T) { func Test_StopServerErrors(t *testing.T) { t.Run("Error: cannot be stopped while not delivered", core.Test(&core.TestConfig{ BeforeFunc: core.BeforeFuncCombine( - func(ctx *core.BeforeFuncCtx) error { - api := baremetalSDK.NewAPI(ctx.Client) - server, _ := api.GetOfferByName(&baremetalSDK.GetOfferByNameRequest{ - OfferName: offerNameSATA, - Zone: scw.Zone(zone), - }) - if server.Stock != baremetalSDK.OfferStockAvailable { - return errors.New("offer out of stock") - } - - return nil - }, + checkStockOffer(), createServer("Server", offerNameSATA), ), Commands: baremetal.GetCommands(), @@ -95,18 +72,7 @@ func Test_StopServerErrors(t *testing.T) { func Test_RebootServerErrors(t *testing.T) { t.Run("Error: cannot be rebooted while not delivered", core.Test(&core.TestConfig{ BeforeFunc: core.BeforeFuncCombine( - func(ctx *core.BeforeFuncCtx) error { - api := baremetalSDK.NewAPI(ctx.Client) - server, _ := api.GetOfferByName(&baremetalSDK.GetOfferByNameRequest{ - OfferName: offerNameSATA, - Zone: scw.Zone(zone), - }) - if server.Stock != baremetalSDK.OfferStockAvailable { - return errors.New("offer out of stock") - } - - return nil - }, + checkStockOffer(), createServer("Server", offerNameSATA), ), Commands: baremetal.GetCommands(), diff --git a/internal/namespaces/baremetal/v1/helpers_test.go b/internal/namespaces/baremetal/v1/helpers_test.go index 615778b4cf..9abb6b30b7 100644 --- a/internal/namespaces/baremetal/v1/helpers_test.go +++ b/internal/namespaces/baremetal/v1/helpers_test.go @@ -1,10 +1,13 @@ package baremetal_test import ( + "errors" "fmt" "os" "github.com/scaleway/scaleway-cli/v2/core" + "github.com/scaleway/scaleway-sdk-go/api/baremetal/v1" + "github.com/scaleway/scaleway-sdk-go/scw" ) func getenv(key, fallback string) string { @@ -54,3 +57,23 @@ func addSSH(metaKey string, key string) core.BeforeFunc { func deleteSSH(metaKey string) core.AfterFunc { return core.ExecAfterCmd(fmt.Sprintf("scw iam ssh-key delete {{ .%s.ID }}", metaKey)) } + +func checkStockOffer() func(ctx *core.BeforeFuncCtx) error { + return func(ctx *core.BeforeFuncCtx) error { + api := baremetal.NewAPI(ctx.Client) + + offer, err := api.GetOfferByName(&baremetal.GetOfferByNameRequest{ + OfferName: offerNameNVME, + Zone: scw.Zone(zone), + }) + if err != nil { + return err + } + + if offer.Stock != baremetal.OfferStockAvailable { + return errors.New("offer out of stock") + } + + return nil + } +}