From 068c14ae51ba49462e1c4fc561c103a216caa9dd Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Thu, 11 Mar 2021 20:12:17 -0300 Subject: [PATCH 1/9] Change Id to ClientId --- internal/cli/apps.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/cli/apps.go b/internal/cli/apps.go index fcdd0899b..e7f5ef9e6 100644 --- a/internal/cli/apps.go +++ b/internal/cli/apps.go @@ -84,7 +84,7 @@ auth0 apps show RunE: func(cmd *cobra.Command, args []string) error { if len(args) == 0 { if canPrompt(cmd) { - input := prompt.TextInput(appID, "Id:", "Id of the application.", true) + input := prompt.TextInput(appID, "Client Id:", "Id of the application.", true) if err := prompt.AskOne(input, &inputs); err != nil { return fmt.Errorf("An unexpected error occurred: %w", err) @@ -136,7 +136,7 @@ auth0 apps delete RunE: func(cmd *cobra.Command, args []string) error { if len(args) == 0 { if canPrompt(cmd) { - input := prompt.TextInput(appID, "Id:", "Id of the application.", true) + input := prompt.TextInput(appID, "Client Id:", "Id of the application.", true) if err := prompt.AskOne(input, &inputs); err != nil { return fmt.Errorf("An unexpected error occurred: %w", err) @@ -304,7 +304,7 @@ auth0 apps update --name myapp --type [native|spa|regular|m2m] RunE: func(cmd *cobra.Command, args []string) error { if len(args) == 0 { if canPrompt(cmd) { - input := prompt.TextInput(appID, "Id:", "Id of the application.", true) + input := prompt.TextInput(appID, "Client Id:", "Id of the application.", true) if err := prompt.AskOne(input, &inputs); err != nil { return fmt.Errorf("An unexpected error occurred: %w", err) From d8667ff15464c734d2085cb3d2332707d3341912 Mon Sep 17 00:00:00 2001 From: Andy Herzog Date: Fri, 12 Mar 2021 09:39:34 -0700 Subject: [PATCH 2/9] fix: version for release binaries --- .goreleaser.yml | 5 +++++ .../{build-info/build_info.go => buildinfo/buildinfo.go} | 0 internal/cli/cli.go | 2 +- internal/cli/root.go | 5 +++-- 4 files changed, 9 insertions(+), 3 deletions(-) rename internal/{build-info/build_info.go => buildinfo/buildinfo.go} (100%) diff --git a/.goreleaser.yml b/.goreleaser.yml index d2ce60741..42f9bd3c6 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -10,6 +10,11 @@ builds: - linux - windows binary: auth0 + ldflags: + - -X github.com/auth0/auth0-cli/internal/buildinfo.Version={{.Version}} + - -X github.com/auth0/auth0-cli/internal/buildinfo.Revision={{.Commit}} + - -X github.com/auth0/auth0-cli/internal/buildinfo.BuildUser=goreleaser' + - -X github.com/auth0/auth0-cli/internal/buildinfo.BuildDate={{.Date}}' archives: - replacements: darwin: Darwin diff --git a/internal/build-info/build_info.go b/internal/buildinfo/buildinfo.go similarity index 100% rename from internal/build-info/build_info.go rename to internal/buildinfo/buildinfo.go diff --git a/internal/cli/cli.go b/internal/cli/cli.go index 47a3cb31b..1e2c36e73 100644 --- a/internal/cli/cli.go +++ b/internal/cli/cli.go @@ -17,7 +17,7 @@ import ( "github.com/auth0/auth0-cli/internal/ansi" "github.com/auth0/auth0-cli/internal/auth" "github.com/auth0/auth0-cli/internal/auth0" - "github.com/auth0/auth0-cli/internal/build-info" + "github.com/auth0/auth0-cli/internal/buildinfo" "github.com/auth0/auth0-cli/internal/display" "github.com/lestrrat-go/jwx/jwt" "github.com/spf13/cobra" diff --git a/internal/cli/root.go b/internal/cli/root.go index 9003656b3..26ca3bc95 100644 --- a/internal/cli/root.go +++ b/internal/cli/root.go @@ -2,11 +2,12 @@ package cli import ( "context" + "os" + "github.com/auth0/auth0-cli/internal/ansi" - "github.com/auth0/auth0-cli/internal/build-info" + "github.com/auth0/auth0-cli/internal/buildinfo" "github.com/auth0/auth0-cli/internal/display" "github.com/spf13/cobra" - "os" ) // Execute is the primary entrypoint of the CLI app. From 3147cb9181719ed8edd912e65da0d50e4ea64fda Mon Sep 17 00:00:00 2001 From: Chris Scott Date: Fri, 12 Mar 2021 12:55:47 -0500 Subject: [PATCH 3/9] Add flag to query logs by client ID. --- internal/cli/logs.go | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/internal/cli/logs.go b/internal/cli/logs.go index 4e97f71fd..4e73b94d7 100644 --- a/internal/cli/logs.go +++ b/internal/cli/logs.go @@ -10,7 +10,7 @@ import ( "gopkg.in/auth0.v5/management" ) -func getLatestLogs(cli *cli, n int) ([]*management.Log, error) { +func getLatestLogs(cli *cli, n int, ClientID string) ([]*management.Log, error) { page := 0 perPage := n @@ -20,18 +20,24 @@ func getLatestLogs(cli *cli, n int) ([]*management.Log, error) { perPage = 1000 } - return cli.api.Log.List( + queryParams := []management.RequestOption{ management.Parameter("sort", "date:-1"), management.Parameter("page", fmt.Sprintf("%d", page)), - management.Parameter("per_page", fmt.Sprintf("%d", perPage)), - ) + management.Parameter("per_page", fmt.Sprintf("%d", perPage))} + + if ClientID != "" { + queryParams = append(queryParams, management.Query(fmt.Sprintf(`client_id:"%s"`, ClientID))) + } + + return cli.api.Log.List(queryParams...) } func logsCmd(cli *cli) *cobra.Command { var flags struct { - Num int - Follow bool - NoColor bool + Num int + Follow bool + NoColor bool + ClientID string } cmd := &cobra.Command{ @@ -42,7 +48,7 @@ Show the tenant logs. `, RunE: func(cmd *cobra.Command, args []string) error { lastLogID := "" - list, err := getLatestLogs(cli, flags.Num) + list, err := getLatestLogs(cli, flags.Num, flags.ClientID) if err != nil { return fmt.Errorf("An unexpected error occurred while getting logs: %v", err) } @@ -68,12 +74,18 @@ Show the tenant logs. defer close(logsCh) for { - list, err = cli.api.Log.List( + queryParams := []management.RequestOption{ management.Query(fmt.Sprintf("log_id:[%s TO *]", lastLogID)), management.Parameter("page", "0"), management.Parameter("per_page", "100"), management.Parameter("sort", "date:-1"), - ) + } + + if flags.ClientID != "" { + queryParams = append(queryParams, management.Query(fmt.Sprintf(`client_id:"%s"`, flags.ClientID))) + } + + list, err = cli.api.Log.List(queryParams...) if err != nil { cli.renderer.Errorf("An unexpected error occurred while getting logs: %v", err) return @@ -109,6 +121,7 @@ Show the tenant logs. cmd.Flags().IntVarP(&flags.Num, "num-entries", "n", 100, "the number of log entries to print") cmd.Flags().BoolVarP(&flags.Follow, "follow", "f", false, "Specify if the logs should be streamed") cmd.Flags().BoolVar(&flags.NoColor, "no-color", false, "turn off colored print") + cmd.Flags().StringVarP(&flags.ClientID, "client-id", "c", "", "client ID to display logs for") return cmd } From b575bfdd061f864a07ba49e137600a6b972fa16f Mon Sep 17 00:00:00 2001 From: Chris Scott Date: Fri, 12 Mar 2021 14:04:11 -0500 Subject: [PATCH 4/9] Move client-id flag to an optional argument --- internal/cli/logs.go | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/internal/cli/logs.go b/internal/cli/logs.go index 4e73b94d7..ed8dd9639 100644 --- a/internal/cli/logs.go +++ b/internal/cli/logs.go @@ -34,21 +34,30 @@ func getLatestLogs(cli *cli, n int, ClientID string) ([]*management.Log, error) func logsCmd(cli *cli) *cobra.Command { var flags struct { - Num int - Follow bool - NoColor bool + Num int + Follow bool + NoColor bool + } + + var inputs struct { ClientID string } cmd := &cobra.Command{ - Use: "logs", + Use: "logs [client-id]", + Args: cobra.MaximumNArgs(1), Short: "Show the tenant logs", - Long: `auth0 logs -Show the tenant logs. + Long: `Show the tenant logs: + +auth0 logs [client-id] `, RunE: func(cmd *cobra.Command, args []string) error { + inputs.ClientID = "" + if len(args) == 1 { + inputs.ClientID = args[0] + } lastLogID := "" - list, err := getLatestLogs(cli, flags.Num, flags.ClientID) + list, err := getLatestLogs(cli, flags.Num, inputs.ClientID) if err != nil { return fmt.Errorf("An unexpected error occurred while getting logs: %v", err) } @@ -81,8 +90,8 @@ Show the tenant logs. management.Parameter("sort", "date:-1"), } - if flags.ClientID != "" { - queryParams = append(queryParams, management.Query(fmt.Sprintf(`client_id:"%s"`, flags.ClientID))) + if inputs.ClientID != "" { + queryParams = append(queryParams, management.Query(fmt.Sprintf(`client_id:"%s"`, inputs.ClientID))) } list, err = cli.api.Log.List(queryParams...) @@ -121,7 +130,6 @@ Show the tenant logs. cmd.Flags().IntVarP(&flags.Num, "num-entries", "n", 100, "the number of log entries to print") cmd.Flags().BoolVarP(&flags.Follow, "follow", "f", false, "Specify if the logs should be streamed") cmd.Flags().BoolVar(&flags.NoColor, "no-color", false, "turn off colored print") - cmd.Flags().StringVarP(&flags.ClientID, "client-id", "c", "", "client ID to display logs for") return cmd } From 2e15176b5307b9ee5a22bdcff96b830fc6f9dbc9 Mon Sep 17 00:00:00 2001 From: "Jorge L. Fatta" Date: Fri, 12 Mar 2021 17:18:04 -0300 Subject: [PATCH 5/9] test: keychain abstraction (#149) * test: keychain abstraction (secrets) * check error on test * fix typo --- internal/auth/secrets_test.go | 63 +++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 internal/auth/secrets_test.go diff --git a/internal/auth/secrets_test.go b/internal/auth/secrets_test.go new file mode 100644 index 000000000..e98a3fdc1 --- /dev/null +++ b/internal/auth/secrets_test.go @@ -0,0 +1,63 @@ +package auth + +import ( + "testing" + + "github.com/zalando/go-keyring" +) + +func TestSecrets(t *testing.T) { + t.Run("fail: not found", func(t *testing.T) { + // init underlying keychain manager + keyring.MockInit() + + kr := &Keyring{} + _, err := kr.Get("mynamespace", "foo") + + if got, want := err, keyring.ErrNotFound; got != want { + t.Fatalf("wanted error: %v, got: %v", want, got) + } + }) + + t.Run("succeed: get secret", func(t *testing.T) { + // init underlying keychain manager + keyring.MockInit() + + // set with the underlying manager: + err := keyring.Set("mynamespace", "foo", "bar") + if err != nil { + t.Fatal(err) + } + + kr := &Keyring{} + v, err := kr.Get("mynamespace", "foo") + if err != nil { + t.Fatal(err) + } + + if got, want := v, "bar"; got != want { + t.Fatalf("wanted error: %v, got: %v", want, got) + } + }) + + t.Run("succeed: set secret", func(t *testing.T) { + // init underlying keychain manager + keyring.MockInit() + + kr := &Keyring{} + err := kr.Set("mynamespace", "foo", "bar") + if err != nil { + t.Fatal(err) + } + + // get with the underlying manager: + v, err := keyring.Get("mynamespace", "foo") + if err != nil { + t.Fatal(err) + } + + if got, want := v, "bar"; got != want { + t.Fatalf("wanted secret: %v, got: %v", want, got) + } + }) +} From da3e724416ca18ee01ee2528545c8024e82b0e66 Mon Sep 17 00:00:00 2001 From: Chris Scott Date: Fri, 12 Mar 2021 15:42:42 -0500 Subject: [PATCH 6/9] Update internal/cli/logs.go Co-authored-by: Rita Zerrizuela --- internal/cli/logs.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/cli/logs.go b/internal/cli/logs.go index ed8dd9639..dd621d1ec 100644 --- a/internal/cli/logs.go +++ b/internal/cli/logs.go @@ -10,7 +10,7 @@ import ( "gopkg.in/auth0.v5/management" ) -func getLatestLogs(cli *cli, n int, ClientID string) ([]*management.Log, error) { +func getLatestLogs(cli *cli, n int, clientID string) ([]*management.Log, error) { page := 0 perPage := n From 6bf267e793219408ce2bc551935903d9f3c340f3 Mon Sep 17 00:00:00 2001 From: Chris Scott Date: Fri, 12 Mar 2021 15:42:50 -0500 Subject: [PATCH 7/9] Update internal/cli/logs.go Co-authored-by: Rita Zerrizuela --- internal/cli/logs.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/cli/logs.go b/internal/cli/logs.go index dd621d1ec..7854a449f 100644 --- a/internal/cli/logs.go +++ b/internal/cli/logs.go @@ -25,7 +25,7 @@ func getLatestLogs(cli *cli, n int, clientID string) ([]*management.Log, error) management.Parameter("page", fmt.Sprintf("%d", page)), management.Parameter("per_page", fmt.Sprintf("%d", perPage))} - if ClientID != "" { + if clientID != "" { queryParams = append(queryParams, management.Query(fmt.Sprintf(`client_id:"%s"`, ClientID))) } From ced4e3f383a770434f6cc630b0f0e58677819d2e Mon Sep 17 00:00:00 2001 From: Chris Scott Date: Fri, 12 Mar 2021 15:42:57 -0500 Subject: [PATCH 8/9] Update internal/cli/logs.go Co-authored-by: Rita Zerrizuela --- internal/cli/logs.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/cli/logs.go b/internal/cli/logs.go index 7854a449f..0ae9a090e 100644 --- a/internal/cli/logs.go +++ b/internal/cli/logs.go @@ -26,7 +26,7 @@ func getLatestLogs(cli *cli, n int, clientID string) ([]*management.Log, error) management.Parameter("per_page", fmt.Sprintf("%d", perPage))} if clientID != "" { - queryParams = append(queryParams, management.Query(fmt.Sprintf(`client_id:"%s"`, ClientID))) + queryParams = append(queryParams, management.Query(fmt.Sprintf(`client_id:"%s"`, clientID))) } return cli.api.Log.List(queryParams...) From 2bf07c97add35858493300ae9e82c30c4f14bb92 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Fri, 12 Mar 2021 20:13:17 -0300 Subject: [PATCH 9/9] Display empty KV fields --- internal/display/display.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/internal/display/display.go b/internal/display/display.go index b89beb07e..b19c436ab 100644 --- a/internal/display/display.go +++ b/internal/display/display.go @@ -113,11 +113,7 @@ func (r *Renderer) Result(data View) { for _, pair := range v.KeyValues() { k := pair[0] v := pair[1] - - // NOTE(cyx): We can either nuke it or annotate with ``. For now we're choosing to nuke it. - if v != "" { - kvs = append(kvs, []string{k, v}) - } + kvs = append(kvs, []string{k, v}) } writeTable(r.ResultWriter, nil, kvs) }