Signed-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan)
| ... | ... |
@@ -8,6 +8,7 @@ import ( |
| 8 | 8 |
"io/ioutil" |
| 9 | 9 |
"os" |
| 10 | 10 |
"os/exec" |
| 11 |
+ "path/filepath" |
|
| 11 | 12 |
"strings" |
| 12 | 13 |
"testing" |
| 13 | 14 |
|
| ... | ... |
@@ -374,3 +375,31 @@ func TestDaemonKeyGeneration(t *testing.T) {
|
| 374 | 374 |
|
| 375 | 375 |
logDone("daemon - key generation")
|
| 376 | 376 |
} |
| 377 |
+ |
|
| 378 |
+func TestDaemonKeyMigration(t *testing.T) {
|
|
| 379 |
+ // TODO: skip or update for Windows daemon |
|
| 380 |
+ os.Remove("/etc/docker/key.json")
|
|
| 381 |
+ k1, err := libtrust.GenerateECP256PrivateKey() |
|
| 382 |
+ if err != nil {
|
|
| 383 |
+ t.Fatalf("Error generating private key: %s", err)
|
|
| 384 |
+ } |
|
| 385 |
+ if err := libtrust.SaveKey(filepath.Join(os.Getenv("HOME"), ".docker", "key.json"), k1); err != nil {
|
|
| 386 |
+ t.Fatalf("Error saving private key: %s", err)
|
|
| 387 |
+ } |
|
| 388 |
+ |
|
| 389 |
+ d := NewDaemon(t) |
|
| 390 |
+ if err := d.Start(); err != nil {
|
|
| 391 |
+ t.Fatalf("Could not start daemon: %v", err)
|
|
| 392 |
+ } |
|
| 393 |
+ d.Stop() |
|
| 394 |
+ |
|
| 395 |
+ k2, err := libtrust.LoadKeyFile("/etc/docker/key.json")
|
|
| 396 |
+ if err != nil {
|
|
| 397 |
+ t.Fatalf("Error opening key file")
|
|
| 398 |
+ } |
|
| 399 |
+ if k1.KeyID() != k2.KeyID() {
|
|
| 400 |
+ t.Fatalf("Key not migrated")
|
|
| 401 |
+ } |
|
| 402 |
+ |
|
| 403 |
+ logDone("daemon - key migration")
|
|
| 404 |
+} |