Skip to content

Commit e222bbf

Browse files
authored
Merge pull request #2246 from CosmWasm/mergify/bp/releases/v0.6x/pr-2168
feat(data): Make sure Aliases in DenomUnit is not nil (backport #2168)
2 parents 3fa0a6b + ef5b16f commit e222bbf

File tree

2 files changed

+61
-0
lines changed

2 files changed

+61
-0
lines changed

x/wasm/keeper/query_plugins.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -827,6 +827,10 @@ func ConvertSdkDenomUnitsToWasmDenomUnits(denomUnits []*banktypes.DenomUnit) []w
827827
Exponent: u.Exponent,
828828
Aliases: u.Aliases,
829829
}
830+
// Returning nil may break cosmwasm-std
831+
if u.Aliases == nil {
832+
converted[i].Aliases = []string{}
833+
}
830834
}
831835
return converted
832836
}

x/wasm/keeper/query_plugins_test.go

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@ func TestBankQuerierMetadata(t *testing.T) {
240240
{
241241
Denom: "utest",
242242
Exponent: 0,
243+
Aliases: []string{},
243244
},
244245
},
245246
}
@@ -269,6 +270,60 @@ func TestBankQuerierMetadata(t *testing.T) {
269270
{
270271
Denom: "utest",
271272
Exponent: 0,
273+
Aliases: []string{},
274+
},
275+
},
276+
}
277+
assert.Equal(t, exp, got.Metadata)
278+
279+
_, gotErr2 := q(ctx, &wasmvmtypes.BankQuery{
280+
DenomMetadata: &wasmvmtypes.DenomMetadataQuery{
281+
Denom: "uatom",
282+
},
283+
})
284+
require.Error(t, gotErr2)
285+
assert.Contains(t, gotErr2.Error(), "uatom: not found")
286+
}
287+
288+
func TestBankQuerierMetadataWithNilAliases(t *testing.T) {
289+
metadata := banktypes.Metadata{
290+
Name: "Test Token",
291+
Base: "utest",
292+
DenomUnits: []*banktypes.DenomUnit{
293+
{
294+
Denom: "utest",
295+
Exponent: 0,
296+
Aliases: nil,
297+
},
298+
},
299+
}
300+
301+
mock := bankKeeperMock{GetDenomMetadataFn: func(ctx context.Context, denom string) (banktypes.Metadata, bool) {
302+
if denom == "utest" {
303+
return metadata, true
304+
} else {
305+
return banktypes.Metadata{}, false
306+
}
307+
}}
308+
309+
ctx := sdk.Context{}
310+
q := keeper.BankQuerier(mock)
311+
gotBz, gotErr := q(ctx, &wasmvmtypes.BankQuery{
312+
DenomMetadata: &wasmvmtypes.DenomMetadataQuery{
313+
Denom: "utest",
314+
},
315+
})
316+
require.NoError(t, gotErr)
317+
var got wasmvmtypes.DenomMetadataResponse
318+
require.NoError(t, json.Unmarshal(gotBz, &got))
319+
exp := wasmvmtypes.DenomMetadata{
320+
Name: "Test Token",
321+
Base: "utest",
322+
DenomUnits: []wasmvmtypes.DenomUnit{
323+
{
324+
Denom: "utest",
325+
Exponent: 0,
326+
Aliases: []string{},
272327
},
273328
},
274329
}
@@ -292,6 +347,7 @@ func TestBankQuerierAllMetadata(t *testing.T) {
292347
{
293348
Denom: "utest",
294349
Exponent: 0,
350+
Aliases: []string{},
295351
},
296352
},
297353
},
@@ -321,6 +377,7 @@ func TestBankQuerierAllMetadata(t *testing.T) {
321377
{
322378
Denom: "utest",
323379
Exponent: 0,
380+
Aliases: []string{},
324381
},
325382
},
326383
},

0 commit comments

Comments
 (0)