MCPcopy Index your code
hub / github.com/coder/coder / TestParseQueryParams

Function TestParseQueryParams

coderd/httpapi/queryparams_test.go:34–553  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

32}
33
34func TestParseQueryParams(t *testing.T) {
35 t.Parallel()
36 const multipleValuesError = "provided more than once"
37
38 t.Run("Enum", func(t *testing.T) {
39 t.Parallel()
40
41 expParams := []queryParamTestCase[database.ResourceType]{
42 {
43 QueryParam: "resource_type",
44 Value: string(database.ResourceTypeWorkspace),
45 Expected: database.ResourceTypeWorkspace,
46 },
47 {
48 QueryParam: "bad_type",
49 Value: "foo",
50 ExpectedErrorContains: "not a valid value",
51 },
52 }
53
54 parser := httpapi.NewQueryParamParser()
55 testQueryParams(t, expParams, parser, func(vals url.Values, def database.ResourceType, queryParam string) database.ResourceType {
56 return httpapi.ParseCustom(parser, vals, def, queryParam, httpapi.ParseEnum[database.ResourceType])
57 })
58 })
59
60 t.Run("EnumList", func(t *testing.T) {
61 t.Parallel()
62
63 expParams := []queryParamTestCase[[]database.ResourceType]{
64 {
65 QueryParam: "resource_type",
66 Value: fmt.Sprintf("%s,%s", database.ResourceTypeWorkspace, database.ResourceTypeApiKey),
67 Expected: []database.ResourceType{database.ResourceTypeWorkspace, database.ResourceTypeApiKey},
68 },
69 {
70 QueryParam: "resource_type_as_list",
71 Values: []string{string(database.ResourceTypeWorkspace), string(database.ResourceTypeApiKey)},
72 Expected: []database.ResourceType{database.ResourceTypeWorkspace, database.ResourceTypeApiKey},
73 },
74 }
75
76 parser := httpapi.NewQueryParamParser()
77 testQueryParams(t, expParams, parser, func(vals url.Values, def []database.ResourceType, queryParam string) []database.ResourceType {
78 return httpapi.ParseCustomList(parser, vals, def, queryParam, httpapi.ParseEnum[database.ResourceType])
79 })
80 })
81
82 t.Run("Time", func(t *testing.T) {
83 t.Parallel()
84
85 expParams := []queryParamTestCase[time.Time]{
86 {
87 QueryParam: "date",
88 Value: "2023-01-16T00:00:00+12:00",
89 Expected: time.Date(2023, 1, 15, 12, 0, 0, 0, time.UTC),
90 },
91 {

Callers

nothing calls this directly

Calls 12

Time3339NanoMethod · 0.95
UUIDorMeMethod · 0.95
RequiredNotEmptyMethod · 0.95
UUIDMethod · 0.95
StringMethod · 0.95
NewQueryParamParserFunction · 0.92
ParseCustomFunction · 0.92
ParseCustomListFunction · 0.92
testQueryParamsFunction · 0.85
RunMethod · 0.65
NewMethod · 0.65
LenMethod · 0.45

Tested by

no test coverage detected