diff --git a/config/protocol.privnet.docker.one.yml b/config/protocol.privnet.docker.one.yml index f4e35a7db..e0d0f9a35 100644 --- a/config/protocol.privnet.docker.one.yml +++ b/config/protocol.privnet.docker.one.yml @@ -80,7 +80,8 @@ ApplicationConfiguration: - ":20001" Pprof: Enabled: false - Port: 20011 + Addresses: + - ":20011" Consensus: Enabled: true UnlockWallet: diff --git a/pkg/config/config.go b/pkg/config/config.go index 4e8fe06bd..d30a30e61 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -1,6 +1,7 @@ package config import ( + "bytes" "fmt" "os" "time" @@ -82,8 +83,9 @@ func LoadFile(configPath string) (Config, error) { }, }, } - - err = yaml.Unmarshal(configData, &config) + decoder := yaml.NewDecoder(bytes.NewReader(configData)) + decoder.KnownFields(true) + err = decoder.Decode(&config) if err != nil { return Config{}, fmt.Errorf("failed to unmarshal config YAML: %w", err) } diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go index 16a59b317..7fca30067 100644 --- a/pkg/config/config_test.go +++ b/pkg/config/config_test.go @@ -1,8 +1,11 @@ package config import ( + "os" + "path/filepath" "testing" + "github.com/nspcc-dev/neo-go/pkg/config/netmode" "github.com/stretchr/testify/require" ) @@ -12,3 +15,20 @@ func TestUnexpectedNativeUpdateHistoryContract(t *testing.T) { _, err := LoadFile(testConfigPath) require.Error(t, err) } + +func TestUnknownConfigFields(t *testing.T) { + tmp := t.TempDir() + cfg := filepath.Join(tmp, "protocol.testnet.yml") + require.NoError(t, os.WriteFile(cfg, []byte(`UnknownConfigurationField: 123`), os.ModePerm)) + + t.Run("LoadFile", func(t *testing.T) { + _, err := LoadFile(cfg) + require.Error(t, err) + require.Contains(t, err.Error(), "field UnknownConfigurationField not found in type config.Config") + }) + t.Run("Load", func(t *testing.T) { + _, err := Load(tmp, netmode.TestNet) + require.Error(t, err) + require.Contains(t, err.Error(), "field UnknownConfigurationField not found in type config.Config") + }) +} diff --git a/pkg/core/blockchain_neotest_test.go b/pkg/core/blockchain_neotest_test.go index 1598b7e86..fe107ec5c 100644 --- a/pkg/core/blockchain_neotest_test.go +++ b/pkg/core/blockchain_neotest_test.go @@ -1149,7 +1149,9 @@ func TestConfigNativeUpdateHistory(t *testing.T) { "unit_testnet.single", } for _, tc := range testCases { - check(t, tc) + t.Run(fmt.Sprintf("%s", tc), func(t *testing.T) { + check(t, tc) + }) } }