package validation import ( "testing" "k8s.io/kubernetes/pkg/util/fielderrors" configapi "github.com/openshift/origin/pkg/cmd/server/api" ) func TestFailingKubeletArgs(t *testing.T) { args := configapi.ExtendedArguments{} args["port"] = []string{"invalid-value"} args["missing-key"] = []string{"value"} // [port: invalid value '[invalid-value]': could not be set: strconv.ParseUint: parsing "invalid-value": invalid syntax flag: invalid value 'missing-key': is not a valid flag] errs := ValidateKubeletExtendedArguments(args) if len(errs) != 2 { t.Fatalf("expected 2 errors, not %v", errs) } var ( portErr *fielderrors.ValidationError missingErr *fielderrors.ValidationError ) for _, uncastErr := range errs { err, ok := uncastErr.(*fielderrors.ValidationError) if !ok { t.Errorf("expected validationerror, not %v", err) continue } switch err.Field { case "port": portErr = err case "flag": missingErr = err } } if portErr == nil { t.Fatalf("missing port") } if missingErr == nil { t.Fatalf("missing missing-key") } if e, a := "port", portErr.Field; e != a { t.Errorf("expected %v, got %v", e, a) } if e, a := "invalid-value", portErr.BadValue.(string); e != a { t.Errorf("expected %v, got %v", e, a) } if e, a := `could not be set: strconv.ParseUint: parsing "invalid-value": invalid syntax`, portErr.Detail; e != a { t.Errorf("expected %v, got %v", e, a) } if e, a := "flag", missingErr.Field; e != a { t.Errorf("expected %v, got %v", e, a) } if e, a := "missing-key", missingErr.BadValue.(string); e != a { t.Errorf("expected %v, got %v", e, a) } if e, a := `is not a valid flag`, missingErr.Detail; e != a { t.Errorf("expected %v, got %v", e, a) } }