@cryptotaxi247 / kubo / commits / 6f815b156

Add a Has(name) method to the keystore

License: MIT Signed-off-by: Michael Muré <batolettre@gmail.com>

Michael Muré committed May 4, 2017 at 17:29 UTC 6f815b15688f189e8f39d6baa3640982b6fb3f28
4 files changed +31
keystore/keystore.go
+9
@@ -11,6 +11,7 @@ import (
11 )
12
13 type Keystore interface {
14 + Has(string) bool
15 Put(string, ci.PrivKey) error
16 Get(string) (ci.PrivKey, error)
17 Delete(string) error
@@ -54,6 +55,14 @@ func NewFSKeystore(dir string) (*FSKeystore, error) {
55 return &FSKeystore{dir}, nil
56 }
57
58 +func (ks *FSKeystore) Has(name string) bool {
59 + kp := filepath.Join(ks.dir, name)
60 +
61 + _, err := os.Stat(kp)
62 +
63 + return err == nil
64 +}
65 +
66 func (ks *FSKeystore) Put(name string, k ci.PrivKey) error {
67 if err := validateName(name); err != nil {
68 return err
keystore/keystore_test.go
+8
@@ -82,6 +82,14 @@ func TestKeystoreBasics(t *testing.T) {
82 t.Fatal(err)
83 }
84
85 + if !ks.Has("foo") {
86 + t.Fatal("should know it has a key named foo")
87 + }
88 +
89 + if ks.Has("nonexistingkey") {
90 + t.Fatal("should know it doesn't have a key named nonexistingkey")
91 + }
92 +
93 if err := ks.Delete("bar"); err != nil {
94 t.Fatal(err)
95 }
keystore/memkeystore.go
+5
@@ -10,6 +10,11 @@ func NewMemKeystore() *MemKeystore {
10 return &MemKeystore{make(map[string]ci.PrivKey)}
11 }
12
13 +func (mk *MemKeystore) Has(name string) bool {
14 + _, ok := mk.keys[name]
15 + return ok
16 +}
17 +
18 func (mk *MemKeystore) Put(name string, k ci.PrivKey) error {
19 if err := validateName(name); err != nil {
20 return err
keystore/memkeystore_test.go
+9
@@ -46,6 +46,15 @@ func TestMemKeyStoreBasics(t *testing.T) {
46 if err == nil {
47 t.Fatal("should not be able to overwrite key")
48 }
49 +
50 + if !ks.Has("foo") {
51 + t.Fatal("should know it has a key named foo")
52 + }
53 +
54 + if ks.Has("nonexistingkey") {
55 + t.Fatal("should know it doesn't have a key named nonexistingkey")
56 + }
57 +
58 if err := ks.Delete("bar"); err != nil {
59 t.Fatal(err)
60 }