diff --git a/client/client.go b/client/client.go index ddd30bb..759ae1d 100644 --- a/client/client.go +++ b/client/client.go @@ -55,11 +55,10 @@ func Get(program ProgramFunc, serverURL string) (*credentials.Credentials, error return resp, nil } -// Erase executes a program to remove the server credentails from the native store. +// Erase executes a program to remove the server credentials from the native store. func Erase(program ProgramFunc, serverURL string) error { cmd := program("erase") cmd.Input(strings.NewReader(serverURL)) - out, err := cmd.Output() if err != nil { t := strings.TrimSpace(string(out)) @@ -68,3 +67,15 @@ func Erase(program ProgramFunc, serverURL string) error { return nil } + +// List executes a program to remove the server credentials from the native store. +func List(program ProgramFunc) error { + cmd := program("list") + cmd.Input(strings.NewReader("garbage")) + out, err := cmd.Output() + if err != nil { + t := strings.TrimSpace(string(out)) + return fmt.Errorf("error listing credentials - err: %v, out: `%s`", err, t) + } + return nil +} \ No newline at end of file diff --git a/client/client_test.go b/client/client_test.go index 1f2ee53..1f8b4bd 100644 --- a/client/client_test.go +++ b/client/client_test.go @@ -70,6 +70,9 @@ func (m *mockProgram) Output() ([]byte, error) { default: return []byte("error storing credentials"), errProgramExited } + case "list": + return []byte(`{"Path":"e237574ae22fd53ddb9490dc1f72139946fd5372d42ba54d1eeb3ae5068fd22b","Username":"http://example.com/collections\u003cnotary_key\u003eSnapshot"}`), nil + } return []byte(fmt.Sprintf("unknown argument %q with %q", m.arg, inS)), errProgramExited @@ -190,3 +193,9 @@ func TestErase(t *testing.T) { t.Fatalf("Expected error for server %s, got nil", invalidServerAddress) } } + +func TestList(t *testing.T) { + if err := List(mockProgramFn); err != nil { + t.Fatal(err) + } +} diff --git a/credentials/credentials.go b/credentials/credentials.go index 8fc69c7..6d7259b 100644 --- a/credentials/credentials.go +++ b/credentials/credentials.go @@ -30,7 +30,7 @@ type KeyData struct { func Serve(helper Helper) { var err error if len(os.Args) != 2 { - err = fmt.Errorf("Usage: %s ", os.Args[0]) + err = fmt.Errorf("Usage: %s ", os.Args[0]) } if err == nil { @@ -52,6 +52,8 @@ func HandleCommand(helper Helper, key string, in io.Reader, out io.Writer) error return Get(helper, in, out) case "erase": return Erase(helper, in) + case "list": + return List(helper, out) } return fmt.Errorf("Unknown credential action `%s`", key) }