Sid value can be any unicode character support it (#6676)

Fixes #6476
This commit is contained in:
Harshavardhana 2018-10-23 03:41:06 -07:00 committed by Nitish Tiwari
parent 32bd1b31e9
commit b99aaab42e
2 changed files with 6 additions and 15 deletions

View file

@ -19,22 +19,15 @@ package policy
import (
"encoding/json"
"fmt"
"regexp"
"unicode/utf8"
)
var idRegexp = regexp.MustCompile("^[[:alnum:]]+$")
// ID - policy ID.
type ID string
// IsValid - checks if ID is valid or not.
func (id ID) IsValid() bool {
// Allow empty string as ID.
if string(id) == "" {
return true
}
return idRegexp.MatchString(string(id))
return utf8.ValidString(string(id))
}
// MarshalJSON - encodes ID to JSON data.

View file

@ -29,13 +29,14 @@ func TestIDIsValid(t *testing.T) {
}{
{ID("DenyEncryptionSt1"), true},
{ID(""), true},
{ID("aa\xe2"), false},
}
for i, testCase := range testCases {
result := testCase.id.IsValid()
if result != testCase.expectedResult {
t.Fatalf("case %v: result: expected: %v, got: %v\n", i+1, testCase.expectedResult, result)
t.Errorf("case %v: result: expected: %v, got: %v\n", i+1, testCase.expectedResult, result)
}
}
}
@ -46,10 +47,9 @@ func TestIDMarshalJSON(t *testing.T) {
expectedResult []byte
expectErr bool
}{
{ID("foo"), []byte(`"foo"`), false},
{ID("1234"), []byte(`"1234"`), false},
{ID("DenyEncryptionSt1"), []byte(`"DenyEncryptionSt1"`), false},
{ID(""), []byte(`""`), false},
{ID("aa\xe2"), nil, true}, // invalid utf-8
}
for i, testCase := range testCases {
@ -74,11 +74,9 @@ func TestIDUnmarshalJSON(t *testing.T) {
expectedResult ID
expectErr bool
}{
{[]byte(`"foo"`), ID("foo"), false},
{[]byte(`"1234"`), ID("1234"), false},
{[]byte(`"DenyEncryptionSt1"`), ID("DenyEncryptionSt1"), false},
{[]byte(`""`), ID(""), false},
{[]byte(`"foo bar"`), ID(""), true},
{[]byte(`"aa\xe2"`), ID(""), true},
}
for i, testCase := range testCases {