|
|
|
|
@ -58,6 +58,50 @@ func TestAuthorityBuilderAddKey(t *testing.T) { |
|
|
|
|
t.Errorf("could not read new key: %v", err) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
func TestAuthorityBuilderMaxKey(t *testing.T) { |
|
|
|
|
pub, priv := testingKey25519(t, 1) |
|
|
|
|
key := Key{Kind: Key25519, Public: pub, Votes: 2} |
|
|
|
|
|
|
|
|
|
storage := &Mem{} |
|
|
|
|
a, _, err := Create(storage, State{ |
|
|
|
|
Keys: []Key{key}, |
|
|
|
|
DisablementSecrets: [][]byte{DisablementKDF([]byte{1, 2, 3})}, |
|
|
|
|
}, signer25519(priv)) |
|
|
|
|
if err != nil { |
|
|
|
|
t.Fatalf("Create() failed: %v", err) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for i := 0; i <= maxKeys; i++ { |
|
|
|
|
pub2, _ := testingKey25519(t, int64(2+i)) |
|
|
|
|
key2 := Key{Kind: Key25519, Public: pub2, Votes: 1} |
|
|
|
|
|
|
|
|
|
b := a.NewUpdater(signer25519(priv)) |
|
|
|
|
err := b.AddKey(key2) |
|
|
|
|
if i < maxKeys-1 { |
|
|
|
|
if err != nil { |
|
|
|
|
t.Fatalf("AddKey(%v) failed: %v", key2, err) |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
// Too many keys.
|
|
|
|
|
if err == nil { |
|
|
|
|
t.Fatalf("AddKey(%v) succeeded unexpectedly", key2) |
|
|
|
|
} |
|
|
|
|
continue |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
updates, err := b.Finalize(storage) |
|
|
|
|
if err != nil { |
|
|
|
|
t.Fatalf("Finalize() failed: %v", err) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if err := a.Inform(storage, updates); err != nil { |
|
|
|
|
t.Fatalf("could not apply generated updates: %v", err) |
|
|
|
|
} |
|
|
|
|
if _, err := a.state.GetKey(key2.MustID()); err != nil { |
|
|
|
|
t.Errorf("could not read new key: %v", err) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func TestAuthorityBuilderRemoveKey(t *testing.T) { |
|
|
|
|
pub, priv := testingKey25519(t, 1) |
|
|
|
|
|