mirror of https://github.com/hashicorp/consul
Ryan Uber
10 years ago
6 changed files with 129 additions and 21 deletions
@ -0,0 +1,43 @@
|
||||
package testutil |
||||
|
||||
import ( |
||||
"encoding/base64" |
||||
"encoding/json" |
||||
"fmt" |
||||
"os" |
||||
"path/filepath" |
||||
) |
||||
|
||||
// InitKeyring will create a keyring file at a given path.
|
||||
func InitKeyring(path, key string) error { |
||||
if _, err := base64.StdEncoding.DecodeString(key); err != nil { |
||||
return fmt.Errorf("Invalid key: %s", err) |
||||
} |
||||
|
||||
keys := []string{key} |
||||
keyringBytes, err := json.Marshal(keys) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
|
||||
if err := os.MkdirAll(filepath.Dir(path), 0700); err != nil { |
||||
return err |
||||
} |
||||
|
||||
if _, err := os.Stat(path); err == nil { |
||||
return fmt.Errorf("File already exists: %s", path) |
||||
} |
||||
|
||||
fh, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0600) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
defer fh.Close() |
||||
|
||||
if _, err := fh.Write(keyringBytes); err != nil { |
||||
os.Remove(path) |
||||
return err |
||||
} |
||||
|
||||
return nil |
||||
} |
@ -0,0 +1,42 @@
|
||||
package testutil |
||||
|
||||
import ( |
||||
"io/ioutil" |
||||
"os" |
||||
"path/filepath" |
||||
"testing" |
||||
) |
||||
|
||||
func TestAgent_InitKeyring(t *testing.T) { |
||||
key := "tbLJg26ZJyJ9pK3qhc9jig==" |
||||
|
||||
dir, err := ioutil.TempDir("", "agent") |
||||
if err != nil { |
||||
t.Fatalf("err: %s", err) |
||||
} |
||||
defer os.RemoveAll(dir) |
||||
keyFile := filepath.Join(dir, "test/keyring") |
||||
|
||||
if err := InitKeyring(keyFile, key); err != nil { |
||||
t.Fatalf("err: %s", err) |
||||
} |
||||
|
||||
fi, err := os.Stat(filepath.Dir(keyFile)) |
||||
if err != nil { |
||||
t.Fatalf("err: %s", err) |
||||
} |
||||
|
||||
if !fi.IsDir() { |
||||
t.Fatalf("bad: %#v", fi) |
||||
} |
||||
|
||||
data, err := ioutil.ReadFile(keyFile) |
||||
if err != nil { |
||||
t.Fatalf("err: %s", err) |
||||
} |
||||
|
||||
expected := `["tbLJg26ZJyJ9pK3qhc9jig=="]` |
||||
if string(data) != expected { |
||||
t.Fatalf("bad: %#v", string(data)) |
||||
} |
||||
} |
Loading…
Reference in new issue