add unit test for msg_server_register_trust_anchor

Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com>
This commit is contained in:
Lorenz Herzberger 2023-09-05 19:51:06 +02:00
parent 688f13e171
commit b0d4ffad7a
No known key found for this signature in database
GPG Key ID: FA5EE906EB55316A
3 changed files with 54 additions and 3 deletions

View File

@ -114,3 +114,9 @@ func ExtendedKeyPair(cfg chaincfg.Params) (string, string) {
}
return xprivKey.String(), xpubKey.String()
}
func TrustAnchor() machinetypes.TrustAnchor {
return machinetypes.TrustAnchor{
Pubkey: PubKey,
}
}

View File

@ -2,16 +2,28 @@ package keeper
import (
"context"
"errors"
config "planetmint-go/config"
"planetmint-go/x/machine/types"
sdk "github.com/cosmos/cosmos-sdk/types"
"planetmint-go/x/machine/types"
)
func (k msgServer) RegisterTrustAnchor(goCtx context.Context, msg *types.MsgRegisterTrustAnchor) (*types.MsgRegisterTrustAnchorResponse, error) {
ctx := sdk.UnwrapSDKContext(goCtx)
// TODO: Handling the message
_ = ctx
isValidTrustAnchorPubkey := validateExtendedPublicKey(msg.TrustAnchor.Pubkey, config.LiquidNetParams)
if !isValidTrustAnchorPubkey {
return nil, errors.New("invalid trust anchor pubkey")
}
_, _, found := k.GetTrustAnchor(ctx, msg.TrustAnchor.Pubkey)
if found {
return nil, errors.New("trust anchor is already registered")
}
k.StoreTrustAnchor(ctx, *msg.TrustAnchor, false)
return &types.MsgRegisterTrustAnchorResponse{}, nil
}

View File

@ -46,3 +46,36 @@ func TestMsgServerAttestMachineInvalidLiquidKey(t *testing.T) {
_, err := msgServer.AttestMachine(ctx, msg)
assert.EqualError(t, err, "invalid liquid key")
}
func TestMsgServerRegisterTrustAnchor(t *testing.T) {
_, pk := sample.KeyPair()
ta := sample.TrustAnchor()
msg := types.NewMsgRegisterTrustAnchor(pk, &ta)
msgServer, ctx := setupMsgServer(t)
res, err := msgServer.RegisterTrustAnchor(ctx, msg)
if assert.NoError(t, err) {
assert.Equal(t, &types.MsgRegisterTrustAnchorResponse{}, res)
}
}
func TestMsgServerRegisterTrustAnchorTwice(t *testing.T) {
_, pk := sample.KeyPair()
ta := sample.TrustAnchor()
msg := types.NewMsgRegisterTrustAnchor(pk, &ta)
msgServer, ctx := setupMsgServer(t)
res, err := msgServer.RegisterTrustAnchor(ctx, msg)
if assert.NoError(t, err) {
assert.Equal(t, &types.MsgRegisterTrustAnchorResponse{}, res)
}
_, err = msgServer.RegisterTrustAnchor(ctx, msg)
assert.EqualError(t, err, "trust anchor is already registered")
}
func TestMsgServerRegisterTrustAnchorInvalidPubkey(t *testing.T) {
_, pk := sample.KeyPair()
ta := sample.TrustAnchor()
msg := types.NewMsgRegisterTrustAnchor(pk, &ta)
msgServer, ctx := setupMsgServer(t)
_, err := msgServer.RegisterTrustAnchor(ctx, msg)
assert.EqualError(t, err, "invalid trust anchor pubkey")
}