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/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) + } + }) +} 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/apps.go b/internal/cli/apps.go index 460ce69c3..6acf940a6 100644 --- a/internal/cli/apps.go +++ b/internal/cli/apps.go @@ -109,7 +109,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) @@ -161,7 +161,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) @@ -318,7 +318,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) 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/logs.go b/internal/cli/logs.go index 4e97f71fd..0ae9a090e 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,11 +20,16 @@ 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 { @@ -34,15 +39,25 @@ func logsCmd(cli *cli) *cobra.Command { 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) + list, err := getLatestLogs(cli, flags.Num, inputs.ClientID) if err != nil { return fmt.Errorf("An unexpected error occurred while getting logs: %v", err) } @@ -68,12 +83,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 inputs.ClientID != "" { + queryParams = append(queryParams, management.Query(fmt.Sprintf(`client_id:"%s"`, inputs.ClientID))) + } + + list, err = cli.api.Log.List(queryParams...) if err != nil { cli.renderer.Errorf("An unexpected error occurred while getting logs: %v", err) return 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. 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) }