|
69 | 69 | assert.Nil(t, errors) |
70 | 70 | } |
71 | 71 |
|
72 | | -func TestNewValidator_QueryParamMinimum(t *testing.T) { |
| 72 | +func TestNewValidator_QueryParamMinimum_violation(t *testing.T) { |
73 | 73 | spec := `openapi: 3.1.0 |
74 | 74 | paths: |
75 | 75 | /a/fishy/on/a/dishy: |
@@ -99,6 +99,36 @@ paths: |
99 | 99 | assert.Equal(t, "Query parameter 'fishy' failed to validate", errors[0].Message) |
100 | 100 | } |
101 | 101 |
|
| 102 | +func TestNewValidator_QueryParamMinimum(t *testing.T) { |
| 103 | + spec := `openapi: 3.1.0 |
| 104 | +paths: |
| 105 | + /a/fishy/on/a/dishy: |
| 106 | + get: |
| 107 | + parameters: |
| 108 | + - name: fishy |
| 109 | + in: query |
| 110 | + required: true |
| 111 | + schema: |
| 112 | + type: string |
| 113 | + minLength: 4 |
| 114 | + operationId: locateFishy |
| 115 | +` |
| 116 | + |
| 117 | + doc, err := libopenapi.NewDocument([]byte(spec)) |
| 118 | + require.NoError(t, err) |
| 119 | + m, errs := doc.BuildV3Model() |
| 120 | + require.Len(t, errs, 0) |
| 121 | + |
| 122 | + v := NewParameterValidator(&m.Model) |
| 123 | + |
| 124 | + request, _ := http.NewRequest(http.MethodGet, "https://things.com/a/fishy/on/a/dishy?fishy=salmon", nil) |
| 125 | + |
| 126 | + valid, errors := v.ValidateQueryParams(request) |
| 127 | + assert.True(t, valid) |
| 128 | + |
| 129 | + assert.Nil(t, errors) |
| 130 | +} |
| 131 | + |
102 | 132 | func TestNewValidator_QueryParamPost(t *testing.T) { |
103 | 133 | spec := `openapi: 3.1.0 |
104 | 134 | paths: |
@@ -401,6 +431,36 @@ paths: |
401 | 431 |
|
402 | 432 | v := NewParameterValidator(&m.Model) |
403 | 433 |
|
| 434 | + request, _ := http.NewRequest(http.MethodGet, "https://things.com/a/fishy/on/a/dishy?fishy=300", nil) |
| 435 | + |
| 436 | + valid, errors := v.ValidateQueryParams(request) |
| 437 | + assert.True(t, valid) |
| 438 | + |
| 439 | + assert.Nil(t, errors) |
| 440 | +} |
| 441 | + |
| 442 | +func TestNewValidator_QueryParamMinimumNumber_violation(t *testing.T) { |
| 443 | + spec := `openapi: 3.1.0 |
| 444 | +paths: |
| 445 | + /a/fishy/on/a/dishy: |
| 446 | + get: |
| 447 | + parameters: |
| 448 | + - name: fishy |
| 449 | + in: query |
| 450 | + required: true |
| 451 | + schema: |
| 452 | + type: number |
| 453 | + minimum: 200 |
| 454 | + operationId: locateFishy |
| 455 | +` |
| 456 | + |
| 457 | + doc, err := libopenapi.NewDocument([]byte(spec)) |
| 458 | + require.NoError(t, err) |
| 459 | + m, errs := doc.BuildV3Model() |
| 460 | + require.Len(t, errs, 0) |
| 461 | + |
| 462 | + v := NewParameterValidator(&m.Model) |
| 463 | + |
404 | 464 | request, _ := http.NewRequest(http.MethodGet, "https://things.com/a/fishy/on/a/dishy?fishy=123", nil) |
405 | 465 |
|
406 | 466 | valid, errors := v.ValidateQueryParams(request) |
|
0 commit comments