cosmos-sdk/_attic/roles/handler_test.go

54 lines
1.5 KiB
Go
Raw Normal View History

2017-07-12 07:22:17 -07:00
package roles_test
import (
"testing"
"github.com/stretchr/testify/assert"
2017-07-19 01:51:36 -07:00
sdk "github.com/cosmos/cosmos-sdk"
"github.com/cosmos/cosmos-sdk/modules/roles"
"github.com/cosmos/cosmos-sdk/stack"
"github.com/cosmos/cosmos-sdk/state"
2017-07-12 07:22:17 -07:00
)
func TestCreateRole(t *testing.T) {
assert := assert.New(t)
a := sdk.Actor{App: "foo", Address: []byte("bar")}
b := sdk.Actor{ChainID: "eth", App: "foo", Address: []byte("bar")}
c := sdk.Actor{App: "foo", Address: []byte("baz")}
d := sdk.Actor{App: "si-ly", Address: []byte("bar")}
2017-07-12 07:22:17 -07:00
cases := []struct {
valid bool
role string
min uint32
sigs []sdk.Actor
2017-07-12 07:22:17 -07:00
}{
{true, "awesome", 1, []sdk.Actor{a}},
{true, "cool", 2, []sdk.Actor{b, c, d}},
{false, "oops", 3, []sdk.Actor{a, d}}, // too many
{false, "ugh", 0, []sdk.Actor{a, d}}, // too few
{false, "phew", 1, []sdk.Actor{}}, // none
{false, "cool", 1, []sdk.Actor{c, d}}, // duplicate of existing one
2017-07-12 07:22:17 -07:00
}
h := roles.NewHandler()
ctx := stack.MockContext("role-chain", 123)
store := state.NewMemKVStore()
for i, tc := range cases {
tx := roles.NewCreateRoleTx([]byte(tc.role), tc.min, tc.sigs)
cres, err := h.CheckTx(ctx, store, tx)
2017-07-12 07:22:17 -07:00
_, err2 := h.DeliverTx(ctx, store, tx)
if tc.valid {
assert.Nil(err, "%d/%s: %+v", i, tc.role, err)
assert.Nil(err2, "%d/%s: %+v", i, tc.role, err2)
assert.Equal(roles.CostCreate, cres.GasAllocated)
assert.Equal(uint64(0), cres.GasPayment)
2017-07-12 07:22:17 -07:00
} else {
assert.NotNil(err, "%d/%s", i, tc.role)
assert.NotNil(err2, "%d/%s", i, tc.role)
}
}
}