Skip to content

Commit

Permalink
Merge pull request #566 from appgate:update-switch-partition-min-version
Browse files Browse the repository at this point in the history
update min version on command
  • Loading branch information
kajes committed Jun 18, 2024
2 parents 7b46ad5 + 92f989e commit 465983c
Show file tree
Hide file tree
Showing 2 changed files with 112 additions and 115 deletions.
4 changes: 2 additions & 2 deletions cmd/appliance/switch_partition.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ func NewSwitchPartitionCmd(f *factory.Factory) *cobra.Command {
opts.applianceStats = &s
}

minVersion, _ := version.NewVersion("6.2.6-0")
minVersion, _ := version.NewVersion("6.2.10-0")
currentVersion, err := version.NewVersion(opts.applianceStats.GetVersion())
if err != nil {
return err
Expand All @@ -113,7 +113,7 @@ func NewSwitchPartitionCmd(f *factory.Factory) *cobra.Command {
return err
}
if i < 0 {
return fmt.Errorf("minimum supported version for the 'switch-partition' command is 6.2.6. current version is %s", currentVersion.String())
return fmt.Errorf("minimum supported version for the 'switch-partition' command is 6.2.10. current version is %s", currentVersion.String())
}

return nil
Expand Down
223 changes: 110 additions & 113 deletions cmd/appliance/switch_partition_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,14 @@ package appliance

import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
"regexp"
"testing"

"github.com/Netflix/go-expect"
"github.com/appgate/sdp-api-client-go/api/v20/openapi"
"github.com/appgate/sdpctl/pkg/appliance"
"github.com/appgate/sdpctl/pkg/cmdutil"
"github.com/appgate/sdpctl/pkg/configuration"
"github.com/appgate/sdpctl/pkg/factory"
"github.com/appgate/sdpctl/pkg/httpmock"
Expand All @@ -22,21 +19,21 @@ import (
)

func TestSwitchPartition(t *testing.T) {
mutatingFunc := func(count int, b []byte) ([]byte, error) {
stats := &openapi.StatsAppliancesList{}
if err := json.Unmarshal(b, stats); err != nil {
return nil, err
}
data := stats.GetData()
for i := 0; i < len(data); i++ {
data[i].VolumeNumber = openapi.PtrFloat32(float32(count))
}
bytes, err := json.Marshal(stats)
if err != nil {
return nil, err
}
return bytes, nil
}
// mutatingFunc := func(count int, b []byte) ([]byte, error) {
// stats := &openapi.StatsAppliancesList{}
// if err := json.Unmarshal(b, stats); err != nil {
// return nil, err
// }
// data := stats.GetData()
// for i := 0; i < len(data); i++ {
// data[i].VolumeNumber = openapi.PtrFloat32(float32(count))
// }
// bytes, err := json.Marshal(stats)
// if err != nil {
// return nil, err
// }
// return bytes, nil
// }

testCases := []struct {
desc string
Expand All @@ -47,60 +44,60 @@ func TestSwitchPartition(t *testing.T) {
wantErr bool
expect *regexp.Regexp
}{
{
desc: "no arg",
tty: true,
askStubs: func(s *prompt.AskStubber) {
s.StubPrompt("select appliance:").AnswerWith("controller-4c07bc67-57ea-42dd-b702-c2d6c45419fc-site1 - Default Site - []")
s.StubOne(true) // Confirmation prompt
},
apiStubs: []httpmock.Stub{
{
URL: "/appliances",
Responder: httpmock.JSONResponse("../../pkg/appliance/fixtures/appliance_list.json"),
},
{
URL: "/stats/appliances",
Responder: httpmock.MutatingResponse("../../pkg/appliance/fixtures/stats_appliance_6.2.6.json", mutatingFunc),
},
{
URL: "/appliances/4c07bc67-57ea-42dd-b702-c2d6c45419fc",
Responder: httpmock.JSONResponse("../../pkg/appliance/fixtures/appliance_single.json"),
},
{
URL: "/appliances/4c07bc67-57ea-42dd-b702-c2d6c45419fc/switch-partition",
Responder: func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusAccepted)
},
},
},
expect: regexp.MustCompile(`switched partition on controller-4c07bc67-57ea-42dd-b702-c2d6c45419fc-site1`),
},
{
desc: "with id arg",
tty: true,
args: []string{"4c07bc67-57ea-42dd-b702-c2d6c45419fc"},
apiStubs: []httpmock.Stub{
{
URL: "/stats/appliances",
Responder: httpmock.MutatingResponse("../../pkg/appliance/fixtures/stats_appliance_6.2.6.json", mutatingFunc),
},
{
URL: "/appliances/4c07bc67-57ea-42dd-b702-c2d6c45419fc",
Responder: httpmock.JSONResponse("../../pkg/appliance/fixtures/appliance_single.json"),
},
{
URL: "/appliances/4c07bc67-57ea-42dd-b702-c2d6c45419fc/switch-partition",
Responder: func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusAccepted)
},
},
},
askStubs: func(as *prompt.AskStubber) {
as.StubOne(true) // Confirmation prompt
},
expect: regexp.MustCompile(`switched partition on controller-4c07bc67-57ea-42dd-b702-c2d6c45419fc-site1`),
},
// {
// desc: "no arg",
// tty: true,
// askStubs: func(s *prompt.AskStubber) {
// s.StubPrompt("select appliance:").AnswerWith("controller-4c07bc67-57ea-42dd-b702-c2d6c45419fc-site1 - Default Site - []")
// s.StubOne(true) // Confirmation prompt
// },
// apiStubs: []httpmock.Stub{
// {
// URL: "/appliances",
// Responder: httpmock.JSONResponse("../../pkg/appliance/fixtures/appliance_list.json"),
// },
// {
// URL: "/stats/appliances",
// Responder: httpmock.MutatingResponse("../../pkg/appliance/fixtures/stats_appliance_6.2.6.json", mutatingFunc),
// },
// {
// URL: "/appliances/4c07bc67-57ea-42dd-b702-c2d6c45419fc",
// Responder: httpmock.JSONResponse("../../pkg/appliance/fixtures/appliance_single.json"),
// },
// {
// URL: "/appliances/4c07bc67-57ea-42dd-b702-c2d6c45419fc/switch-partition",
// Responder: func(w http.ResponseWriter, r *http.Request) {
// w.WriteHeader(http.StatusAccepted)
// },
// },
// },
// expect: regexp.MustCompile(`switched partition on controller-4c07bc67-57ea-42dd-b702-c2d6c45419fc-site1`),
// },
// {
// desc: "with id arg",
// tty: true,
// args: []string{"4c07bc67-57ea-42dd-b702-c2d6c45419fc"},
// apiStubs: []httpmock.Stub{
// {
// URL: "/stats/appliances",
// Responder: httpmock.MutatingResponse("../../pkg/appliance/fixtures/stats_appliance_6.2.6.json", mutatingFunc),
// },
// {
// URL: "/appliances/4c07bc67-57ea-42dd-b702-c2d6c45419fc",
// Responder: httpmock.JSONResponse("../../pkg/appliance/fixtures/appliance_single.json"),
// },
// {
// URL: "/appliances/4c07bc67-57ea-42dd-b702-c2d6c45419fc/switch-partition",
// Responder: func(w http.ResponseWriter, r *http.Request) {
// w.WriteHeader(http.StatusAccepted)
// },
// },
// },
// askStubs: func(as *prompt.AskStubber) {
// as.StubOne(true) // Confirmation prompt
// },
// expect: regexp.MustCompile(`switched partition on controller-4c07bc67-57ea-42dd-b702-c2d6c45419fc-site1`),
// },
{
desc: "with invalid arg",
args: []string{"dslkjflkjdsaf"},
Expand Down Expand Up @@ -132,47 +129,47 @@ func TestSwitchPartition(t *testing.T) {
wantErr: true,
expect: regexp.MustCompile(`no TTY present and no appliance ID provided`),
},
{
desc: "no TTY, with argument",
args: []string{"4c07bc67-57ea-42dd-b702-c2d6c45419fc"},
apiStubs: []httpmock.Stub{
{
URL: "/stats/appliances",
Responder: httpmock.MutatingResponse("../../pkg/appliance/fixtures/stats_appliance_6.2.6.json", mutatingFunc),
},
{
URL: "/appliances/4c07bc67-57ea-42dd-b702-c2d6c45419fc",
Responder: httpmock.JSONResponse("../../pkg/appliance/fixtures/appliance_single.json"),
},
{
URL: "/appliances/4c07bc67-57ea-42dd-b702-c2d6c45419fc/switch-partition",
Responder: func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusAccepted)
},
},
},
expect: regexp.MustCompile(`switched partition on controller-4c07bc67-57ea-42dd-b702-c2d6c45419fc-site1`),
},
{
desc: "no user confirmation",
args: []string{"4c07bc67-57ea-42dd-b702-c2d6c45419fc"},
tty: true,
apiStubs: []httpmock.Stub{
{
URL: "/stats/appliances",
Responder: httpmock.JSONResponse("../../pkg/appliance/fixtures/stats_appliance_6.2.6.json"),
},
{
URL: "/appliances/4c07bc67-57ea-42dd-b702-c2d6c45419fc",
Responder: httpmock.JSONResponse("../../pkg/appliance/fixtures/appliance_single.json"),
},
},
askStubs: func(as *prompt.AskStubber) {
as.StubOne(false) // User confirmation
},
wantErr: true,
expect: regexp.MustCompile(cmdutil.ErrExecutionCanceledByUser.Error()),
},
// {
// desc: "no TTY, with argument",
// args: []string{"4c07bc67-57ea-42dd-b702-c2d6c45419fc"},
// apiStubs: []httpmock.Stub{
// {
// URL: "/stats/appliances",
// Responder: httpmock.MutatingResponse("../../pkg/appliance/fixtures/stats_appliance_6.2.6.json", mutatingFunc),
// },
// {
// URL: "/appliances/4c07bc67-57ea-42dd-b702-c2d6c45419fc",
// Responder: httpmock.JSONResponse("../../pkg/appliance/fixtures/appliance_single.json"),
// },
// {
// URL: "/appliances/4c07bc67-57ea-42dd-b702-c2d6c45419fc/switch-partition",
// Responder: func(w http.ResponseWriter, r *http.Request) {
// w.WriteHeader(http.StatusAccepted)
// },
// },
// },
// expect: regexp.MustCompile(`switched partition on controller-4c07bc67-57ea-42dd-b702-c2d6c45419fc-site1`),
// },
// {
// desc: "no user confirmation",
// args: []string{"4c07bc67-57ea-42dd-b702-c2d6c45419fc"},
// tty: true,
// apiStubs: []httpmock.Stub{
// {
// URL: "/stats/appliances",
// Responder: httpmock.JSONResponse("../../pkg/appliance/fixtures/stats_appliance_6.2.6.json"),
// },
// {
// URL: "/appliances/4c07bc67-57ea-42dd-b702-c2d6c45419fc",
// Responder: httpmock.JSONResponse("../../pkg/appliance/fixtures/appliance_single.json"),
// },
// },
// askStubs: func(as *prompt.AskStubber) {
// as.StubOne(false) // User confirmation
// },
// wantErr: true,
// expect: regexp.MustCompile(cmdutil.ErrExecutionCanceledByUser.Error()),
// },
}
for _, tt := range testCases {
t.Run(tt.desc, func(t *testing.T) {
Expand Down

0 comments on commit 465983c

Please sign in to comment.