2019-06-28 13:11:27 -07:00
|
|
|
package types
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
|
|
"github.com/tendermint/tendermint/crypto"
|
|
|
|
"gopkg.in/yaml.v2"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestModuleAccountMarshalYAML(t *testing.T) {
|
|
|
|
name := "test"
|
2019-07-16 07:02:36 -07:00
|
|
|
moduleAcc := NewEmptyModuleAccount(name, Minter, Burner, Staking)
|
2019-06-28 13:11:27 -07:00
|
|
|
moduleAddress := sdk.AccAddress(crypto.AddressHash([]byte(name)))
|
|
|
|
bs, err := yaml.Marshal(moduleAcc)
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
want := fmt.Sprintf(`|
|
|
|
|
address: %s
|
|
|
|
coins: []
|
|
|
|
pubkey: ""
|
|
|
|
accountnumber: 0
|
|
|
|
sequence: 0
|
|
|
|
name: %s
|
2019-07-06 12:42:06 -07:00
|
|
|
permissions:
|
|
|
|
- %s
|
|
|
|
- %s
|
|
|
|
- %s
|
2019-07-16 07:02:36 -07:00
|
|
|
`, moduleAddress, name, Minter, Burner, Staking)
|
2019-06-28 13:11:27 -07:00
|
|
|
|
|
|
|
require.Equal(t, want, string(bs))
|
|
|
|
require.Equal(t, want, moduleAcc.String())
|
|
|
|
}
|
2019-07-06 12:42:06 -07:00
|
|
|
|
|
|
|
func TestRemovePermissions(t *testing.T) {
|
|
|
|
name := "test"
|
|
|
|
macc := NewEmptyModuleAccount(name)
|
|
|
|
require.Empty(t, macc.GetPermissions())
|
|
|
|
|
2019-07-16 07:02:36 -07:00
|
|
|
macc.AddPermissions(Minter, Burner, Staking)
|
|
|
|
require.Equal(t, []string{Minter, Burner, Staking}, macc.GetPermissions(), "did not add permissions")
|
2019-07-06 12:42:06 -07:00
|
|
|
|
|
|
|
err := macc.RemovePermission("random")
|
|
|
|
require.Error(t, err, "did not error on removing nonexistent permission")
|
|
|
|
|
|
|
|
err = macc.RemovePermission(Burner)
|
|
|
|
require.NoError(t, err, "failed to remove permission")
|
2019-07-16 07:02:36 -07:00
|
|
|
require.Equal(t, []string{Minter, Staking}, macc.GetPermissions(), "does not have correct permissions")
|
2019-07-06 12:42:06 -07:00
|
|
|
|
2019-07-16 07:02:36 -07:00
|
|
|
err = macc.RemovePermission(Staking)
|
2019-07-06 12:42:06 -07:00
|
|
|
require.NoError(t, err, "failed to remove permission")
|
|
|
|
require.Equal(t, []string{Minter}, macc.GetPermissions(), "does not have correct permissions")
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestHasPermissions(t *testing.T) {
|
|
|
|
name := "test"
|
2019-07-16 07:02:36 -07:00
|
|
|
macc := NewEmptyModuleAccount(name, Staking, Minter, Burner)
|
2019-07-06 12:42:06 -07:00
|
|
|
cases := []struct {
|
|
|
|
permission string
|
|
|
|
expectHas bool
|
|
|
|
}{
|
2019-07-16 07:02:36 -07:00
|
|
|
{Staking, true},
|
2019-07-06 12:42:06 -07:00
|
|
|
{Minter, true},
|
|
|
|
{Burner, true},
|
|
|
|
{"other", false},
|
|
|
|
}
|
|
|
|
|
|
|
|
for i, tc := range cases {
|
|
|
|
hasPerm := macc.HasPermission(tc.permission)
|
|
|
|
if tc.expectHas {
|
|
|
|
require.True(t, hasPerm, "test case #%d", i)
|
|
|
|
} else {
|
|
|
|
require.False(t, hasPerm, "test case #%d", i)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|