mirror of
https://github.com/minio/minio.git
synced 2025-01-25 21:53:16 -05:00
parent
32bd1b31e9
commit
b99aaab42e
@ -19,22 +19,15 @@ package policy
|
|||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"regexp"
|
"unicode/utf8"
|
||||||
)
|
)
|
||||||
|
|
||||||
var idRegexp = regexp.MustCompile("^[[:alnum:]]+$")
|
|
||||||
|
|
||||||
// ID - policy ID.
|
// ID - policy ID.
|
||||||
type ID string
|
type ID string
|
||||||
|
|
||||||
// IsValid - checks if ID is valid or not.
|
// IsValid - checks if ID is valid or not.
|
||||||
func (id ID) IsValid() bool {
|
func (id ID) IsValid() bool {
|
||||||
// Allow empty string as ID.
|
return utf8.ValidString(string(id))
|
||||||
if string(id) == "" {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
return idRegexp.MatchString(string(id))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// MarshalJSON - encodes ID to JSON data.
|
// MarshalJSON - encodes ID to JSON data.
|
||||||
|
@ -29,13 +29,14 @@ func TestIDIsValid(t *testing.T) {
|
|||||||
}{
|
}{
|
||||||
{ID("DenyEncryptionSt1"), true},
|
{ID("DenyEncryptionSt1"), true},
|
||||||
{ID(""), true},
|
{ID(""), true},
|
||||||
|
{ID("aa\xe2"), false},
|
||||||
}
|
}
|
||||||
|
|
||||||
for i, testCase := range testCases {
|
for i, testCase := range testCases {
|
||||||
result := testCase.id.IsValid()
|
result := testCase.id.IsValid()
|
||||||
|
|
||||||
if result != testCase.expectedResult {
|
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
|
expectedResult []byte
|
||||||
expectErr bool
|
expectErr bool
|
||||||
}{
|
}{
|
||||||
{ID("foo"), []byte(`"foo"`), false},
|
|
||||||
{ID("1234"), []byte(`"1234"`), false},
|
|
||||||
{ID("DenyEncryptionSt1"), []byte(`"DenyEncryptionSt1"`), false},
|
{ID("DenyEncryptionSt1"), []byte(`"DenyEncryptionSt1"`), false},
|
||||||
{ID(""), []byte(`""`), false},
|
{ID(""), []byte(`""`), false},
|
||||||
|
{ID("aa\xe2"), nil, true}, // invalid utf-8
|
||||||
}
|
}
|
||||||
|
|
||||||
for i, testCase := range testCases {
|
for i, testCase := range testCases {
|
||||||
@ -74,11 +74,9 @@ func TestIDUnmarshalJSON(t *testing.T) {
|
|||||||
expectedResult ID
|
expectedResult ID
|
||||||
expectErr bool
|
expectErr bool
|
||||||
}{
|
}{
|
||||||
{[]byte(`"foo"`), ID("foo"), false},
|
|
||||||
{[]byte(`"1234"`), ID("1234"), false},
|
|
||||||
{[]byte(`"DenyEncryptionSt1"`), ID("DenyEncryptionSt1"), false},
|
{[]byte(`"DenyEncryptionSt1"`), ID("DenyEncryptionSt1"), false},
|
||||||
{[]byte(`""`), ID(""), false},
|
{[]byte(`""`), ID(""), false},
|
||||||
{[]byte(`"foo bar"`), ID(""), true},
|
{[]byte(`"aa\xe2"`), ID(""), true},
|
||||||
}
|
}
|
||||||
|
|
||||||
for i, testCase := range testCases {
|
for i, testCase := range testCases {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user