chore: Add "required" to allow requring url params (#6994)

This commit is contained in:
Steven Masley
2023-04-03 20:59:59 -05:00
committed by GitHub
parent 3cca30c770
commit a96376e02e
2 changed files with 81 additions and 2 deletions

View File

@ -195,6 +195,43 @@ func TestParseQueryParams(t *testing.T) {
testQueryParams(t, expParams, parser, parser.Int)
})
t.Run("UInt", func(t *testing.T) {
t.Parallel()
expParams := []queryParamTestCase[uint64]{
{
QueryParam: "valid_integer",
Value: "100",
Expected: 100,
},
{
QueryParam: "empty",
Value: "",
Expected: 0,
},
{
QueryParam: "no_value",
NoSet: true,
Default: 5,
Expected: 5,
},
{
QueryParam: "negative",
Value: "-10",
Default: 5,
ExpectedErrorContains: "must be a valid positive integer",
},
{
QueryParam: "invalid_integer",
Value: "bogus",
Expected: 0,
ExpectedErrorContains: "must be a valid positive integer",
},
}
parser := httpapi.NewQueryParamParser()
testQueryParams(t, expParams, parser, parser.UInt)
})
t.Run("UUIDs", func(t *testing.T) {
t.Parallel()
expParams := []queryParamTestCase[[]uuid.UUID]{
@ -237,6 +274,15 @@ func TestParseQueryParams(t *testing.T) {
parser := httpapi.NewQueryParamParser()
testQueryParams(t, expParams, parser, parser.UUIDs)
})
t.Run("Required", func(t *testing.T) {
t.Parallel()
parser := httpapi.NewQueryParamParser()
parser.Required("test_value")
parser.UUID(url.Values{}, uuid.New(), "test_value")
require.Len(t, parser.Errors, 1)
})
}
func testQueryParams[T any](t *testing.T, testCases []queryParamTestCase[T], parser *httpapi.QueryParamParser, parse func(vals url.Values, def T, queryParam string) T) {