diff --git a/api.yaml b/api.yaml index 0c07826..97301fd 100644 --- a/api.yaml +++ b/api.yaml @@ -60,6 +60,32 @@ paths: summary: Returns info x-cli-group: info + parameters: + - name: p1 + required: true + in: path + description: The first param + schema: + type: integer + - name: p2 + required: true + in: query + description: The second param + schema: + type: string + - name: p3 + required: true + in: header + description: The third param + schema: + type: number + - name: p4 + required: true + in: cookie + description: The fourth param + schema: + type: boolean + components: schemas: NumbersMap: diff --git a/lib.go b/lib.go index e7fdb1d..443f85e 100644 --- a/lib.go +++ b/lib.go @@ -82,11 +82,13 @@ func parseExtensions(exts *orderedmap.Map[string, *yaml.Node]) (*extensions, err } func addParams(cmd *cobra.Command, op *v3.Operation, handlerData *HandlerData) { + var ( + queryParams []ParamMeta + pathParams []ParamMeta + headerParams []ParamMeta + cookieParams []ParamMeta + ) flags := cmd.Flags() - queryParams := []ParamMeta{} - pathParams := []ParamMeta{} - headerParams := []ParamMeta{} - cookieParams := []ParamMeta{} for _, param := range op.Parameters { schema := param.Schema.Schema() diff --git a/lib_test.go b/lib_test.go index 3f7c59d..c58e4ed 100644 --- a/lib_test.go +++ b/lib_test.go @@ -84,7 +84,10 @@ func TestBootstrapV3(t *testing.T) { } handler := func(opts *cobra.Command, args []string, data HandlerData) { - // TODO: test handlers when? + assert.Equal(t, data.PathParams, []ParamMeta{{Name: "p1", Type: Integer}}) + assert.Equal(t, data.QueryParams, []ParamMeta{{Name: "p2", Type: String}}) + assert.Equal(t, data.HeaderParams, []ParamMeta{{Name: "p3", Type: Number}}) + assert.Equal(t, data.CookieParams, []ParamMeta{{Name: "p4", Type: Boolean}}) } rootCmd := &cobra.Command{ Use: "calc", @@ -156,4 +159,7 @@ func TestBootstrapV3(t *testing.T) { } assertCmdTree(t, rootCmd, assertConf, rootCmd.Use) + + rootCmd.SetArgs([]string{"info", "GetInfo", "--p1", "420", "--p2", "yes", "--p3", "420.69", "--p4", "true"}) + rootCmd.Execute() }