Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions internal/cli/commands/param/tag/tag.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (
"github.com/urfave/cli/v3"

"github.com/mpyw/suve/internal/cli/output"
"github.com/mpyw/suve/internal/infra"
awsparam "github.com/mpyw/suve/internal/provider/aws/param"
"github.com/mpyw/suve/internal/usecase/param"
)

Expand Down Expand Up @@ -57,13 +57,13 @@ func action(ctx context.Context, cmd *cli.Command) error {
return err
}

client, err := infra.NewParamClient(ctx)
adapter, err := awsparam.NewAdapter(ctx)
if err != nil {
return fmt.Errorf("failed to initialize AWS client: %w", err)
}

r := &Runner{
UseCase: &param.TagUseCase{Client: client},
UseCase: &param.TagUseCase{Client: adapter},
Stdout: cmd.Root().Writer,
}

Expand Down
48 changes: 22 additions & 26 deletions internal/cli/commands/param/tag/tag_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,9 @@ import (
"fmt"
"testing"

"github.com/samber/lo"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

"github.com/mpyw/suve/internal/api/paramapi"
appcli "github.com/mpyw/suve/internal/cli/commands"
"github.com/mpyw/suve/internal/cli/commands/param/tag"
"github.com/mpyw/suve/internal/usecase/param"
Expand Down Expand Up @@ -56,28 +54,30 @@ func TestCommand_Validation(t *testing.T) {
})
}

//nolint:lll // mock struct fields match AWS SDK interface signatures
// mockClient implements provider.ParameterTagger for testing.
type mockClient struct {
addTagsFunc func(ctx context.Context, params *paramapi.AddTagsToResourceInput, optFns ...func(*paramapi.Options)) (*paramapi.AddTagsToResourceOutput, error)
removeTagsFunc func(ctx context.Context, params *paramapi.RemoveTagsFromResourceInput, optFns ...func(*paramapi.Options)) (*paramapi.RemoveTagsFromResourceOutput, error)
addTagsFunc func(ctx context.Context, name string, tags map[string]string) error
removeTagsFunc func(ctx context.Context, name string, keys []string) error
}

