Templates: error on missing required values (#25932)
This commit is contained in:
parent
d21c3f14a6
commit
3adf8b4520
3 changed files with 42 additions and 0 deletions
|
|
@ -50,5 +50,6 @@ vehicles:
|
||||||
type: template
|
type: template
|
||||||
template: tesla # not optimal, since real communication with tesla server is happening
|
template: tesla # not optimal, since real communication with tesla server is happening
|
||||||
title: Broken Tesla
|
title: Broken Tesla
|
||||||
|
clientId: test_client_id
|
||||||
accessToken: A
|
accessToken: A
|
||||||
refreshToken: B
|
refreshToken: B
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import (
|
||||||
"slices"
|
"slices"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
"testing"
|
||||||
"text/template"
|
"text/template"
|
||||||
|
|
||||||
"github.com/Masterminds/sprig/v3"
|
"github.com/Masterminds/sprig/v3"
|
||||||
|
|
@ -354,6 +355,13 @@ func (t *Template) RenderResult(renderMode int, other map[string]any) ([]byte, m
|
||||||
if val != nil {
|
if val != nil {
|
||||||
s = p.yamlQuote(fmt.Sprintf("%v", val))
|
s = p.yamlQuote(fmt.Sprintf("%v", val))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// validate required fields from yaml
|
||||||
|
if s == "" && p.IsRequired() && (renderMode == RenderModeUnitTest ||
|
||||||
|
renderMode == RenderModeInstance && !testing.Testing()) {
|
||||||
|
return nil, nil, fmt.Errorf("missing required `%s`", p.Name)
|
||||||
|
}
|
||||||
|
|
||||||
res[out] = s
|
res[out] = s
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,3 +32,36 @@ func TestPresets(t *testing.T) {
|
||||||
{Name: "last"},
|
{Name: "last"},
|
||||||
}, tmpl.Params)
|
}, tmpl.Params)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestRequired(t *testing.T) {
|
||||||
|
tmpl := &Template{
|
||||||
|
TemplateDefinition: TemplateDefinition{
|
||||||
|
Params: []Param{
|
||||||
|
{
|
||||||
|
Name: "param",
|
||||||
|
Required: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
_, _, err := tmpl.RenderResult(RenderModeUnitTest, map[string]any{
|
||||||
|
"Param": "foo",
|
||||||
|
})
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
_, _, err = tmpl.RenderResult(RenderModeUnitTest, map[string]any{
|
||||||
|
"Param": "",
|
||||||
|
})
|
||||||
|
require.Error(t, err)
|
||||||
|
|
||||||
|
_, _, err = tmpl.RenderResult(RenderModeUnitTest, map[string]any{
|
||||||
|
"Param": nil,
|
||||||
|
})
|
||||||
|
require.Error(t, err)
|
||||||
|
|
||||||
|
_, _, err = tmpl.RenderResult(RenderModeDocs, map[string]any{
|
||||||
|
"Param": nil,
|
||||||
|
})
|
||||||
|
require.NoError(t, err)
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue