Repository navigation
Expand file tree
/
Copy pathtask_definition_test.go
More file actions
91 lines (88 loc) · 3.13 KB
/
Copy pathtask_definition_test.go
File metadata and controls
91 lines (88 loc) · 3.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package cage
import (
"context"
"fmt"
"testing"
"github.com/aws/aws-sdk-go-v2/service/ecs"
ecstypes "github.com/aws/aws-sdk-go-v2/service/ecs/types"
"github.com/loilo-inc/canarycage/v5/env"
"github.com/loilo-inc/canarycage/v5/key"
"github.com/loilo-inc/canarycage/v5/mocks/mock_awsiface"
"github.com/loilo-inc/canarycage/v5/test"
"github.com/loilo-inc/logos/v2/di"
"github.com/stretchr/testify/assert"
"go.uber.org/mock/gomock"
)
func TestCage_CreateNextTaskDefinition(t *testing.T) {
t.Run("should return task definition if taskDefinitionArn is set", func(t *testing.T) {
ctrl := gomock.NewController(t)
ecsMock := mock_awsiface.NewMockEcsClient(ctrl)
env := &env.Envars{
TaskDefinitionArn: "arn://aaa",
}
c := &cage{
di: di.NewDomain(func(b *di.B) {
b.Set(key.Env, env)
b.Set(key.EcsCli, ecsMock)
b.Set(key.Logger, test.NewLogger())
})}
ecsMock.EXPECT().DescribeTaskDefinition(gomock.Any(), gomock.Any()).Return(&ecs.DescribeTaskDefinitionOutput{
TaskDefinition: &ecstypes.TaskDefinition{},
}, nil)
td, err := c.CreateNextTaskDefinition(context.Background())
assert.NoError(t, err)
assert.NotNil(t, td)
})
t.Run("should return error if taskDefinitionArn is set and failed to describe task definition", func(t *testing.T) {
ctrl := gomock.NewController(t)
ecsMock := mock_awsiface.NewMockEcsClient(ctrl)
env := &env.Envars{
TaskDefinitionArn: "arn://aaa",
}
c := &cage{
di: di.NewDomain(func(b *di.B) {
b.Set(key.Env, env)
b.Set(key.EcsCli, ecsMock)
b.Set(key.Logger, test.NewLogger())
})}
ecsMock.EXPECT().DescribeTaskDefinition(gomock.Any(), gomock.Any()).Return(nil, fmt.Errorf("error"))
td, err := c.CreateNextTaskDefinition(context.Background())
assert.Errorf(t, err, "failed to describe next task definition: error")
assert.Nil(t, td)
})
t.Run("should return task definition if taskDefinitionArn is not set", func(t *testing.T) {
ctrl := gomock.NewController(t)
ecsMock := mock_awsiface.NewMockEcsClient(ctrl)
env := test.DefaultEnvars()
c := &cage{
di: di.NewDomain(func(b *di.B) {
b.Set(key.Env, env)
b.Set(key.EcsCli, ecsMock)
b.Set(key.Logger, test.NewLogger())
})}
ecsMock.EXPECT().RegisterTaskDefinition(gomock.Any(), gomock.Any()).Return(&ecs.RegisterTaskDefinitionOutput{
TaskDefinition: &ecstypes.TaskDefinition{
Family: env.TaskDefinitionInput.Family,
Revision: 1,
},
}, nil)
td, err := c.CreateNextTaskDefinition(context.Background())
assert.NoError(t, err)
assert.NotNil(t, td)
})
t.Run("should return error if taskDefinitionArn is not set and failed to register task definition", func(t *testing.T) {
ctrl := gomock.NewController(t)
ecsMock := mock_awsiface.NewMockEcsClient(ctrl)
env := test.DefaultEnvars()
c := &cage{
di: di.NewDomain(func(b *di.B) {
b.Set(key.Env, env)
b.Set(key.EcsCli, ecsMock)
b.Set(key.Logger, test.NewLogger())
})}
ecsMock.EXPECT().RegisterTaskDefinition(gomock.Any(), gomock.Any()).Return(nil, fmt.Errorf("error"))
td, err := c.CreateNextTaskDefinition(context.Background())
assert.Errorf(t, err, "failed to register next task definition: error")
assert.Nil(t, td)
})
}