Skip to content

Commit 211acb6

Browse files
Merge pull request #4183 from cloudfoundry/dependabot/go_modules/gomod-9e7633dd45
Bump github.com/jellydator/validation from 1.1.0 to 1.2.0 in the gomod group
2 parents 8046292 + 475bffd commit 211acb6

File tree

9 files changed

+68
-66
lines changed

9 files changed

+68
-66
lines changed

api/handlers/app_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ var _ = Describe("App", func() {
197197
BeforeEach(func() {
198198
payload.Lifecycle = &payloads.Lifecycle{
199199
Type: "buildpack",
200-
Data: &payloads.LifecycleData{
200+
Data: payloads.LifecycleData{
201201
Buildpacks: []string{"bp1"},
202202
Stack: "my-stack",
203203
},
@@ -222,7 +222,7 @@ var _ = Describe("App", func() {
222222
BeforeEach(func() {
223223
payload.Lifecycle = &payloads.Lifecycle{
224224
Type: "docker",
225-
Data: &payloads.LifecycleData{},
225+
Data: payloads.LifecycleData{},
226226
}
227227
})
228228

api/payloads/app_test.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ var _ = Describe("App payload validation", func() {
240240
BeforeEach(func() {
241241
payload.Lifecycle = &payloads.Lifecycle{
242242
Type: "buildpack",
243-
Data: &payloads.LifecycleData{
243+
Data: payloads.LifecycleData{
244244
Buildpacks: []string{"my-bp"},
245245
Stack: "my-stack",
246246
},
@@ -262,14 +262,12 @@ var _ = Describe("App payload validation", func() {
262262
BeforeEach(func() {
263263
payload.Lifecycle = &payloads.Lifecycle{
264264
Type: "docker",
265-
Data: &payloads.LifecycleData{},
266265
}
267266
})
268267

269268
It("sets the lifecycle to the repo message", func() {
270269
Expect(repoMessage.Lifecycle).To(Equal(repositories.Lifecycle{
271270
Type: "docker",
272-
Data: repositories.LifecycleData{},
273271
}))
274272
})
275273
})

api/payloads/build_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ var _ = Describe("Build", func() {
1919
},
2020
Lifecycle: &payloads.Lifecycle{
2121
Type: "buildpack",
22-
Data: &payloads.LifecycleData{
22+
Data: payloads.LifecycleData{
2323
Buildpacks: []string{"bp1"},
2424
Stack: "stack",
2525
},

api/payloads/lifecycle.go

Lines changed: 20 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -7,34 +7,34 @@ import (
77
jellidation "github.com/jellydator/validation"
88
)
99

10-
type Lifecycle struct {
11-
Type string `json:"type"`
12-
Data *LifecycleData `json:"data"`
13-
}
14-
15-
func (l Lifecycle) Validate() error {
16-
lifecycleDataRule := jellidation.By(func(value any) error {
17-
data, ok := value.(*LifecycleData)
18-
if !ok {
19-
return fmt.Errorf("%T is not supported, LifecycleData is expected", value)
20-
}
10+
var validLifecycleData lifeCycleDataRule
2111

22-
if l.Type == "docker" {
23-
return data.ValidateDockerLifecycleData()
24-
}
12+
type lifeCycleDataRule struct{}
2513

26-
if l.Type == "buildpack" {
27-
return data.ValidateBuildpackLifecycleData()
28-
}
14+
func (d lifeCycleDataRule) Validate(value any) error {
15+
data, ok := value.(LifecycleData)
16+
if !ok {
17+
return fmt.Errorf("%T is not supported, LifecycleData is expected", value)
18+
}
19+
return jellidation.ValidateStruct(&data,
20+
jellidation.Field(&data.Stack, jellidation.Required),
21+
)
22+
}
2923

30-
return nil
31-
})
24+
type Lifecycle struct {
25+
Type string `json:"type"`
26+
Data LifecycleData `json:"data"`
27+
}
3228

29+
func (l Lifecycle) Validate() error {
3330
return jellidation.ValidateStruct(&l,
3431
jellidation.Field(&l.Type,
3532
jellidation.Required,
3633
validation.OneOf("buildpack", "docker")),
37-
jellidation.Field(&l.Data, jellidation.Required, lifecycleDataRule),
34+
jellidation.Field(&l.Data,
35+
jellidation.When(l.Type == "buildpack", jellidation.Required, validLifecycleData).
36+
Else(jellidation.Empty.Error("must be an empty object")),
37+
),
3838
)
3939
}
4040

@@ -43,16 +43,6 @@ type LifecycleData struct {
4343
Stack string `json:"stack,omitempty"`
4444
}
4545

46-
func (d LifecycleData) ValidateBuildpackLifecycleData() error {
47-
return jellidation.ValidateStruct(&d,
48-
jellidation.Field(&d.Stack, jellidation.Required),
49-
)
50-
}
51-
52-
func (d LifecycleData) ValidateDockerLifecycleData() error {
53-
return jellidation.Validate(&d, jellidation.In(LifecycleData{}).Error("must be an empty object"))
54-
}
55-
5646
type LifecyclePatch struct {
5747
Type string `json:"type"`
5848
Data *LifecycleDataPatch `json:"data"`

api/payloads/lifecycle_test.go

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ var _ = Describe("Lifecycle", func() {
2626
When("type is not set", func() {
2727
BeforeEach(func() {
2828
payload = payloads.Lifecycle{
29-
Data: &payloads.LifecycleData{
29+
Data: payloads.LifecycleData{
3030
Buildpacks: []string{"foo", "bar"},
3131
Stack: "baz",
3232
},
@@ -42,7 +42,7 @@ var _ = Describe("Lifecycle", func() {
4242
BeforeEach(func() {
4343
payload = payloads.Lifecycle{
4444
Type: "buildpack",
45-
Data: &payloads.LifecycleData{
45+
Data: payloads.LifecycleData{
4646
Buildpacks: []string{"foo", "bar"},
4747
Stack: "baz",
4848
},
@@ -56,7 +56,7 @@ var _ = Describe("Lifecycle", func() {
5656

5757
When("lifecycle data is not set", func() {
5858
BeforeEach(func() {
59-
payload.Data = nil
59+
payload.Data = payloads.LifecycleData{}
6060
})
6161

6262
It("returns an appropriate error", func() {
@@ -79,7 +79,6 @@ var _ = Describe("Lifecycle", func() {
7979
BeforeEach(func() {
8080
payload = payloads.Lifecycle{
8181
Type: "docker",
82-
Data: &payloads.LifecycleData{},
8382
}
8483
})
8584

@@ -88,16 +87,6 @@ var _ = Describe("Lifecycle", func() {
8887
Expect(decodedPayload).To(gstruct.PointTo(Equal(payload)))
8988
})
9089

91-
When("data is nil", func() {
92-
BeforeEach(func() {
93-
payload.Data = nil
94-
})
95-
96-
It("returns an error", func() {
97-
expectUnprocessableEntityError(validatorErr, "data cannot be blank")
98-
})
99-
})
100-
10190
When("buildpacks are specified in the data", func() {
10291
BeforeEach(func() {
10392
payload.Data.Buildpacks = []string{"foo"}

api/payloads/package.go

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package payloads
22

33
import (
4+
"fmt"
45
"net/url"
56

67
"code.cloudfoundry.org/korifi/api/payloads/parse"
@@ -10,19 +11,35 @@ import (
1011
jellidation "github.com/jellydator/validation"
1112
)
1213

14+
var validPackageData packageDataRule
15+
16+
type packageDataRule struct{}
17+
18+
func (r packageDataRule) Validate(value any) error {
19+
data, ok := value.(PackageData)
20+
if !ok {
21+
return fmt.Errorf("%T is not supported, PackageData is expected", value)
22+
}
23+
return jellidation.ValidateStruct(&data,
24+
jellidation.Field(&data.Image, jellidation.Required),
25+
)
26+
}
27+
1328
type PackageCreate struct {
1429
Type string `json:"type"`
1530
Relationships *PackageRelationships `json:"relationships"`
1631
Metadata Metadata `json:"metadata"`
17-
Data *PackageData `json:"data"`
32+
Data PackageData `json:"data"`
1833
}
1934

2035
func (c PackageCreate) Validate() error {
2136
return jellidation.ValidateStruct(&c,
2237
jellidation.Field(&c.Type, validation.OneOf("bits", "docker"), jellidation.Required),
2338
jellidation.Field(&c.Relationships, jellidation.NotNil),
2439
jellidation.Field(&c.Metadata),
25-
jellidation.Field(&c.Data, jellidation.When(c.Type == "docker", jellidation.Required).Else(jellidation.Nil)),
40+
jellidation.Field(&c.Data,
41+
jellidation.When(c.Type == "docker", jellidation.Required, validPackageData).
42+
Else(jellidation.Empty)),
2643
)
2744
}
2845

@@ -54,12 +71,6 @@ type PackageData struct {
5471
Password *string `json:"password"`
5572
}
5673

57-
func (d PackageData) Validate() error {
58-
return jellidation.ValidateStruct(&d,
59-
jellidation.Field(&d.Image, jellidation.Required),
60-
)
61-
}
62-
6374
type PackageRelationships struct {
6475
App *Relationship `json:"app"`
6576
}

api/payloads/package_test.go

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,9 @@ var _ = Describe("PackageCreate", func() {
5555

5656
When("data is specified", func() {
5757
BeforeEach(func() {
58-
createPayload.Data = &payloads.PackageData{}
58+
createPayload.Data = payloads.PackageData{
59+
Image: "foo/bar",
60+
}
5961
})
6062

6163
It("returns an appropriate error", func() {
@@ -66,7 +68,7 @@ var _ = Describe("PackageCreate", func() {
6668
When("type is docker", func() {
6769
BeforeEach(func() {
6870
createPayload.Type = "docker"
69-
createPayload.Data = &payloads.PackageData{
71+
createPayload.Data = payloads.PackageData{
7072
Image: "some/image",
7173
}
7274
})
@@ -76,9 +78,21 @@ var _ = Describe("PackageCreate", func() {
7678
Expect(packageCreate).To(gstruct.PointTo(Equal(createPayload)))
7779
})
7880

79-
When("image is not specified", func() {
81+
When("data is not set", func() {
82+
BeforeEach(func() {
83+
createPayload.Data = payloads.PackageData{}
84+
})
85+
86+
It("returns an appropriate error", func() {
87+
expectUnprocessableEntityError(validatorErr, "data cannot be blank")
88+
})
89+
})
90+
91+
When("image is not set", func() {
8092
BeforeEach(func() {
81-
createPayload.Data = &payloads.PackageData{}
93+
createPayload.Data = payloads.PackageData{
94+
Username: tools.PtrTo("user"),
95+
}
8296
})
8397

8498
It("returns an appropriate error", func() {
@@ -181,7 +195,7 @@ var _ = Describe("PackageCreate", func() {
181195
When("package type is docker", func() {
182196
BeforeEach(func() {
183197
createPayload.Type = "docker"
184-
createPayload.Data = &payloads.PackageData{
198+
createPayload.Data = payloads.PackageData{
185199
Image: "some/image",
186200
}
187201
})

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ require (
2727
github.com/google/go-containerregistry v0.20.6
2828
github.com/google/uuid v1.6.0
2929
github.com/hashicorp/go-multierror v1.1.1
30-
github.com/jellydator/validation v1.1.0
30+
github.com/jellydator/validation v1.2.0
3131
github.com/maxbrunsfeld/counterfeiter/v6 v6.12.0
3232
github.com/mileusna/useragent v1.3.5
3333
github.com/onsi/ginkgo/v2 v2.25.3

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -306,8 +306,8 @@ github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2
306306
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
307307
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
308308
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
309-
github.com/jellydator/validation v1.1.0 h1:TBkx56y6dd0By2AhtStRdTIhDjtcuoSE9w6G6z7wQ4o=
310-
github.com/jellydator/validation v1.1.0/go.mod h1:AaCjfkQ4Ykdcb+YCwqCtaI3wDsf2UAGhJ06lJs0VgOw=
309+
github.com/jellydator/validation v1.2.0 h1:z3P3Hk5kdT9epXDraWAfMZtOIUM7UQ0PkNAnFEUjcAk=
310+
github.com/jellydator/validation v1.2.0/go.mod h1:AaCjfkQ4Ykdcb+YCwqCtaI3wDsf2UAGhJ06lJs0VgOw=
311311
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
312312
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
313313
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=

0 commit comments

Comments
 (0)