mirror of
https://github.com/yusing/godoxy.git
synced 2026-03-12 05:11:35 +01:00
Replace YAML-specific functions with generic ones accepting unmarshaler/marshaler function parameters. This enables future support for JSON and other formats while maintaining current YAML behavior. - UnmarshalValidateYAML -> UnmarshalValidate(unmarshalFunc) - UnmarshalValidateYAMLXSync -> UnmarshalValidateXSync(unmarshalFunc) - SaveJSON -> SaveFile(marshalFunc) - LoadJSONIfExist -> LoadFileIfExist(unmarshalFunc) - Add UnmarshalValidateReader for reader-based decoding Testing: all 12 staged test files updated to use new API
57 lines
1.1 KiB
Go
57 lines
1.1 KiB
Go
package proxmox
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/goccy/go-yaml"
|
|
"github.com/stretchr/testify/require"
|
|
"github.com/yusing/godoxy/internal/serialization"
|
|
)
|
|
|
|
func TestValidateCommandArgs(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
yamlCfg string
|
|
wantErr bool
|
|
}{
|
|
{
|
|
name: "valid_services",
|
|
yamlCfg: `services: ["foo", "bar"]`,
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "invalid_services",
|
|
yamlCfg: `services: ["foo", "bar & baz"]`,
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "invalid_services_with_$(",
|
|
yamlCfg: `services: ["foo", "bar & $(echo 'hello')"]`,
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "valid_files",
|
|
yamlCfg: `files: ["foo", "bar"]`,
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "invalid_files",
|
|
yamlCfg: `files: ["foo", "bar & baz"]`,
|
|
wantErr: true,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
var cfg NodeConfig
|
|
err := serialization.UnmarshalValidate([]byte(tt.yamlCfg), &cfg, yaml.Unmarshal)
|
|
if tt.wantErr {
|
|
require.Error(t, err)
|
|
require.ErrorContains(t, err, "input contains invalid characters")
|
|
} else {
|
|
require.NoError(t, err)
|
|
}
|
|
})
|
|
}
|
|
}
|