mirror of
https://github.com/siderolabs/talos.git
synced 2025-10-09 06:31:25 +02:00
Use `argsbuilder` same way as it's used in services. Rewrite `kubeProxy` generation code to override default args. As a consequence of this change now flags do not have determined order as they all come from a single merged map. Introduced merge policy in the `ArgsBuilder` to deny overrides for some arguments and do additive merge of others. Fixes: https://github.com/talos-systems/talos/issues/4238 Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
107 lines
2.1 KiB
Go
107 lines
2.1 KiB
Go
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
package argsbuilder_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/suite"
|
|
|
|
"github.com/talos-systems/talos/pkg/argsbuilder"
|
|
)
|
|
|
|
type ArgsbuilderSuite struct {
|
|
suite.Suite
|
|
}
|
|
|
|
func (suite *ArgsbuilderSuite) TestMergeAdditive() {
|
|
args := argsbuilder.Args{
|
|
"param": "value1,value2,value3",
|
|
"param2": "",
|
|
}
|
|
|
|
suite.Require().NoError(
|
|
args.Merge(argsbuilder.Args{
|
|
"param": "value2, value10",
|
|
},
|
|
argsbuilder.WithMergePolicies(argsbuilder.MergePolicies{
|
|
"param": argsbuilder.MergeAdditive,
|
|
}),
|
|
),
|
|
)
|
|
|
|
suite.Require().Equal("value1,value2,value3,value10", args["param"])
|
|
|
|
suite.Require().NoError(
|
|
args.Merge(argsbuilder.Args{
|
|
"param2": "value1, value5",
|
|
},
|
|
argsbuilder.WithMergePolicies(argsbuilder.MergePolicies{
|
|
"param2": argsbuilder.MergeAdditive,
|
|
}),
|
|
),
|
|
)
|
|
|
|
suite.Require().Equal("value1,value5", args["param2"])
|
|
}
|
|
|
|
func (suite *ArgsbuilderSuite) TestMergeOverwrite() {
|
|
args := argsbuilder.Args{
|
|
"param": "value1,value2",
|
|
}
|
|
|
|
suite.Require().NoError(
|
|
args.Merge(argsbuilder.Args{
|
|
"param": "value10",
|
|
},
|
|
argsbuilder.WithMergePolicies(argsbuilder.MergePolicies{
|
|
"param2": argsbuilder.MergeAdditive,
|
|
}),
|
|
),
|
|
)
|
|
|
|
suite.Require().Equal("value10", args["param"])
|
|
}
|
|
|
|
func (suite *ArgsbuilderSuite) TestMergeDenied() {
|
|
args := argsbuilder.Args{
|
|
"param": "value1,value2",
|
|
}
|
|
|
|
suite.Require().Error(
|
|
args.Merge(argsbuilder.Args{
|
|
"param": "value10",
|
|
},
|
|
argsbuilder.WithMergePolicies(argsbuilder.MergePolicies{
|
|
"param": argsbuilder.MergeDenied,
|
|
}),
|
|
),
|
|
)
|
|
}
|
|
|
|
func (suite *ArgsbuilderSuite) TestMergeDenyList() {
|
|
args := argsbuilder.Args{
|
|
"param": "value1,value2",
|
|
}
|
|
|
|
denyList := argsbuilder.Args{
|
|
"param1": "",
|
|
"param2": "",
|
|
"param3": "",
|
|
}
|
|
|
|
suite.Require().Error(
|
|
args.Merge(argsbuilder.Args{
|
|
"param2": "value10",
|
|
},
|
|
argsbuilder.WithDenyList(denyList),
|
|
),
|
|
)
|
|
}
|
|
|
|
func TestArgsbuilderSuite(t *testing.T) {
|
|
suite.Run(t, &ArgsbuilderSuite{})
|
|
}
|