|
|
|
package bls
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/harmony-one/bls/ffi/go/bls"
|
|
|
|
"github.com/harmony-one/harmony/internal/utils"
|
|
|
|
)
|
|
|
|
|
|
|
|
// Test the basic functionality of a BLS multi-sig mask.
|
|
|
|
func TestNewMask(test *testing.T) {
|
|
|
|
_, pubKey1 := utils.GenKey("127.0.0.1", "5555")
|
|
|
|
_, pubKey2 := utils.GenKey("127.0.0.1", "6666")
|
|
|
|
_, pubKey3 := utils.GenKey("127.0.0.1", "7777")
|
|
|
|
|
|
|
|
mask, err := NewMask([]*bls.PublicKey{pubKey1, pubKey2, pubKey3}, pubKey1)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
test.Errorf("Failed to create a new Mask: %s", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if mask.Len() != 1 {
|
|
|
|
test.Errorf("Mask created with wrong size: %d", mask.Len())
|
|
|
|
}
|
|
|
|
|
|
|
|
enabled, err := mask.KeyEnabled(pubKey1)
|
|
|
|
if !enabled || err != nil {
|
|
|
|
test.Errorf("My key pubKey1 should have been enabled: %s", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if mask.CountEnabled() != 1 {
|
|
|
|
test.Error("Only one key should have been enabled")
|
|
|
|
}
|
|
|
|
|
|
|
|
if mask.CountTotal() != 3 {
|
|
|
|
test.Error("Should have a total of 3 keys")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNewMaskWithAbsentPublicKey(test *testing.T) {
|
|
|
|
_, pubKey1 := utils.GenKey("127.0.0.1", "5555")
|
|
|
|
_, pubKey2 := utils.GenKey("127.0.0.1", "6666")
|
|
|
|
_, pubKey3 := utils.GenKey("127.0.0.1", "7777")
|
|
|
|
_, pubKey4 := utils.GenKey("127.0.0.1", "8190")
|
|
|
|
|
|
|
|
mask, err := NewMask([]*bls.PublicKey{pubKey1, pubKey2, pubKey3}, pubKey4)
|
|
|
|
|
|
|
|
if err == nil {
|
|
|
|
test.Errorf("Failed to create a new Mask: %s", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if mask != nil {
|
|
|
|
test.Errorf("Expected failure to create a new mask")
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|