Skip to content

Commit 8001e3c

Browse files
author
Alessio Treglia
authored
bank: don't ignore errors returned by Balance.GetAddress() (#8531)
Closes: #8530
1 parent c5c049a commit 8001e3c

File tree

2 files changed

+37
-10
lines changed

2 files changed

+37
-10
lines changed

x/bank/types/balance.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,11 @@ var _ exported.GenesisBalance = (*Balance)(nil)
1515

1616
// GetAddress returns the account address of the Balance object.
1717
func (b Balance) GetAddress() sdk.AccAddress {
18-
addr, _ := sdk.AccAddressFromBech32(b.Address)
18+
addr, err := sdk.AccAddressFromBech32(b.Address)
19+
if err != nil {
20+
panic(fmt.Errorf("couldn't convert %q to account address: %v", b.Address, err))
21+
}
22+
1923
return addr
2024
}
2125

x/bank/types/balance_test.go

+32-9
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,39 @@
1-
package types
1+
package types_test
22

33
import (
44
"testing"
55

66
"github.com/stretchr/testify/require"
77

88
sdk "github.com/cosmos/cosmos-sdk/types"
9+
bank "github.com/cosmos/cosmos-sdk/x/bank/types"
910
)
1011

1112
func TestBalanceValidate(t *testing.T) {
12-
1313
testCases := []struct {
1414
name string
15-
balance Balance
15+
balance bank.Balance
1616
expErr bool
1717
}{
1818
{
1919
"valid balance",
20-
Balance{
20+
bank.Balance{
2121
Address: "cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t",
2222
Coins: sdk.Coins{sdk.NewInt64Coin("uatom", 1)},
2323
},
2424
false,
2525
},
26-
{"empty balance", Balance{}, true},
26+
{"empty balance", bank.Balance{}, true},
2727
{
2828
"nil balance coins",
29-
Balance{
29+
bank.Balance{
3030
Address: "cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t",
3131
},
3232
true,
3333
},
3434
{
3535
"dup coins",
36-
Balance{
36+
bank.Balance{
3737
Address: "cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t",
3838
Coins: sdk.Coins{
3939
sdk.NewInt64Coin("uatom", 1),
@@ -44,7 +44,7 @@ func TestBalanceValidate(t *testing.T) {
4444
},
4545
{
4646
"invalid coin denom",
47-
Balance{
47+
bank.Balance{
4848
Address: "cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t",
4949
Coins: sdk.Coins{
5050
sdk.Coin{Denom: "", Amount: sdk.OneInt()},
@@ -54,7 +54,7 @@ func TestBalanceValidate(t *testing.T) {
5454
},
5555
{
5656
"negative coin",
57-
Balance{
57+
bank.Balance{
5858
Address: "cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t",
5959
Coins: sdk.Coins{
6060
sdk.Coin{Denom: "uatom", Amount: sdk.NewInt(-1)},
@@ -78,3 +78,26 @@ func TestBalanceValidate(t *testing.T) {
7878
})
7979
}
8080
}
81+
82+
func TestBalance_GetAddress(t *testing.T) {
83+
tests := []struct {
84+
name string
85+
Address string
86+
wantPanic bool
87+
}{
88+
{"empty address", "", true},
89+
{"malformed address", "invalid", true},
90+
{"valid address", "cosmos1vy0ga0klndqy92ceqehfkvgmn4t94eteq4hmqv", false},
91+
}
92+
for _, tt := range tests {
93+
tt := tt
94+
t.Run(tt.name, func(t *testing.T) {
95+
b := bank.Balance{Address: tt.Address}
96+
if tt.wantPanic {
97+
require.Panics(t, func() { b.GetAddress() })
98+
} else {
99+
require.False(t, b.GetAddress().Empty())
100+
}
101+
})
102+
}
103+
}

0 commit comments

Comments
 (0)