mirror of
https://github.com/minio/minio.git
synced 2024-12-24 06:05:55 -05:00
parent
32bd1b31e9
commit
b99aaab42e
@ -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.
|
||||
|
@ -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 {
|
||||
|
Loading…
Reference in New Issue
Block a user