mirror of
https://github.com/opentofu/opentofu.git
synced 2024-12-28 18:01:01 -06:00
config: Add new interpolation function - md5
This commit is contained in:
parent
573d3bd7ab
commit
664ba5f5a6
@ -2,6 +2,7 @@ package config
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"crypto/md5"
|
||||
"crypto/sha1"
|
||||
"crypto/sha256"
|
||||
"encoding/base64"
|
||||
@ -40,6 +41,7 @@ func Funcs() map[string]ast.Function {
|
||||
"join": interpolationFuncJoin(),
|
||||
"length": interpolationFuncLength(),
|
||||
"lower": interpolationFuncLower(),
|
||||
"md5": interpolationFuncMd5(),
|
||||
"replace": interpolationFuncReplace(),
|
||||
"sha1": interpolationFuncSha1(),
|
||||
"sha256": interpolationFuncSha256(),
|
||||
@ -599,6 +601,20 @@ func interpolationFuncLower() ast.Function {
|
||||
}
|
||||
}
|
||||
|
||||
func interpolationFuncMd5() ast.Function {
|
||||
return ast.Function{
|
||||
ArgTypes: []ast.Type{ast.TypeString},
|
||||
ReturnType: ast.TypeString,
|
||||
Callback: func(args []interface{}) (interface{}, error) {
|
||||
s := args[0].(string)
|
||||
h := md5.New()
|
||||
h.Write([]byte(s))
|
||||
hash := hex.EncodeToString(h.Sum(nil))
|
||||
return hash, nil
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
// interpolationFuncUpper implements the "upper" function that does
|
||||
// string upper casing.
|
||||
func interpolationFuncUpper() ast.Function {
|
||||
|
@ -923,6 +923,28 @@ func TestInterpolateFuncBase64Sha256(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
func TestInterpolateFuncMd5(t *testing.T) {
|
||||
testFunction(t, testFunctionConfig{
|
||||
Cases: []testFunctionCase{
|
||||
{
|
||||
`${md5("tada")}`,
|
||||
"ce47d07243bb6eaf5e1322c81baf9bbf",
|
||||
false,
|
||||
},
|
||||
{ // Confirm that we're not trimming any whitespaces
|
||||
`${md5(" tada ")}`,
|
||||
"aadf191a583e53062de2d02c008141c4",
|
||||
false,
|
||||
},
|
||||
{ // We accept empty string too
|
||||
`${md5("")}`,
|
||||
"d41d8cd98f00b204e9800998ecf8427e",
|
||||
false,
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
type testFunctionConfig struct {
|
||||
Cases []testFunctionCase
|
||||
Vars map[string]ast.Variable
|
||||
|
Loading…
Reference in New Issue
Block a user