//nolint:lll // mock function signature must match AWS SDK interface
func (m *mockClient) AddTagsToResource(ctx context.Context, params *paramapi.AddTagsToResourceInput, optFns ...func(*paramapi.Options)) (*paramapi.AddTagsToResourceOutput, error) {
func (m *mockClient) GetTags(_ context.Context, _ string) (map[string]string, error) {
return nil, nil //nolint:nilnil // mock implementation
}

func (m *mockClient) AddTags(ctx context.Context, name string, tags map[string]string) error {
if m.addTagsFunc != nil {
return m.addTagsFunc(ctx, params, optFns...)
return m.addTagsFunc(ctx, name, tags)
}

return &paramapi.AddTagsToResourceOutput{}, nil
return nil
}

//nolint:lll // mock function signature must match AWS SDK interface
func (m *mockClient) RemoveTagsFromResource(ctx context.Context, params *paramapi.RemoveTagsFromResourceInput, optFns ...func(*paramapi.Options)) (*paramapi.RemoveTagsFromResourceOutput, error) {
func (m *mockClient) RemoveTags(ctx context.Context, name string, keys []string) error {
if m.removeTagsFunc != nil {
return m.removeTagsFunc(ctx, params, optFns...)
return m.removeTagsFunc(ctx, name, keys)
}

return &paramapi.RemoveTagsFromResourceOutput{}, nil
return nil
}

func TestRun(t *testing.T) {
Expand All @@ -97,13 +97,11 @@ func TestRun(t *testing.T) {
Tags: map[string]string{"env": "prod"},
},
mock: &mockClient{
//nolint:lll // inline mock
addTagsFunc: func(_ context.Context, params *paramapi.AddTagsToResourceInput, _ ...func(*paramapi.Options)) (*paramapi.AddTagsToResourceOutput, error) {
assert.Equal(t, "/app/param", lo.FromPtr(params.ResourceId))
assert.Equal(t, paramapi.ResourceTypeForTaggingParameter, params.ResourceType)
assert.Len(t, params.Tags, 1)
addTagsFunc: func(_ context.Context, name string, tags map[string]string) error {
assert.Equal(t, "/app/param", name)
assert.Len(t, tags, 1)

return &paramapi.AddTagsToResourceOutput{}, nil
return nil
},
},
check: func(t *testing.T, output string) {
Expand All @@ -119,11 +117,10 @@ func TestRun(t *testing.T) {
Tags: map[string]string{"env": "prod", "team": "backend"},
},
mock: &mockClient{
//nolint:lll // inline mock
addTagsFunc: func(_ context.Context, params *paramapi.AddTagsToResourceInput, _ ...func(*paramapi.Options)) (*paramapi.AddTagsToResourceOutput, error) {
assert.Len(t, params.Tags, 2)
addTagsFunc: func(_ context.Context, _ string, tags map[string]string) error {
assert.Len(t, tags, 2)

return &paramapi.AddTagsToResourceOutput{}, nil
return nil
},
},
check: func(t *testing.T, output string) {
Expand All @@ -138,9 +135,8 @@ func TestRun(t *testing.T) {
Tags: map[string]string{"env": "prod"},
},
mock: &mockClient{
//nolint:lll // inline mock function in test table
addTagsFunc: func(_ context.Context, _ *paramapi.AddTagsToResourceInput, _ ...func(*paramapi.Options)) (*paramapi.AddTagsToResourceOutput, error) {
return nil, fmt.Errorf("AWS error")
addTagsFunc: func(_ context.Context, _ string, _ map[string]string) error {
return fmt.Errorf("AWS error")
},
},
wantErr: "failed to add tags",
Expand Down
6 changes: 3 additions & 3 deletions internal/cli/commands/param/untag/untag.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
"github.com/urfave/cli/v3"

"github.com/mpyw/suve/internal/cli/output"
"github.com/mpyw/suve/internal/infra"
awsparam "github.com/mpyw/suve/internal/provider/aws/param"
"github.com/mpyw/suve/internal/usecase/param"
)

Expand Down Expand Up @@ -50,13 +50,13 @@ func action(ctx context.Context, cmd *cli.Command) error {
name := cmd.Args().Get(0)
keys := cmd.Args().Slice()[1:]

client, err := infra.NewParamClient(ctx)
adapter, err := awsparam.NewAdapter(ctx)
if err != nil {
return fmt.Errorf("failed to initialize AWS client: %w", err)
}

r := &Runner{
UseCase: &param.TagUseCase{Client: client},
UseCase: &param.TagUseCase{Client: adapter},
Stdout: cmd.Root().Writer,
}

Expand Down
48 changes: 22 additions & 26 deletions internal/cli/commands/param/untag/untag_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,9 @@ import (
"fmt"
"testing"

"github.com/samber/lo"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

"github.com/mpyw/suve/internal/api/paramapi"
appcli "github.com/mpyw/suve/internal/cli/commands"
"github.com/mpyw/suve/internal/cli/commands/param/untag"
"github.com/mpyw/suve/internal/usecase/param"
Expand Down Expand Up @@ -38,28 +36,30 @@ func TestCommand_Validation(t *testing.T) {
})
}

//nolint:lll // mock struct fields match AWS SDK interface signatures
// mockClient implements provider.ParameterTagger for testing.
type mockClient struct {
addTagsFunc func(ctx context.Context, params *paramapi.AddTagsToResourceInput, optFns ...func(*paramapi.Options)) (*paramapi.AddTagsToResourceOutput, error)
removeTagsFunc func(ctx context.Context, params *paramapi.RemoveTagsFromResourceInput, optFns ...func(*paramapi.Options)) (*paramapi.RemoveTagsFromResourceOutput, error)
addTagsFunc func(ctx context.Context, name string, tags map[string]string) error
removeTagsFunc func(ctx context.Context, name string, keys []string) error
}

//nolint:lll // mock function signature must match AWS SDK interface
func (m *mockClient) AddTagsToResource(ctx context.Context, params *paramapi.AddTagsToResourceInput, optFns ...func(*paramapi.Options)) (*paramapi.AddTagsToResourceOutput, error) {
func (m *mockClient) GetTags(_ context.Context, _ string) (map[string]string, error) {
return nil, nil //nolint:nilnil // mock implementation
}

func (m *mockClient) AddTags(ctx context.Context, name string, tags map[string]string) error {
if m.addTagsFunc != nil {
return m.addTagsFunc(ctx, params, optFns...)
return m.addTagsFunc(ctx, name, tags)
}

return &paramapi.AddTagsToResourceOutput{}, nil
return nil
}

//nolint:lll // mock function signature must match AWS SDK interface
func (m *mockClient) RemoveTagsFromResource(ctx context.Context, params *paramapi.RemoveTagsFromResourceInput, optFns ...func(*paramapi.Options)) (*paramapi.RemoveTagsFromResourceOutput, error) {
func (m *mockClient) RemoveTags(ctx context.Context, name string, keys []string) error {
if m.removeTagsFunc != nil {
return m.removeTagsFunc(ctx, params, optFns...)
return m.removeTagsFunc(ctx, name, keys)
}

return &paramapi.RemoveTagsFromResourceOutput{}, nil
return nil
}

func TestRun(t *testing.T) {
Expand All @@ -79,13 +79,11 @@ func TestRun(t *testing.T) {
Keys: []string{"env"},
},
mock: &mockClient{
//nolint:lll // inline mock function in test table
removeTagsFunc: func(_ context.Context, params *paramapi.RemoveTagsFromResourceInput, _ ...func(*paramapi.Options)) (*paramapi.RemoveTagsFromResourceOutput, error) {
assert.Equal(t, "/app/param", lo.FromPtr(params.ResourceId))
assert.Equal(t, paramapi.ResourceTypeForTaggingParameter, params.ResourceType)
assert.Equal(t, []string{"env"}, params.TagKeys)
removeTagsFunc: func(_ context.Context, name string, keys []string) error {
assert.Equal(t, "/app/param", name)
assert.Equal(t, []string{"env"}, keys)

return &paramapi.RemoveTagsFromResourceOutput{}, nil
return nil
},
},
check: func(t *testing.T, output string) {
Expand All @@ -101,11 +99,10 @@ func TestRun(t *testing.T) {
Keys: []string{"env", "team"},
},
mock: &mockClient{
//nolint:lll // inline mock function in test table
removeTagsFunc: func(_ context.Context, params *paramapi.RemoveTagsFromResourceInput, _ ...func(*paramapi.Options)) (*paramapi.RemoveTagsFromResourceOutput, error) {
assert.Len(t, params.TagKeys, 2)
removeTagsFunc: func(_ context.Context, _ string, keys []string) error {
assert.Len(t, keys, 2)

return &paramapi.RemoveTagsFromResourceOutput{}, nil
return nil
},
},
check: func(t *testing.T, output string) {
Expand All @@ -120,9 +117,8 @@ func TestRun(t *testing.T) {
Keys: []string{"env"},
},
mock: &mockClient{
//nolint:lll // inline mock function in test table
removeTagsFunc: func(_ context.Context, _ *paramapi.RemoveTagsFromResourceInput, _ ...func(*paramapi.Options)) (*paramapi.RemoveTagsFromResourceOutput, error) {
return nil, fmt.Errorf("AWS error")
removeTagsFunc: func(_ context.Context, _ string, _ []string) error {
return fmt.Errorf("AWS error")
},
},
wantErr: "failed to remove tags",
Expand Down
6 changes: 3 additions & 3 deletions internal/cli/commands/secret/tag/tag.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (
"github.com/urfave/cli/v3"

"github.com/mpyw/suve/internal/cli/output"
"github.com/mpyw/suve/internal/infra"
awssecret "github.com/mpyw/suve/internal/provider/aws/secret"
"github.com/mpyw/suve/internal/usecase/secret"
)

Expand Down Expand Up @@ -57,13 +57,13 @@ func action(ctx context.Context, cmd *cli.Command) error {
return err
}

client, err := infra.NewSecretClient(ctx)
adapter, err := awssecret.NewAdapter(ctx)
if err != nil {
return fmt.Errorf("failed to initialize AWS client: %w", err)
}

r := &Runner{
UseCase: &secret.TagUseCase{Client: client},
UseCase: &secret.TagUseCase{Client: adapter},
Stdout: cmd.Root().Writer,
}

Expand Down
Loading
Loading