From a49ccddb81d1745df1710f3ef19251e2f01279df Mon Sep 17 00:00:00 2001 From: simwai <16225108+simwai@users.noreply.github.com> Date: Sat, 29 Mar 2025 21:31:32 +0100 Subject: [PATCH] cmd/authorize: show required arguments in help text --- cmd/authorize/authorize.go | 8 ++++++-- cmd/authorize/authorize_test.go | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 cmd/authorize/authorize_test.go diff --git a/cmd/authorize/authorize.go b/cmd/authorize/authorize.go index ded80186a..c4137a4cc 100644 --- a/cmd/authorize/authorize.go +++ b/cmd/authorize/authorize.go @@ -23,19 +23,23 @@ func init() { } var commandDefinition = &cobra.Command{ - Use: "authorize", + Use: "authorize [base64_json_blob | client_id client_secret]", Short: `Remote authorization.`, Long: `Remote authorization. Used to authorize a remote or headless rclone from a machine with a browser - use as instructed by rclone config. +The command requires 1-3 arguments: + - fs name (e.g., "drive", "s3", etc.) + - Either a base64 encoded JSON blob obtained from a previous rclone config session + - Or a client_id and client_secret pair obtained from the remote service + Use --auth-no-open-browser to prevent rclone to open auth link in default browser automatically. Use --template to generate HTML output via a custom Go template. If a blank string is provided as an argument to this flag, the default template is used.`, Annotations: map[string]string{ "versionIntroduced": "v1.27", - // "groups": "", }, RunE: func(command *cobra.Command, args []string) error { cmd.CheckArgs(1, 3, command, args) diff --git a/cmd/authorize/authorize_test.go b/cmd/authorize/authorize_test.go new file mode 100644 index 000000000..364da5ed1 --- /dev/null +++ b/cmd/authorize/authorize_test.go @@ -0,0 +1,32 @@ +package authorize + +import ( + "bytes" + "strings" + "testing" + + "github.com/spf13/cobra" +) + +func TestAuthorizeCommand(t *testing.T) { + // Test that the Use string is correctly formatted + if commandDefinition.Use != "authorize [base64_json_blob | client_id client_secret]" { + t.Errorf("Command Use string doesn't match expected format: %s", commandDefinition.Use) + } + + // Test that help output contains the argument information + buf := &bytes.Buffer{} + cmd := &cobra.Command{} + cmd.AddCommand(commandDefinition) + cmd.SetOut(buf) + cmd.SetArgs([]string{"authorize", "--help"}) + err := cmd.Execute() + if err != nil { + t.Fatalf("Failed to execute help command: %v", err) + } + + helpOutput := buf.String() + if !strings.Contains(helpOutput, "authorize ") { + t.Errorf("Help output doesn't contain correct usage information") + } +}