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
|
||||
template: tesla # not optimal, since real communication with tesla server is happening
|
||||
title: Broken Tesla
|
||||
clientId: test_client_id
|
||||
accessToken: A
|
||||
refreshToken: B
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import (
|
|||
"slices"
|
||||
"strconv"
|
||||
"strings"
|
||||
"testing"
|
||||
"text/template"
|
||||
|
||||
"github.com/Masterminds/sprig/v3"
|
||||
|
|
@ -354,6 +355,13 @@ func (t *Template) RenderResult(renderMode int, other map[string]any) ([]byte, m
|
|||
if val != nil {
|
||||
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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,3 +32,36 @@ func TestPresets(t *testing.T) {
|
|||
{Name: "last"},
|
||||
}, 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