mirror of https://github.com/poanetwork/gecko.git
109 lines
2.8 KiB
Go
109 lines
2.8 KiB
Go
// (c) 2019-2020, Ava Labs, Inc. All rights reserved.
|
|
// See the file LICENSE for licensing terms.
|
|
|
|
package platformvm
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/ava-labs/gecko/database/memdb"
|
|
"github.com/ava-labs/gecko/ids"
|
|
"github.com/ava-labs/gecko/utils/crypto"
|
|
)
|
|
|
|
func TestUserNilDB(t *testing.T) {
|
|
u := user{}
|
|
|
|
_, err := u.getAccountIDs()
|
|
assert.Error(t, err, "nil db should have caused an error")
|
|
|
|
_, err = u.controlsAccount(ids.ShortEmpty)
|
|
assert.Error(t, err, "nil db should have caused an error")
|
|
|
|
_, err = u.getKey(ids.ShortEmpty)
|
|
assert.Error(t, err, "nil db should have caused an error")
|
|
|
|
factory := crypto.FactorySECP256K1R{}
|
|
sk, err := factory.NewPrivateKey()
|
|
assert.NoError(t, err)
|
|
|
|
err = u.putAccount(sk.(*crypto.PrivateKeySECP256K1R))
|
|
assert.Error(t, err, "nil db should have caused an error")
|
|
}
|
|
|
|
func TestUserClosedDB(t *testing.T) {
|
|
db := memdb.New()
|
|
err := db.Close()
|
|
assert.NoError(t, err)
|
|
|
|
u := user{db: db}
|
|
|
|
_, err = u.getAccountIDs()
|
|
assert.Error(t, err, "closed db should have caused an error")
|
|
|
|
_, err = u.controlsAccount(ids.ShortEmpty)
|
|
assert.Error(t, err, "closed db should have caused an error")
|
|
|
|
_, err = u.getKey(ids.ShortEmpty)
|
|
assert.Error(t, err, "closed db should have caused an error")
|
|
|
|
factory := crypto.FactorySECP256K1R{}
|
|
sk, err := factory.NewPrivateKey()
|
|
assert.NoError(t, err)
|
|
|
|
err = u.putAccount(sk.(*crypto.PrivateKeySECP256K1R))
|
|
assert.Error(t, err, "closed db should have caused an error")
|
|
}
|
|
|
|
func TestUserNilSK(t *testing.T) {
|
|
u := user{db: memdb.New()}
|
|
|
|
err := u.putAccount(nil)
|
|
assert.Error(t, err, "nil key should have caused an error")
|
|
}
|
|
|
|
func TestUserNilAccount(t *testing.T) {
|
|
u := user{db: memdb.New()}
|
|
|
|
_, err := u.controlsAccount(ids.ShortID{})
|
|
assert.Error(t, err, "nil accountID should have caused an error")
|
|
|
|
_, err = u.getKey(ids.ShortID{})
|
|
assert.Error(t, err, "nil accountID should have caused an error")
|
|
}
|
|
|
|
func TestUser(t *testing.T) {
|
|
u := user{db: memdb.New()}
|
|
|
|
accountIDs, err := u.getAccountIDs()
|
|
assert.NoError(t, err)
|
|
assert.Empty(t, accountIDs, "new user shouldn't have accounts")
|
|
|
|
factory := crypto.FactorySECP256K1R{}
|
|
sk, err := factory.NewPrivateKey()
|
|
assert.NoError(t, err)
|
|
|
|
err = u.putAccount(sk.(*crypto.PrivateKeySECP256K1R))
|
|
assert.NoError(t, err)
|
|
|
|
addr := sk.PublicKey().Address()
|
|
|
|
ok, err := u.controlsAccount(addr)
|
|
assert.NoError(t, err)
|
|
assert.True(t, ok, "added account should have been marked as controlled")
|
|
|
|
savedSk, err := u.getKey(addr)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, sk.Bytes(), savedSk.Bytes(), "wrong key returned")
|
|
|
|
accountIDs, err = u.getAccountIDs()
|
|
assert.NoError(t, err)
|
|
assert.Len(t, accountIDs, 1, "account should have been added")
|
|
|
|
savedAddr := accountIDs[0]
|
|
equals := addr.Equals(savedAddr)
|
|
assert.True(t, equals, "saved address should match provided address")
|
|
}
|