mirror of https://github.com/certusone/wasmd.git
90 lines
2.7 KiB
Go
90 lines
2.7 KiB
Go
package v2
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/cosmos/cosmos-sdk/codec"
|
|
)
|
|
|
|
func TestAccessTypeMarshalJson(t *testing.T) {
|
|
specs := map[string]struct {
|
|
src AccessType
|
|
exp string
|
|
}{
|
|
"Unspecified": {src: AccessTypeUnspecified, exp: `"Unspecified"`},
|
|
"Nobody": {src: AccessTypeNobody, exp: `"Nobody"`},
|
|
"OnlyAddress": {src: AccessTypeOnlyAddress, exp: `"OnlyAddress"`},
|
|
"AccessTypeAnyOfAddresses": {src: AccessTypeAnyOfAddresses, exp: `"AnyOfAddresses"`},
|
|
"Everybody": {src: AccessTypeEverybody, exp: `"Everybody"`},
|
|
"unknown": {src: 999, exp: `"Unspecified"`},
|
|
}
|
|
for msg, spec := range specs {
|
|
t.Run(msg, func(t *testing.T) {
|
|
got, err := json.Marshal(spec.src)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, []byte(spec.exp), got)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestAccessTypeUnmarshalJson(t *testing.T) {
|
|
specs := map[string]struct {
|
|
src string
|
|
exp AccessType
|
|
}{
|
|
"Unspecified": {src: `"Unspecified"`, exp: AccessTypeUnspecified},
|
|
"Nobody": {src: `"Nobody"`, exp: AccessTypeNobody},
|
|
"OnlyAddress": {src: `"OnlyAddress"`, exp: AccessTypeOnlyAddress},
|
|
"AnyOfAddresses": {src: `"AnyOfAddresses"`, exp: AccessTypeAnyOfAddresses},
|
|
"Everybody": {src: `"Everybody"`, exp: AccessTypeEverybody},
|
|
"unknown": {src: `""`, exp: AccessTypeUnspecified},
|
|
}
|
|
for msg, spec := range specs {
|
|
t.Run(msg, func(t *testing.T) {
|
|
var got AccessType
|
|
err := json.Unmarshal([]byte(spec.src), &got)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, spec.exp, got)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestParamsUnmarshalJson(t *testing.T) {
|
|
specs := map[string]struct {
|
|
src string
|
|
exp Params
|
|
}{
|
|
"defaults": {
|
|
src: `{"code_upload_access": {"permission": "Everybody"},
|
|
"instantiate_default_permission": "Everybody"}`,
|
|
exp: Params{
|
|
CodeUploadAccess: AccessConfig{Permission: AccessTypeEverybody},
|
|
InstantiateDefaultPermission: AccessTypeEverybody,
|
|
},
|
|
},
|
|
"legacy type": {
|
|
src: `{"code_upload_access": {"permission": "OnlyAddress", "address": "wasm1lq3q55r9sqwqyrfmlp6xy8ufhayt96lmcttthz", "addresses": [] },
|
|
"instantiate_default_permission": "Nobody"}`,
|
|
exp: Params{
|
|
CodeUploadAccess: AccessConfig{
|
|
Permission: AccessTypeOnlyAddress, Address: "wasm1lq3q55r9sqwqyrfmlp6xy8ufhayt96lmcttthz", Addresses: nil,
|
|
},
|
|
InstantiateDefaultPermission: AccessTypeNobody,
|
|
},
|
|
},
|
|
}
|
|
for msg, spec := range specs {
|
|
t.Run(msg, func(t *testing.T) {
|
|
var val Params
|
|
marshaler := codec.NewLegacyAmino()
|
|
err := marshaler.UnmarshalJSON([]byte(spec.src), &val)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, spec.exp, val)
|
|
})
|
|
}
|
|
}
|