Skip to content

Commit faddc0d

Browse files
authored
fix: [#589] Context in PrepareForValidation always nil (#137)
* fix: [#589] Context in PrepareForValidation always nil * upgrade framework
1 parent ec50c7d commit faddc0d

File tree

5 files changed

+176
-879
lines changed

5 files changed

+176
-879
lines changed

context_request.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,7 @@ func (r *ContextRequest) ValidateRequest(request contractshttp.FormRequest) (con
461461
options = append(options, validation.Attributes(requestWithAttributes.Attributes(r.ctx)))
462462
}
463463
if prepareForValidation, ok := request.(contractshttp.FormRequestWithPrepareForValidation); ok {
464-
options = append(options, validation.PrepareForValidation(prepareForValidation.PrepareForValidation))
464+
options = append(options, validation.PrepareForValidation(r.ctx, prepareForValidation.PrepareForValidation))
465465
}
466466

467467
validator, err := r.Validate(request.Rules(r.ctx), options...)

context_request_test.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1405,6 +1405,34 @@ func (s *ContextRequestSuite) TestValidate_PostFail() {
14051405
s.Equal(http.StatusBadRequest, code)
14061406
}
14071407

1408+
func (s *ContextRequestSuite) TestValidateRequest_PrepareForValidationWithContext() {
1409+
s.route.Get("/validate-request/prepare-for-validation-with-context", func(ctx contractshttp.Context) contractshttp.Response {
1410+
// nolint:all
1411+
ctx.WithValue("test", "-ctx")
1412+
1413+
var createUser CreateUser
1414+
validateErrors, err := ctx.Request().ValidateRequest(&createUser)
1415+
if err != nil {
1416+
return ctx.Response().String(http.StatusBadRequest, "Validate error: "+err.Error())
1417+
}
1418+
if validateErrors != nil {
1419+
return ctx.Response().String(http.StatusBadRequest, fmt.Sprintf("Validate fail: %+v", validateErrors.All()))
1420+
}
1421+
1422+
return ctx.Response().Success().Json(contractshttp.Json{
1423+
"name": createUser.Name,
1424+
})
1425+
})
1426+
1427+
req, err := http.NewRequest("GET", "/validate-request/prepare-for-validation-with-context?name=Goravel", nil)
1428+
s.Require().Nil(err)
1429+
1430+
code, body, _, _ := s.request(req)
1431+
1432+
s.Equal("{\"name\":\"Goravel1-ctx\"}", body)
1433+
s.Equal(http.StatusOK, code)
1434+
}
1435+
14081436
func (s *ContextRequestSuite) TestValidateRequest_GetSuccess() {
14091437
s.route.Get("/validate-request/get-success", func(ctx contractshttp.Context) contractshttp.Response {
14101438
var createUser CreateUser

go.mod

Lines changed: 18 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ toolchain go1.23.4
77
require (
88
github.com/gin-gonic/gin v1.10.0
99
github.com/gookit/validate v1.5.4
10-
github.com/goravel/framework v1.15.2
10+
github.com/goravel/framework v1.15.4
1111
github.com/rs/cors v1.11.1
1212
github.com/spf13/cast v1.7.1
1313
github.com/stretchr/testify v1.10.0
@@ -18,114 +18,42 @@ require (
1818
atomicgo.dev/cursor v0.2.0 // indirect
1919
atomicgo.dev/keyboard v0.2.9 // indirect
2020
atomicgo.dev/schedule v0.1.0 // indirect
21-
cloud.google.com/go v0.112.1 // indirect
22-
cloud.google.com/go/compute/metadata v0.5.2 // indirect
23-
cloud.google.com/go/iam v1.1.6 // indirect
24-
cloud.google.com/go/pubsub v1.36.1 // indirect
25-
filippo.io/edwards25519 v1.1.0 // indirect
26-
github.com/RichardKnop/logging v0.0.0-20190827224416-1a693bdd4fae // indirect
27-
github.com/RichardKnop/machinery/v2 v2.0.13 // indirect
28-
github.com/atotto/clipboard v0.1.4 // indirect
29-
github.com/aws/aws-sdk-go v1.49.6 // indirect
30-
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
3121
github.com/bytedance/sonic v1.11.6 // indirect
3222
github.com/bytedance/sonic/loader v0.1.1 // indirect
33-
github.com/catppuccin/go v0.2.0 // indirect
34-
github.com/cespare/xxhash/v2 v2.3.0 // indirect
35-
github.com/charmbracelet/bubbles v0.20.0 // indirect
36-
github.com/charmbracelet/bubbletea v1.2.5-0.20241205214244-9306010a31ee // indirect
37-
github.com/charmbracelet/huh v0.6.0 // indirect
38-
github.com/charmbracelet/huh/spinner v0.0.0-20241216182847-438e4f741435 // indirect
39-
github.com/charmbracelet/lipgloss v1.0.0 // indirect
40-
github.com/charmbracelet/x/ansi v0.4.5 // indirect
41-
github.com/charmbracelet/x/exp/strings v0.0.0-20240722160745-212f7b056ed0 // indirect
42-
github.com/charmbracelet/x/term v0.2.1 // indirect
4323
github.com/cloudwego/base64x v0.1.4 // indirect
4424
github.com/cloudwego/iasm v0.2.0 // indirect
45-
github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 // indirect
46-
github.com/cpuguy83/go-md2man/v2 v2.0.5 // indirect
25+
github.com/containerd/console v1.0.4 // indirect
4726
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
48-
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
4927
github.com/dromara/carbon/v2 v2.5.2 // indirect
50-
github.com/dustin/go-humanize v1.0.1 // indirect
51-
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect
52-
github.com/felixge/httpsnoop v1.0.4 // indirect
53-
github.com/fsnotify/fsnotify v1.7.0 // indirect
54-
github.com/gabriel-vasile/mimetype v1.4.7 // indirect
28+
github.com/fsnotify/fsnotify v1.8.0 // indirect
29+
github.com/gabriel-vasile/mimetype v1.4.8 // indirect
5530
github.com/gin-contrib/sse v0.1.0 // indirect
56-
github.com/glebarez/go-sqlite v1.22.0 // indirect
57-
github.com/glebarez/sqlite v1.11.0 // indirect
58-
github.com/go-logr/logr v1.4.2 // indirect
59-
github.com/go-logr/stdr v1.2.2 // indirect
6031
github.com/go-playground/locales v0.14.1 // indirect
6132
github.com/go-playground/universal-translator v0.18.1 // indirect
6233
github.com/go-playground/validator/v10 v10.20.0 // indirect
63-
github.com/go-redsync/redsync/v4 v4.8.1 // indirect
64-
github.com/go-sql-driver/mysql v1.8.1 // indirect
65-
github.com/go-stack/stack v1.8.0 // indirect
6634
github.com/go-viper/mapstructure/v2 v2.2.1 // indirect
6735
github.com/goccy/go-json v0.10.2 // indirect
68-
github.com/golang-jwt/jwt/v5 v5.2.1 // indirect
69-
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 // indirect
70-
github.com/golang-sql/sqlexp v0.1.0 // indirect
71-
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
72-
github.com/golang/protobuf v1.5.4 // indirect
73-
github.com/golang/snappy v0.0.4 // indirect
74-
github.com/gomodule/redigo v2.0.0+incompatible // indirect
75-
github.com/google/s2a-go v0.1.7 // indirect
76-
github.com/google/uuid v1.6.0 // indirect
77-
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
78-
github.com/googleapis/gax-go/v2 v2.12.3 // indirect
7936
github.com/gookit/color v1.5.4 // indirect
8037
github.com/gookit/filter v1.2.2 // indirect
8138
github.com/gookit/goutil v0.6.18 // indirect
82-
github.com/goravel/file-rotatelogs/v2 v2.4.2 // indirect
83-
github.com/hashicorp/errwrap v1.1.0 // indirect
84-
github.com/hashicorp/go-multierror v1.1.1 // indirect
8539
github.com/hashicorp/hcl v1.0.0 // indirect
86-
github.com/jackc/pgpassfile v1.0.0 // indirect
87-
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect
88-
github.com/jackc/pgx/v5 v5.5.5 // indirect
89-
github.com/jackc/puddle/v2 v2.2.1 // indirect
90-
github.com/jinzhu/inflection v1.0.0 // indirect
91-
github.com/jinzhu/now v1.1.5 // indirect
92-
github.com/jmespath/go-jmespath v0.4.0 // indirect
9340
github.com/json-iterator/go v1.1.12 // indirect
94-
github.com/kelseyhightower/envconfig v1.4.0 // indirect
95-
github.com/klauspost/compress v1.17.2 // indirect
96-
github.com/klauspost/cpuid/v2 v2.2.7 // indirect
41+
github.com/klauspost/cpuid/v2 v2.2.9 // indirect
9742
github.com/leodido/go-urn v1.4.0 // indirect
9843
github.com/lithammer/fuzzysearch v1.1.8 // indirect
99-
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
100-
github.com/magiconair/properties v1.8.7 // indirect
44+
github.com/magiconair/properties v1.8.9 // indirect
10145
github.com/mattn/go-isatty v0.0.20 // indirect
102-
github.com/mattn/go-localereader v0.0.1 // indirect
10346
github.com/mattn/go-runewidth v0.0.16 // indirect
104-
github.com/microsoft/go-mssqldb v1.7.2 // indirect
105-
github.com/mitchellh/hashstructure/v2 v2.0.2 // indirect
10647
github.com/mitchellh/mapstructure v1.5.0 // indirect
10748
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
10849
github.com/modern-go/reflect2 v1.0.2 // indirect
109-
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect
110-
github.com/muesli/cancelreader v0.2.2 // indirect
111-
github.com/muesli/termenv v0.15.3-0.20240618155329-98d742f6907a // indirect
112-
github.com/opentracing/opentracing-go v1.2.0 // indirect
113-
github.com/pelletier/go-toml/v2 v2.2.2 // indirect
114-
github.com/pkg/errors v0.9.1 // indirect
50+
github.com/pelletier/go-toml/v2 v2.2.3 // indirect
11551
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
11652
github.com/pterm/pterm v0.12.80 // indirect
117-
github.com/rabbitmq/amqp091-go v1.9.0 // indirect
118-
github.com/redis/go-redis/v9 v9.7.0 // indirect
119-
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
120-
github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5 // indirect
12153
github.com/rivo/uniseg v0.4.7 // indirect
122-
github.com/robfig/cron/v3 v3.0.1 // indirect
12354
github.com/rogpeppe/go-internal v1.12.0 // indirect
124-
github.com/rotisserie/eris v0.5.4 // indirect
125-
github.com/russross/blackfriday/v2 v2.1.0 // indirect
126-
github.com/sagikazarmark/locafero v0.4.0 // indirect
55+
github.com/sagikazarmark/locafero v0.6.0 // indirect
12756
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
128-
github.com/samber/lo v1.47.0 // indirect
12957
github.com/sirupsen/logrus v1.9.3 // indirect
13058
github.com/sourcegraph/conc v0.3.0 // indirect
13159
github.com/spf13/afero v1.11.0 // indirect
@@ -135,48 +63,19 @@ require (
13563
github.com/subosito/gotenv v1.6.0 // indirect
13664
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
13765
github.com/ugorji/go/codec v1.2.12 // indirect
138-
github.com/urfave/cli/v2 v2.27.5 // indirect
139-
github.com/xdg-go/pbkdf2 v1.0.0 // indirect
140-
github.com/xdg-go/scram v1.1.1 // indirect
141-
github.com/xdg-go/stringprep v1.0.3 // indirect
14266
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
143-
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect
144-
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect
145-
go.mongodb.org/mongo-driver v1.7.5 // indirect
146-
go.opencensus.io v0.24.0 // indirect
147-
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect
148-
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect
149-
go.opentelemetry.io/otel v1.31.0 // indirect
150-
go.opentelemetry.io/otel/metric v1.31.0 // indirect
151-
go.opentelemetry.io/otel/trace v1.31.0 // indirect
152-
go.uber.org/atomic v1.11.0 // indirect
153-
go.uber.org/multierr v1.9.0 // indirect
67+
go.uber.org/multierr v1.11.0 // indirect
15468
golang.org/x/arch v0.8.0 // indirect
155-
golang.org/x/crypto v0.31.0 // indirect
156-
golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67 // indirect
157-
golang.org/x/net v0.31.0 // indirect
158-
golang.org/x/oauth2 v0.23.0 // indirect
159-
golang.org/x/sync v0.10.0 // indirect
160-
golang.org/x/sys v0.28.0 // indirect
161-
golang.org/x/term v0.27.0 // indirect
69+
golang.org/x/crypto v0.32.0 // indirect
70+
golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect
71+
golang.org/x/net v0.34.0 // indirect
72+
golang.org/x/sys v0.29.0 // indirect
73+
golang.org/x/term v0.28.0 // indirect
16274
golang.org/x/text v0.21.0 // indirect
163-
golang.org/x/time v0.5.0 // indirect
164-
google.golang.org/api v0.171.0 // indirect
165-
google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect
166-
google.golang.org/genproto/googleapis/api v0.0.0-20241015192408-796eee8c2d53 // indirect
167-
google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 // indirect
168-
google.golang.org/grpc v1.69.2 // indirect
169-
google.golang.org/protobuf v1.35.1 // indirect
75+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250124145028-65684f501c47 // indirect
76+
google.golang.org/grpc v1.70.0 // indirect
77+
google.golang.org/protobuf v1.36.4 // indirect
78+
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
17079
gopkg.in/ini.v1 v1.67.0 // indirect
171-
gopkg.in/yaml.v2 v2.4.0 // indirect
17280
gopkg.in/yaml.v3 v3.0.1 // indirect
173-
gorm.io/driver/mysql v1.5.7 // indirect
174-
gorm.io/driver/postgres v1.5.11 // indirect
175-
gorm.io/driver/sqlserver v1.5.4 // indirect
176-
gorm.io/gorm v1.25.12 // indirect
177-
gorm.io/plugin/dbresolver v1.5.3 // indirect
178-
modernc.org/libc v1.37.6 // indirect
179-
modernc.org/mathutil v1.6.0 // indirect
180-
modernc.org/memory v1.7.2 // indirect
181-
modernc.org/sqlite v1.28.0 // indirect
18281
)

0 commit comments

Comments
 (0)