Skip to content

Commit de3677b

Browse files
committed
fix: update http extractor and error tests for human-readable validation messages
1 parent bea92f9 commit de3677b

File tree

2 files changed

+20
-20
lines changed

2 files changed

+20
-20
lines changed

plugins/errors_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,27 +24,27 @@ func TestInvalidConfigError(t *testing.T) {
2424
Type: "extractor",
2525
PluginName: "testplugin",
2626
Errors: []ConfigError{
27-
{Key: "engine", Message: "validation for field 'engine' failed on the 'oneof' tag"},
28-
{Key: "script", Message: "validation for field 'script' failed on the 'required' tag"},
27+
{Key: "engine", Message: "field 'engine' must be one of [tengo], got \"mango\""},
28+
{Key: "script", Message: "field 'script' is required"},
2929
},
3030
},
3131
expected: heredoc.Doc(`
3232
invalid extractor config:
33-
* validation for field 'engine' failed on the 'oneof' tag
34-
* validation for field 'script' failed on the 'required' tag`),
33+
* field 'engine' must be one of [tengo], got "mango"
34+
* field 'script' is required`),
3535
hasError: true,
3636
},
3737
{
3838
name: "WithoutType",
3939
err: InvalidConfigError{
4040
PluginName: "testplugin",
4141
Errors: []ConfigError{
42-
{Key: "engine", Message: "validation for field 'engine' failed on the 'oneof' tag"},
42+
{Key: "engine", Message: "field 'engine' must be one of [tengo], got \"mango\""},
4343
},
4444
},
4545
expected: heredoc.Doc(`
4646
invalid config:
47-
* validation for field 'engine' failed on the 'oneof' tag`),
47+
* field 'engine' must be one of [tengo], got "mango"`),
4848
hasError: true,
4949
},
5050
{

plugins/extractors/http/http_extractor_test.go

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,14 @@ func TestInit(t *testing.T) {
4949
{
5050
name: "ReqURLRequired",
5151
rawCfg: map[string]any{},
52-
expectedErr: "validation for field 'request.url' failed on the 'required' tag",
52+
expectedErr: "field 'request.url' is required",
5353
},
5454
{
5555
name: "ReqURLInvalid",
5656
rawCfg: map[string]any{
5757
"request": map[string]any{"url": "invalid_url"},
5858
},
59-
expectedErr: "validation for field 'request.url' failed on the 'url' tag",
59+
expectedErr: "field 'request.url' must be a valid URL (e.g. https://example.com), got \"invalid_url\"",
6060
},
6161
{
6262
name: "ReqQueryParamInvalidKey",
@@ -65,7 +65,7 @@ func TestInit(t *testing.T) {
6565
"query_params": []QueryParam{{Value: "v"}},
6666
},
6767
},
68-
expectedErr: "validation for field 'request.query_params[0].key' failed on the 'required' tag",
68+
expectedErr: "field 'request.query_params[0].key' is required",
6969
},
7070
{
7171
name: "ReqQueryParamInvalidValue",
@@ -74,12 +74,12 @@ func TestInit(t *testing.T) {
7474
"query_params": []QueryParam{{Key: "k"}},
7575
},
7676
},
77-
expectedErr: "validation for field 'request.query_params[0].value' failed on the 'required' tag",
77+
expectedErr: "field 'request.query_params[0].value' is required",
7878
},
7979
{
8080
name: "ReqContentTypeRequired",
8181
rawCfg: map[string]any{},
82-
expectedErr: "validation for field 'request.content_type' failed on the 'required' tag",
82+
expectedErr: "field 'request.content_type' is required",
8383
},
8484
{
8585
name: "ReqContentTypeUnsupported",
@@ -88,12 +88,12 @@ func TestInit(t *testing.T) {
8888
"content_type": "application/text",
8989
},
9090
},
91-
expectedErr: "validation for field 'request.content_type' failed on the 'oneof' tag",
91+
expectedErr: "field 'request.content_type' must be one of [application/json], got \"application/text\"",
9292
},
9393
{
9494
name: "ReqAcceptRequired",
9595
rawCfg: map[string]any{},
96-
expectedErr: "validation for field 'request.accept' failed on the 'required' tag",
96+
expectedErr: "field 'request.accept' is required",
9797
},
9898
{
9999
name: "ReqAcceptUnsupported",
@@ -102,7 +102,7 @@ func TestInit(t *testing.T) {
102102
"accept": "application/text",
103103
},
104104
},
105-
expectedErr: "validation for field 'request.accept' failed on the 'oneof' tag",
105+
expectedErr: "field 'request.accept' must be one of [application/json], got \"application/text\"",
106106
},
107107
{
108108
name: "ReqMethodUnsupported",
@@ -111,7 +111,7 @@ func TestInit(t *testing.T) {
111111
"method": "PUT",
112112
},
113113
},
114-
expectedErr: "validation for field 'request.method' failed on the 'oneof' tag",
114+
expectedErr: "field 'request.method' must be one of [GET POST], got \"PUT\"",
115115
},
116116
{
117117
name: "ReqTimeoutInvalid",
@@ -120,19 +120,19 @@ func TestInit(t *testing.T) {
120120
"timeout": 1,
121121
},
122122
},
123-
expectedErr: "validation for field 'request.timeout' failed on the 'min' tag",
123+
expectedErr: "field 'request.timeout' must be at least 1ms",
124124
},
125125
{
126126
name: "SuccessCodesInvalid",
127127
rawCfg: map[string]any{
128128
"success_codes": []int{10000},
129129
},
130-
expectedErr: "validation for field 'success_codes[0]' failed on the 'lt' tag",
130+
expectedErr: "field 'success_codes[0]' failed validation: lt=300",
131131
},
132132
{
133133
name: "ScriptEngineRequired",
134134
rawCfg: map[string]any{},
135-
expectedErr: "validation for field 'script.engine' failed on the 'required' tag",
135+
expectedErr: "field 'script.engine' is required",
136136
},
137137
{
138138
name: "ScriptEngineUnsupported",
@@ -141,12 +141,12 @@ func TestInit(t *testing.T) {
141141
"engine": "mango",
142142
},
143143
},
144-
expectedErr: "validation for field 'script.engine' failed on the 'oneof' tag",
144+
expectedErr: "field 'script.engine' must be one of [tengo], got \"mango\"",
145145
},
146146
{
147147
name: "ScriptSourceRequired",
148148
rawCfg: map[string]any{},
149-
expectedErr: "validation for field 'script.source' failed on the 'required' tag",
149+
expectedErr: "field 'script.source' is required",
150150
},
151151
}
152152
for _, tc := range cases {

0 commit comments

Comments
 (0)