Trim spaces from annotations that can contain multiple lines

This commit is contained in:
Manuel Alejandro de Brito Fontes 2019-05-07 07:41:53 -04:00
parent b8fb09d7b3
commit 23e7423477
No known key found for this signature in database
GPG key ID: 786136016A8BA02A
2 changed files with 24 additions and 5 deletions

View file

@ -19,6 +19,7 @@ package parser
import (
"fmt"
"strconv"
"strings"
extensions "k8s.io/api/extensions/v1beta1"
@ -52,11 +53,12 @@ func (a ingAnnotations) parseBool(name string) (bool, error) {
func (a ingAnnotations) parseString(name string) (string, error) {
val, ok := a[name]
if ok {
if len(val) == 0 {
s := normalizeString(val)
if len(s) == 0 {
return "", errors.NewInvalidAnnotationContent(name, val)
}
return val, nil
return s, nil
}
return "", errors.ErrMissingAnnotations
}
@ -119,3 +121,12 @@ func GetIntAnnotation(name string, ing *extensions.Ingress) (int, error) {
func GetAnnotationWithPrefix(suffix string) string {
return fmt.Sprintf("%v/%v", AnnotationsPrefix, suffix)
}
func normalizeString(input string) string {
trimmedContent := []string{}
for _, line := range strings.Split(input, "\n") {
trimmedContent = append(trimmedContent, strings.TrimSpace(line))
}
return strings.Join(trimmedContent, "\n")
}

View file

@ -92,6 +92,14 @@ func TestGetStringAnnotation(t *testing.T) {
{"valid - A", "string", "A ", "A", false},
{"valid - B", "string", " B", "B", false},
{"empty", "string", " ", "", true},
{"valid multiline", "string", `
rewrite (?i)/arcgis/rest/services/Utilities/Geometry/GeometryServer(.*)$ /arcgis/rest/services/Utilities/Geometry/GeometryServer$1 break;
rewrite (?i)/arcgis/services/Utilities/Geometry/GeometryServer(.*)$ /arcgis/services/Utilities/Geometry/GeometryServer$1 break;
`, `
rewrite (?i)/arcgis/rest/services/Utilities/Geometry/GeometryServer(.*)$ /arcgis/rest/services/Utilities/Geometry/GeometryServer$1 break;
rewrite (?i)/arcgis/services/Utilities/Geometry/GeometryServer(.*)$ /arcgis/services/Utilities/Geometry/GeometryServer$1 break;
`,
false},
}
data := map[string]string{}