Skip to content

Commit 29f696e

Browse files
author
Juan Jesús Padrón Hernández
committed
fix(sca): linter
1 parent 1d07b8a commit 29f696e

19 files changed

Lines changed: 462 additions & 37 deletions

File tree

‎internal/cmd/sca/application/application.go‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package application
22

33
import (
44
"github.com/spf13/cobra"
5+
56
"github.com/stackitcloud/stackit-cli/internal/cmd/sca/application/create"
67
createfrompayload "github.com/stackitcloud/stackit-cli/internal/cmd/sca/application/create-from-payload"
78
"github.com/stackitcloud/stackit-cli/internal/cmd/sca/application/delete"

‎internal/cmd/sca/application/create-from-payload/create_from_payload.go‎

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ import (
66
"fmt"
77

88
"github.com/spf13/cobra"
9+
sca "github.com/stackitcloud/stackit-sdk-go/services/sca/v1alphaapi"
10+
"github.com/stackitcloud/stackit-sdk-go/services/sca/v1alphaapi/wait"
11+
912
"github.com/stackitcloud/stackit-cli/internal/pkg/args"
1013
"github.com/stackitcloud/stackit-cli/internal/pkg/errors"
1114
"github.com/stackitcloud/stackit-cli/internal/pkg/examples"
@@ -15,8 +18,6 @@ import (
1518
"github.com/stackitcloud/stackit-cli/internal/pkg/services/sca/client"
1619
"github.com/stackitcloud/stackit-cli/internal/pkg/spinner"
1720
"github.com/stackitcloud/stackit-cli/internal/pkg/types"
18-
sca "github.com/stackitcloud/stackit-sdk-go/services/sca/v1alphaapi"
19-
"github.com/stackitcloud/stackit-sdk-go/services/sca/v1alphaapi/wait"
2021
)
2122

2223
const (
@@ -46,10 +47,10 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
4647
`Get details of all SCA application with ID "xxx" from an environment with ID "yyy" in JSON format`,
4748
"$ stackit sca application describe xxx --environment-id yyy --output-format json"),
4849
),
49-
RunE: func(cmd *cobra.Command, args []string) error {
50+
RunE: func(cmd *cobra.Command, _ []string) error {
5051
ctx := context.Background()
5152

52-
model, err := parseInput(params.Printer, cmd)
53+
model, err := parseInput(params.Printer, cmd, nil)
5354
if err != nil {
5455
return err
5556
}
@@ -114,7 +115,7 @@ func configureFlags(cmd *cobra.Command) {
114115
cobra.CheckErr(flags.MarkFlagsRequired(cmd, nameFlag))
115116
}
116117

117-
func parseInput(p *print.Printer, cmd *cobra.Command) (*inputModel, error) {
118+
func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel, error) {
118119
globalFlags := globalflags.Parse(p, cmd)
119120
if globalFlags.ProjectId == "" {
120121
return nil, &errors.ProjectIdError{}
Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,188 @@
1+
package createfrompayload
2+
3+
import (
4+
"context"
5+
"testing"
6+
7+
"github.com/google/go-cmp/cmp"
8+
"github.com/google/go-cmp/cmp/cmpopts"
9+
"github.com/google/uuid"
10+
sca "github.com/stackitcloud/stackit-sdk-go/services/sca/v1alphaapi"
11+
12+
"github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
13+
"github.com/stackitcloud/stackit-cli/internal/pkg/testutils"
14+
)
15+
16+
const (
17+
testRegion = "eu01"
18+
)
19+
20+
var testClient = &sca.APIClient{DefaultAPI: &sca.DefaultAPIService{}}
21+
var testCtx = context.Background()
22+
23+
var (
24+
testProjectID = uuid.NewString()
25+
testEnvironmentID = uuid.NewString()
26+
27+
testPayload = &sca.CreateApplicationPayload{
28+
DisplayName: "test-application",
29+
AdditionalProperties: map[string]any{},
30+
Containers: []sca.Container{{
31+
Name: "test-container",
32+
Image: "test-image",
33+
Cpu: sca.PtrInt32(2000),
34+
Memory: sca.PtrInt32(2048),
35+
AdditionalProperties: map[string]any{},
36+
}},
37+
Scaling: sca.Scaling{
38+
Type: sca.SCALINGTYPE_SCALING_TYPE_MANUAL,
39+
ManualScaling: &sca.ManualScaling{
40+
Instances: 2,
41+
AdditionalProperties: map[string]any{},
42+
},
43+
AdditionalProperties: map[string]any{},
44+
},
45+
Network: sca.Network{
46+
PublicIngress: true,
47+
Port: sca.PtrInt32(8888),
48+
AdditionalProperties: map[string]any{},
49+
},
50+
}
51+
)
52+
53+
func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string {
54+
flagValues := map[string]string{
55+
globalflags.ProjectIdFlag: testProjectID,
56+
globalflags.RegionFlag: testRegion,
57+
58+
environmentIDFlag: testEnvironmentID,
59+
nameFlag: "test-application",
60+
payloadFlag: `{
61+
"displayName": "",
62+
"containers": [{
63+
"name": "test-container",
64+
"image": "test-image",
65+
"cpu": 2000,
66+
"memory": 2048
67+
}],
68+
"scaling": {
69+
"type": "SCALING_TYPE_MANUAL",
70+
"manualScaling": {
71+
"instances": 2
72+
}
73+
},
74+
"network": {
75+
"publicIngress": true,
76+
"port": 8888
77+
}
78+
}`,
79+
}
80+
for _, mod := range mods {
81+
mod(flagValues)
82+
}
83+
return flagValues
84+
}
85+
86+
func fixtureInputModel(mods ...func(model *inputModel)) *inputModel {
87+
model := &inputModel{
88+
GlobalFlagModel: &globalflags.GlobalFlagModel{
89+
ProjectId: testProjectID,
90+
Region: testRegion,
91+
Verbosity: globalflags.VerbosityDefault,
92+
},
93+
EnvironmentID: testEnvironmentID,
94+
Payload: testPayload,
95+
}
96+
for _, mod := range mods {
97+
mod(model)
98+
}
99+
return model
100+
}
101+
102+
func fixtureRequest(mods ...func(request *sca.ApiCreateApplicationRequest)) sca.ApiCreateApplicationRequest {
103+
request := testClient.DefaultAPI.CreateApplication(testCtx, testProjectID, testEnvironmentID)
104+
request = request.CreateApplicationPayload(*testPayload)
105+
for _, mod := range mods {
106+
mod(&request)
107+
}
108+
return request
109+
}
110+
111+
func TestParseInput(t *testing.T) {
112+
tests := []struct {
113+
desc string
114+
flagValues map[string]string
115+
expectedModel *inputModel
116+
isValid bool
117+
}{
118+
{
119+
desc: "base",
120+
flagValues: fixtureFlagValues(),
121+
expectedModel: fixtureInputModel(),
122+
isValid: true,
123+
},
124+
{
125+
desc: "no values",
126+
flagValues: nil,
127+
isValid: false,
128+
},
129+
{
130+
desc: "project id missing",
131+
flagValues: fixtureFlagValues(func(flagValues map[string]string) {
132+
flagValues[globalflags.ProjectIdFlag] = ""
133+
}),
134+
isValid: false,
135+
},
136+
{
137+
desc: "project id invalid",
138+
flagValues: fixtureFlagValues(func(flagValues map[string]string) {
139+
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
140+
}),
141+
isValid: false,
142+
},
143+
{
144+
desc: "invalid json",
145+
flagValues: fixtureFlagValues(func(flagValues map[string]string) {
146+
flagValues[payloadFlag] = "not json"
147+
}),
148+
isValid: false,
149+
},
150+
}
151+
152+
for _, tt := range tests {
153+
t.Run(tt.desc, func(t *testing.T) {
154+
testutils.TestParseInput(t, NewCmd, parseInput, tt.expectedModel, nil, tt.flagValues, tt.isValid)
155+
})
156+
}
157+
}
158+
159+
func TestBuildRequest(t *testing.T) {
160+
tests := []struct {
161+
description string
162+
model *inputModel
163+
expectedRequest sca.ApiCreateApplicationRequest
164+
}{
165+
{
166+
description: "base",
167+
model: fixtureInputModel(),
168+
expectedRequest: fixtureRequest(),
169+
},
170+
}
171+
172+
for _, tt := range tests {
173+
t.Run(tt.description, func(t *testing.T) {
174+
request := buildRequest(testCtx, tt.model, testClient)
175+
176+
diff := cmp.Diff(request, tt.expectedRequest,
177+
cmp.AllowUnexported(tt.expectedRequest),
178+
cmpopts.EquateComparable(testCtx, sca.DefaultAPIService{}),
179+
cmpopts.SortSlices(func(a, b sca.EnvVar) bool {
180+
return a.Key < b.Key
181+
}),
182+
)
183+
if diff != "" {
184+
t.Fatalf("Data does not match: %s", diff)
185+
}
186+
})
187+
}
188+
}

‎internal/cmd/sca/application/create/create.go‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ import (
55
"fmt"
66

77
"github.com/spf13/cobra"
8+
sca "github.com/stackitcloud/stackit-sdk-go/services/sca/v1alphaapi"
9+
"github.com/stackitcloud/stackit-sdk-go/services/sca/v1alphaapi/wait"
10+
811
"github.com/stackitcloud/stackit-cli/internal/pkg/args"
912
"github.com/stackitcloud/stackit-cli/internal/pkg/errors"
1013
"github.com/stackitcloud/stackit-cli/internal/pkg/examples"
@@ -14,8 +17,6 @@ import (
1417
"github.com/stackitcloud/stackit-cli/internal/pkg/services/sca/client"
1518
"github.com/stackitcloud/stackit-cli/internal/pkg/spinner"
1619
"github.com/stackitcloud/stackit-cli/internal/pkg/types"
17-
sca "github.com/stackitcloud/stackit-sdk-go/services/sca/v1alphaapi"
18-
"github.com/stackitcloud/stackit-sdk-go/services/sca/v1alphaapi/wait"
1920
)
2021

2122
const (

‎internal/cmd/sca/application/create/create_test.go‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@ import (
77
"github.com/google/go-cmp/cmp"
88
"github.com/google/go-cmp/cmp/cmpopts"
99
"github.com/google/uuid"
10+
sca "github.com/stackitcloud/stackit-sdk-go/services/sca/v1alphaapi"
11+
1012
"github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
1113
"github.com/stackitcloud/stackit-cli/internal/pkg/testutils"
1214
"github.com/stackitcloud/stackit-cli/internal/pkg/utils"
13-
sca "github.com/stackitcloud/stackit-sdk-go/services/sca/v1alphaapi"
1415
)
1516

1617
const (

‎internal/cmd/sca/application/delete/delete.go‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import (
55
"fmt"
66

77
"github.com/spf13/cobra"
8+
sca "github.com/stackitcloud/stackit-sdk-go/services/sca/v1alphaapi"
9+
810
"github.com/stackitcloud/stackit-cli/internal/pkg/args"
911
"github.com/stackitcloud/stackit-cli/internal/pkg/errors"
1012
"github.com/stackitcloud/stackit-cli/internal/pkg/examples"
@@ -13,7 +15,6 @@ import (
1315
"github.com/stackitcloud/stackit-cli/internal/pkg/print"
1416
"github.com/stackitcloud/stackit-cli/internal/pkg/services/sca/client"
1517
"github.com/stackitcloud/stackit-cli/internal/pkg/types"
16-
sca "github.com/stackitcloud/stackit-sdk-go/services/sca/v1alphaapi"
1718
)
1819

1920
const (

‎internal/cmd/sca/application/delete/delete_test.go‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@ import (
77
"github.com/google/go-cmp/cmp"
88
"github.com/google/go-cmp/cmp/cmpopts"
99
"github.com/google/uuid"
10+
sca "github.com/stackitcloud/stackit-sdk-go/services/sca/v1alphaapi"
11+
1012
"github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
1113
"github.com/stackitcloud/stackit-cli/internal/pkg/testutils"
12-
sca "github.com/stackitcloud/stackit-sdk-go/services/sca/v1alphaapi"
1314
)
1415

1516
const (

‎internal/cmd/sca/application/describe/describe.go‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import (
55
"fmt"
66

77
"github.com/spf13/cobra"
8+
sca "github.com/stackitcloud/stackit-sdk-go/services/sca/v1alphaapi"
9+
810
"github.com/stackitcloud/stackit-cli/internal/pkg/args"
911
"github.com/stackitcloud/stackit-cli/internal/pkg/errors"
1012
"github.com/stackitcloud/stackit-cli/internal/pkg/examples"
@@ -16,7 +18,6 @@ import (
1618
"github.com/stackitcloud/stackit-cli/internal/pkg/tables"
1719
"github.com/stackitcloud/stackit-cli/internal/pkg/types"
1820
"github.com/stackitcloud/stackit-cli/internal/pkg/utils"
19-
sca "github.com/stackitcloud/stackit-sdk-go/services/sca/v1alphaapi"
2021
)
2122

2223
const (

‎internal/cmd/sca/application/describe/describe_test.go‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@ import (
77
"github.com/google/go-cmp/cmp"
88
"github.com/google/go-cmp/cmp/cmpopts"
99
"github.com/google/uuid"
10+
sca "github.com/stackitcloud/stackit-sdk-go/services/sca/v1alphaapi"
11+
1012
"github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
1113
"github.com/stackitcloud/stackit-cli/internal/pkg/testutils"
12-
sca "github.com/stackitcloud/stackit-sdk-go/services/sca/v1alphaapi"
1314
)
1415

1516
const (

‎internal/cmd/sca/application/generate-payload/generate_payload.go‎

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import (
66
"fmt"
77

88
"github.com/spf13/cobra"
9+
sca "github.com/stackitcloud/stackit-sdk-go/services/sca/v1alphaapi"
10+
911
"github.com/stackitcloud/stackit-cli/internal/pkg/args"
1012
"github.com/stackitcloud/stackit-cli/internal/pkg/errors"
1113
"github.com/stackitcloud/stackit-cli/internal/pkg/examples"
@@ -17,7 +19,6 @@ import (
1719
scautils "github.com/stackitcloud/stackit-cli/internal/pkg/services/sca/utils"
1820
"github.com/stackitcloud/stackit-cli/internal/pkg/types"
1921
"github.com/stackitcloud/stackit-cli/internal/pkg/utils"
20-
sca "github.com/stackitcloud/stackit-sdk-go/services/sca/v1alphaapi"
2122
)
2223

2324
const (
@@ -44,7 +45,20 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
4445
Args: args.NoArgs,
4546
Example: examples.Build(
4647
examples.NewExample(
47-
``,
48+
`Generate a payload with default values, and adapt it with custom values for the different configuration options`,
49+
`$ stackit sca application generate-payload --file-path ./payload.json`,
50+
`<Modify payload in file, if needed>`,
51+
`$ stackit sca application create-from-payload --name application-name --payload @./payload.json`,
52+
),
53+
examples.NewExample(
54+
`Generate a payload with values of an application, and adapt it with custom values for the different configuration options`,
55+
`$ stackit sca application generate-payload --application-id xxx --file-path ./payload.json`,
56+
`<Modify payload in file>`,
57+
`$ stackit sca application update-from-payload --payload @./payload.json`,
58+
),
59+
examples.NewExample(
60+
`Generate a payload with values of an application, and preview it in the terminal`,
61+
`$ stackit sca application generate-payload --application-id xxx`,
4862
),
4963
),
5064
RunE: func(cmd *cobra.Command, args []string) error {
@@ -76,7 +90,6 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
7690
Network: resp.Network,
7791
Containers: resp.Containers,
7892
}
79-
8093
}
8194

8295
return outputResult(params.Printer, model.FilePath, payload)

0 commit comments

Comments
 (0)