mirror of
https://github.com/aykhans/dodo.git
synced 2025-09-05 10:43:37 +00:00
Add 'Files' field to the 'Config'. Add 'Value' field to the 'FieldParseError'
This commit is contained in:
@@ -20,7 +20,6 @@ func TestNewConfigCLIParser(t *testing.T) {
|
||||
|
||||
require.NotNil(t, parser)
|
||||
assert.Equal(t, args, parser.args)
|
||||
assert.Nil(t, parser.configFile)
|
||||
})
|
||||
|
||||
t.Run("NewConfigCLIParser with nil args", func(t *testing.T) {
|
||||
@@ -28,7 +27,6 @@ func TestNewConfigCLIParser(t *testing.T) {
|
||||
|
||||
require.NotNil(t, parser)
|
||||
assert.Equal(t, []string{}, parser.args)
|
||||
assert.Nil(t, parser.configFile)
|
||||
})
|
||||
|
||||
t.Run("NewConfigCLIParser with empty args", func(t *testing.T) {
|
||||
@@ -37,21 +35,6 @@ func TestNewConfigCLIParser(t *testing.T) {
|
||||
|
||||
require.NotNil(t, parser)
|
||||
assert.Equal(t, args, parser.args)
|
||||
assert.Nil(t, parser.configFile)
|
||||
})
|
||||
}
|
||||
|
||||
func TestConfigCLIParser_GetConfigFile(t *testing.T) {
|
||||
t.Run("GetConfigFile returns nil when no config file is set", func(t *testing.T) {
|
||||
parser := NewConfigCLIParser([]string{"dodo"})
|
||||
assert.Nil(t, parser.GetConfigFile())
|
||||
})
|
||||
|
||||
t.Run("GetConfigFile returns config file when set", func(t *testing.T) {
|
||||
parser := NewConfigCLIParser([]string{"dodo"})
|
||||
expectedConfigFile := &types.ConfigFile{}
|
||||
parser.configFile = expectedConfigFile
|
||||
assert.Equal(t, expectedConfigFile, parser.GetConfigFile())
|
||||
})
|
||||
}
|
||||
|
||||
@@ -130,6 +113,7 @@ func TestConfigCLIParser_Parse(t *testing.T) {
|
||||
require.ErrorAs(t, err, &fieldErr)
|
||||
assert.Len(t, fieldErr.Errors, 1)
|
||||
assert.Equal(t, "url", fieldErr.Errors[0].Field)
|
||||
assert.Equal(t, "://invalid-url", fieldErr.Errors[0].Value)
|
||||
})
|
||||
|
||||
t.Run("Parse with method flag", func(t *testing.T) {
|
||||
@@ -272,6 +256,7 @@ func TestConfigCLIParser_Parse(t *testing.T) {
|
||||
require.ErrorAs(t, err, &fieldErr)
|
||||
assert.Len(t, fieldErr.Errors, 1)
|
||||
assert.Equal(t, "proxy[0]", fieldErr.Errors[0].Field)
|
||||
assert.Equal(t, "://invalid-proxy", fieldErr.Errors[0].Value)
|
||||
})
|
||||
|
||||
t.Run("Parse with mixed valid and invalid proxies", func(t *testing.T) {
|
||||
@@ -283,6 +268,7 @@ func TestConfigCLIParser_Parse(t *testing.T) {
|
||||
require.ErrorAs(t, err, &fieldErr)
|
||||
assert.Len(t, fieldErr.Errors, 1)
|
||||
assert.Equal(t, "proxy[1]", fieldErr.Errors[0].Field)
|
||||
assert.Equal(t, "://invalid", fieldErr.Errors[0].Value)
|
||||
})
|
||||
|
||||
t.Run("Parse with long flag names", func(t *testing.T) {
|
||||
@@ -318,7 +304,7 @@ func TestConfigCLIParser_Parse(t *testing.T) {
|
||||
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, config)
|
||||
assert.NotNil(t, parser.GetConfigFile())
|
||||
assert.Len(t, config.Files, 1)
|
||||
})
|
||||
|
||||
t.Run("Parse with config-file flag using long form", func(t *testing.T) {
|
||||
@@ -327,7 +313,7 @@ func TestConfigCLIParser_Parse(t *testing.T) {
|
||||
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, config)
|
||||
assert.NotNil(t, parser.GetConfigFile())
|
||||
assert.Len(t, config.Files, 1)
|
||||
})
|
||||
|
||||
t.Run("Parse with config-file flag invalid extension", func(t *testing.T) {
|
||||
@@ -338,7 +324,8 @@ func TestConfigCLIParser_Parse(t *testing.T) {
|
||||
var fieldErr types.FieldParseErrors
|
||||
require.ErrorAs(t, err, &fieldErr)
|
||||
assert.Len(t, fieldErr.Errors, 1)
|
||||
assert.Equal(t, "config-file", fieldErr.Errors[0].Field)
|
||||
assert.Equal(t, "config-file[0]", fieldErr.Errors[0].Field)
|
||||
assert.Equal(t, "/path/to/config", fieldErr.Errors[0].Value)
|
||||
assert.Contains(t, fieldErr.Errors[0].Err.Error(), "file extension not found")
|
||||
})
|
||||
|
||||
@@ -350,7 +337,8 @@ func TestConfigCLIParser_Parse(t *testing.T) {
|
||||
var fieldErr types.FieldParseErrors
|
||||
require.ErrorAs(t, err, &fieldErr)
|
||||
assert.Len(t, fieldErr.Errors, 1)
|
||||
assert.Equal(t, "config-file", fieldErr.Errors[0].Field)
|
||||
assert.Equal(t, "config-file[0]", fieldErr.Errors[0].Field)
|
||||
assert.Equal(t, "/path/to/config.json", fieldErr.Errors[0].Value)
|
||||
assert.Contains(t, fieldErr.Errors[0].Err.Error(), "file type")
|
||||
assert.Contains(t, fieldErr.Errors[0].Err.Error(), "not supported")
|
||||
})
|
||||
@@ -361,7 +349,16 @@ func TestConfigCLIParser_Parse(t *testing.T) {
|
||||
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, config)
|
||||
assert.NotNil(t, parser.GetConfigFile())
|
||||
assert.Len(t, config.Files, 1)
|
||||
})
|
||||
|
||||
t.Run("Parse with multiple config files", func(t *testing.T) {
|
||||
parser := NewConfigCLIParser([]string{"dodo", "-f", "/path/config1.yaml", "-f", "/path/config2.yml"})
|
||||
config, err := parser.Parse()
|
||||
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, config)
|
||||
assert.Len(t, config.Files, 2)
|
||||
})
|
||||
|
||||
t.Run("Parse with all flags combined", func(t *testing.T) {
|
||||
@@ -412,7 +409,7 @@ func TestConfigCLIParser_Parse(t *testing.T) {
|
||||
assert.Len(t, config.Proxies, 1)
|
||||
assert.Equal(t, "http://proxy.example.com:3128", config.Proxies[0].String())
|
||||
|
||||
assert.NotNil(t, parser.GetConfigFile())
|
||||
assert.Len(t, config.Files, 1)
|
||||
})
|
||||
|
||||
t.Run("Parse with multiple field parse errors", func(t *testing.T) {
|
||||
@@ -437,6 +434,15 @@ func TestConfigCLIParser_Parse(t *testing.T) {
|
||||
assert.True(t, fields["url"])
|
||||
assert.True(t, fields["proxy[0]"])
|
||||
assert.True(t, fields["proxy[1]"])
|
||||
|
||||
// Check error values
|
||||
values := make(map[string]string)
|
||||
for _, parseErr := range fieldErr.Errors {
|
||||
values[parseErr.Field] = parseErr.Value
|
||||
}
|
||||
assert.Equal(t, "://invalid-url", values["url"])
|
||||
assert.Equal(t, "://invalid-proxy1", values["proxy[0]"])
|
||||
assert.Equal(t, "://invalid-proxy2", values["proxy[1]"])
|
||||
})
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user