mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 20:24:09 +00:00
Merge pull request #7541 from csrwng/fix_bool_conversion
Handle conversion of boolean query parameters with a value of "false"
This commit is contained in:
commit
b11f07be7a
@ -67,13 +67,17 @@ func convertStringSliceToInt(input *[]string, out *int, s conversion.Scope) erro
|
||||
return nil
|
||||
}
|
||||
|
||||
// converStringSliceToBool will convert a string parameter to boolean.
|
||||
// Only the absence of a value, a value of "false", or a value of "0" resolve to false.
|
||||
// Any other value (including empty string) resolves to true.
|
||||
func convertStringSliceToBool(input *[]string, out *bool, s conversion.Scope) error {
|
||||
if len(*input) == 0 {
|
||||
*out = false
|
||||
return nil
|
||||
}
|
||||
switch strings.ToLower((*input)[0]) {
|
||||
case "true", "1":
|
||||
*out = true
|
||||
case "false", "0":
|
||||
*out = false
|
||||
default:
|
||||
*out = true
|
||||
}
|
||||
|
@ -29,6 +29,7 @@ type InternalComplex struct {
|
||||
Integer int
|
||||
Integer64 int64
|
||||
Int64 int64
|
||||
Bool bool
|
||||
}
|
||||
|
||||
type ExternalComplex struct {
|
||||
@ -37,6 +38,7 @@ type ExternalComplex struct {
|
||||
Integer int `json:"int"`
|
||||
Integer64 int64 `json:",omitempty"`
|
||||
Int64 int64
|
||||
Bool bool `json:"bool"`
|
||||
}
|
||||
|
||||
func (*InternalComplex) IsAnAPIObject() {}
|
||||
@ -82,6 +84,36 @@ func TestStringMapConversion(t *testing.T) {
|
||||
errFn: func(err error) bool { return err != nil },
|
||||
expected: &ExternalComplex{},
|
||||
},
|
||||
"parses boolean true": {
|
||||
input: map[string][]string{
|
||||
"bool": {"true"},
|
||||
},
|
||||
expected: &ExternalComplex{Bool: true},
|
||||
},
|
||||
"parses boolean any value": {
|
||||
input: map[string][]string{
|
||||
"bool": {"foo"},
|
||||
},
|
||||
expected: &ExternalComplex{Bool: true},
|
||||
},
|
||||
"parses boolean false": {
|
||||
input: map[string][]string{
|
||||
"bool": {"false"},
|
||||
},
|
||||
expected: &ExternalComplex{Bool: false},
|
||||
},
|
||||
"parses boolean empty value": {
|
||||
input: map[string][]string{
|
||||
"bool": {""},
|
||||
},
|
||||
expected: &ExternalComplex{Bool: true},
|
||||
},
|
||||
"parses boolean no value": {
|
||||
input: map[string][]string{
|
||||
"bool": {},
|
||||
},
|
||||
expected: &ExternalComplex{Bool: false},
|
||||
},
|
||||
}
|
||||
|
||||
for k, tc := range testCases {
|
||||
|
Loading…
Reference in New Issue
Block a user