@@ -34,18 +34,28 @@ public void validateLength() {
3434 Assert .assertFalse (validator .validate (" " , "name" , configFromMap (ImmutableMap .of (LengthValidator .KEY_MIN , 1 ))).isValid ());
3535 Assert .assertTrue (validator .validate (" " , "name" , configFromMap (ImmutableMap .of (LengthValidator .KEY_MAX , 10 ))).isValid ());
3636
37- // empty value ignoration configured
38- Assert .assertTrue (validator .validate (null , "name" , valConfigIgnoreEmptyValues ).isValid ());
39- Assert .assertTrue (validator .validate ("" , "name" , valConfigIgnoreEmptyValues ).isValid ());
40- Assert .assertTrue (validator .validate (" " , "name" , valConfigIgnoreEmptyValues ).isValid ());
41-
37+ //KEYCLOAK-19006 reproducer
38+ Assert .assertFalse (validator .validate (" " , "name" , ValidatorConfig .builder ().config (LengthValidator .KEY_MAX , 4 ).config (AbstractSimpleValidator .IGNORE_EMPTY_VALUE , true ).config (LengthValidator .KEY_TRIM_DISABLED , true ).build ()).isValid ());
39+
4240 // min validation only
43- Assert .assertTrue (validator .validate ("tester" , "name" , configFromMap (ImmutableMap .of (LengthValidator .KEY_MIN , 1 ))).isValid ());
44- Assert .assertFalse (validator .validate ("tester" , "name" , configFromMap (ImmutableMap .of (LengthValidator .KEY_MIN , 7 ))).isValid ());
41+ Assert .assertTrue (validator .validate ("t" , "name" , ValidatorConfig .builder ().config (LengthValidator .KEY_MIN , 1 ).build ()).isValid ());
42+ Assert .assertFalse (validator .validate ("tester" , "name" , ValidatorConfig .builder ().config (LengthValidator .KEY_MIN , 7 ).build ()).isValid ());
43+
44+ //min value validation with "empty value ignoration" configured
45+ Assert .assertTrue (validator .validate (null , "name" , ValidatorConfig .builder ().config (LengthValidator .KEY_MIN , 1 ).config (AbstractSimpleValidator .IGNORE_EMPTY_VALUE , true ).build ()).isValid ());
46+ Assert .assertTrue (validator .validate ("" , "name" , ValidatorConfig .builder ().config (LengthValidator .KEY_MIN , 1 ).config (AbstractSimpleValidator .IGNORE_EMPTY_VALUE , true ).build ()).isValid ());
47+ Assert .assertFalse (validator .validate (" " , "name" , ValidatorConfig .builder ().config (LengthValidator .KEY_MIN , 1 ).config (AbstractSimpleValidator .IGNORE_EMPTY_VALUE , true ).build ()).isValid ());
48+ Assert .assertTrue (validator .validate ("t" , "name" , ValidatorConfig .builder ().config (LengthValidator .KEY_MIN , 1 ).config (AbstractSimpleValidator .IGNORE_EMPTY_VALUE , true ).build ()).isValid ());
49+ Assert .assertFalse (validator .validate ("tester" , "name" , ValidatorConfig .builder ().config (LengthValidator .KEY_MIN , 7 ).config (AbstractSimpleValidator .IGNORE_EMPTY_VALUE , true ).build ()).isValid ());
4550
4651 // max validation only
47- Assert .assertTrue (validator .validate ("tester" , "name" , configFromMap (ImmutableMap .of (LengthValidator .KEY_MAX , 8 ))).isValid ());
48- Assert .assertFalse (validator .validate ("tester" , "name" , configFromMap (ImmutableMap .of (LengthValidator .KEY_MAX , 4 ))).isValid ());
52+ Assert .assertTrue (validator .validate ("tester" , "name" , ValidatorConfig .builder ().config (LengthValidator .KEY_MAX , 8 ).build ()).isValid ());
53+ Assert .assertFalse (validator .validate ("tester" , "name" , ValidatorConfig .builder ().config (LengthValidator .KEY_MAX , 4 ).build ()).isValid ());
54+
55+ //max value validation with "empty value ignoration" configured
56+ Assert .assertTrue (validator .validate (null , "name" , ValidatorConfig .builder ().config (LengthValidator .KEY_MAX , 8 ).config (AbstractSimpleValidator .IGNORE_EMPTY_VALUE , true ).build ()).isValid ());
57+ Assert .assertTrue (validator .validate ("tester" , "name" , ValidatorConfig .builder ().config (LengthValidator .KEY_MAX , 8 ).config (AbstractSimpleValidator .IGNORE_EMPTY_VALUE , true ).build ()).isValid ());
58+ Assert .assertFalse (validator .validate ("tester" , "name" , ValidatorConfig .builder ().config (LengthValidator .KEY_MAX , 4 ).config (AbstractSimpleValidator .IGNORE_EMPTY_VALUE , true ).build ()).isValid ());
4959
5060 // both validations together
5161 ValidatorConfig config1 = configFromMap (ImmutableMap .of (LengthValidator .KEY_MIN , 3 , LengthValidator .KEY_MAX , 4 ));
@@ -57,9 +67,12 @@ public void validateLength() {
5767 // test value trimming performed by default
5868 Assert .assertFalse ("trim not performed" , validator .validate ("t " , "name" , configFromMap (ImmutableMap .of (LengthValidator .KEY_MIN , 2 ))).isValid ());
5969 Assert .assertFalse ("trim not performed" , validator .validate (" t" , "name" , configFromMap (ImmutableMap .of (LengthValidator .KEY_MIN , 2 ))).isValid ());
60-
70+ Assert .assertTrue ("trim not performed" , validator .validate ("tr " , "name" , configFromMap (ImmutableMap .of (LengthValidator .KEY_MAX , 2 ))).isValid ());
71+ Assert .assertTrue ("trim not performed" , validator .validate (" tr" , "name" , configFromMap (ImmutableMap .of (LengthValidator .KEY_MAX , 2 ))).isValid ());
72+
6173 // test value trimming disabled in config
62- Assert .assertTrue ("trim disabled but performed" , validator .validate ("t " , "name" , configFromMap (ImmutableMap .of (LengthValidator .KEY_MIN , 2 , LengthValidator .KEY_TRIM_DISABLED , true ))).isValid ());
74+ Assert .assertTrue ("trim disabled but performed" , validator .validate ("tr " , "name" , configFromMap (ImmutableMap .of (LengthValidator .KEY_MIN , 3 , LengthValidator .KEY_TRIM_DISABLED , true ))).isValid ());
75+ Assert .assertFalse ("trim disabled but performed" , validator .validate ("trr " , "name" , configFromMap (ImmutableMap .of (LengthValidator .KEY_MAX , 3 , LengthValidator .KEY_TRIM_DISABLED , true ))).isValid ());
6376
6477 //test correct error message selection
6578 Assert .assertEquals (LengthValidator .MESSAGE_INVALID_LENGTH_TOO_SHORT ,validator .validate ("" , "name" , ValidatorConfig .builder ().config (LengthValidator .KEY_MIN , 1 ).build ()).getErrors ().iterator ().next ().getMessage ());
@@ -112,12 +125,12 @@ public void validateEmail() {
112125
113126 Assert .assertFalse (validator .validate (null , "email" ).isValid ());
114127 Assert .assertFalse (validator .validate ("" , "email" ).isValid ());
128+ Assert .assertFalse (validator .validate (" " , "email" ).isValid ());
115129
116130 // empty value ignoration configured
117131 Assert .assertTrue (validator .validate (null , "emptyString" , valConfigIgnoreEmptyValues ).isValid ());
118132 Assert .assertTrue (validator .validate ("" , "emptyString" , valConfigIgnoreEmptyValues ).isValid ());
119- Assert .assertTrue (validator .validate (" " , "blankString" , valConfigIgnoreEmptyValues ).isValid ());
120-
133+ Assert .assertFalse (validator .validate (" " , "blankString" , valConfigIgnoreEmptyValues ).isValid ());
121134
122135 Assert .
assertTrue (
validator .
validate (
"[email protected] " ,
"email" ).
isValid ());
123136 Assert .
assertTrue (
validator .
validate (
"[email protected] " ,
"email" ).
isValid ());
@@ -422,7 +435,7 @@ public void validatePattern() {
422435 // empty value ignoration configured
423436 Assert .assertTrue (validator .validate (null , "value" , valConfigIgnoreEmptyValues ).isValid ());
424437 Assert .assertTrue (validator .validate ("" , "value" , valConfigIgnoreEmptyValues ).isValid ());
425- Assert .assertTrue (validator .validate (" " , "value" , valConfigIgnoreEmptyValues ).isValid ());
438+ Assert .assertFalse (validator .validate (" " , "value" , ValidatorConfig . builder (). config ( PatternValidator . CFG_PATTERN , "^[^ \\ s]$" ). config ( valConfigIgnoreEmptyValues ). build () ).isValid ());
426439
427440 }
428441
0 commit comments