diff --git a/cli/cage/commands/command_test.go b/cli/cage/commands/command_test.go index 776c39b..804e702 100644 --- a/cli/cage/commands/command_test.go +++ b/cli/cage/commands/command_test.go @@ -1,4 +1,4 @@ -package commands_test +package commands import ( "fmt" @@ -6,9 +6,9 @@ import ( "testing" "github.com/golang/mock/gomock" - "github.com/loilo-inc/canarycage/cli/cage/commands" "github.com/loilo-inc/canarycage/env" "github.com/loilo-inc/canarycage/mocks/mock_types" + "github.com/loilo-inc/canarycage/test" "github.com/loilo-inc/canarycage/types" "github.com/stretchr/testify/assert" "github.com/urfave/cli/v2" @@ -25,7 +25,7 @@ func TestCommands(t *testing.T) { stdin := strings.NewReader(input) cagecli := mock_types.NewMockCage(ctrl) app := cli.NewApp() - cmds := commands.NewCageCommands(stdin, func(envars *env.Envars) (types.Cage, error) { + cmds := NewCageCommands(stdin, func(envars *env.Envars) (types.Cage, error) { return cagecli, nil }) envars := env.Envars{CI: input == ""} @@ -103,3 +103,46 @@ func TestCommands(t *testing.T) { }) }) } + +func TestSetupCage(t *testing.T) { + t.Run("basic", func(t *testing.T) { + envars := &env.Envars{Region: "us-west-2"} + cageCli := mock_types.NewMockCage(gomock.NewController(t)) + cmd := NewCageCommands(nil, func(envars *env.Envars) (types.Cage, error) { + return cageCli, nil + }) + v, err := cmd.setupCage(envars, "../../../fixtures") + if err != nil { + t.Fatal(err) + } + assert.Equal(t, v, cageCli) + assert.Equal(t, envars.Service, "service") + assert.Equal(t, envars.Cluster, "cluster") + assert.NotNil(t, envars.ServiceDefinitionInput) + assert.NotNil(t, envars.TaskDefinitionInput) + }) + t.Run("should skip load task definition if --taskDefinitionArn provided", func(t *testing.T) { + envars := &env.Envars{Region: "us-west-2", TaskDefinitionArn: "arn"} + cageCli := mock_types.NewMockCage(gomock.NewController(t)) + cmd := NewCageCommands(nil, func(envars *env.Envars) (types.Cage, error) { + return cageCli, nil + }) + v, err := cmd.setupCage(envars, "../../../fixtures") + if err != nil { + t.Fatal(err) + } + assert.Equal(t, v, cageCli) + assert.Equal(t, envars.Service, "service") + assert.Equal(t, envars.Cluster, "cluster") + assert.NotNil(t, envars.ServiceDefinitionInput) + assert.Nil(t, envars.TaskDefinitionInput) + }) + t.Run("should error if error returned from NewCage", func(t *testing.T) { + envars := &env.Envars{Region: "us-west-2"} + cmd := NewCageCommands(nil, func(envars *env.Envars) (types.Cage, error) { + return nil, test.Err + }) + _, err := cmd.setupCage(envars, "../../../fixtures") + assert.EqualError(t, err, "error") + }) +} diff --git a/cli/cage/commands/flags.go b/cli/cage/commands/flags.go index 0e228b5..eb991bb 100644 --- a/cli/cage/commands/flags.go +++ b/cli/cage/commands/flags.go @@ -45,7 +45,7 @@ func CanaryTaskIdleDurationFlag(dest *int) *cli.IntFlag { EnvVars: []string{env.CanaryTaskIdleDuration}, Usage: "duration seconds for waiting canary task that isn't attached to target group considered as ready for serving traffic", Destination: dest, - Value: 10, + Value: 15, } } diff --git a/env/env.go b/env/env.go index 39330d7..b46ecf7 100644 --- a/env/env.go +++ b/env/env.go @@ -54,7 +54,8 @@ func EnsureEnvars( } if dest.Cluster == "" { return xerrors.Errorf("--cluster [%s] is required", ClusterKey) - } else if dest.Service == "" { + } + if dest.Service == "" { return xerrors.Errorf("--service [%s] is required", ServiceKey) } if dest.TaskDefinitionArn == "" && dest.TaskDefinitionInput == nil {