@Test // SPR-13406 public void testApplyMessageSourceResolvableToStringArgumentValueWithUnresolvedLogicalFieldName() { TestBean testBean = new TestBean(); testBean.setEmail("test@example.com"); testBean.setConfirmEmail("TEST@EXAMPLE.IO"); BeanPropertyBindingResult errors = new BeanPropertyBindingResult(testBean, "testBean"); validatorAdapter.validate(testBean, errors); assertThat(errors.getFieldErrorCount("email"), is(1)); assertThat(errors.getFieldValue("email"), is("test@example.com")); assertThat(errors.getFieldErrorCount("confirmEmail"), is(1)); FieldError error1 = errors.getFieldError("email"); FieldError error2 = errors.getFieldError("confirmEmail"); assertNotNull(error1); assertNotNull(error2); assertThat(messageSource.getMessage(error1, Locale.ENGLISH), is("email must be same value as confirmEmail")); assertThat(messageSource.getMessage(error2, Locale.ENGLISH), is("Email required")); assertTrue(error1.contains(ConstraintViolation.class)); assertThat(error1.unwrap(ConstraintViolation.class).getPropertyPath().toString(), is("email")); assertTrue(error2.contains(ConstraintViolation.class)); assertThat(error2.unwrap(ConstraintViolation.class).getPropertyPath().toString(), is("confirmEmail")); }
@Test // SPR-13406 public void testNoStringArgumentValue() { TestBean testBean = new TestBean(); testBean.setPassword("pass"); testBean.setConfirmPassword("pass"); BeanPropertyBindingResult errors = new BeanPropertyBindingResult(testBean, "testBean"); validatorAdapter.validate(testBean, errors); assertThat(errors.getFieldErrorCount("password"), is(1)); assertThat(errors.getFieldValue("password"), is("pass")); FieldError error = errors.getFieldError("password"); assertNotNull(error); assertThat(messageSource.getMessage(error, Locale.ENGLISH), is("Size of Password is must be between 8 and 128")); assertTrue(error.contains(ConstraintViolation.class)); assertThat(error.unwrap(ConstraintViolation.class).getPropertyPath().toString(), is("password")); }
@Test // SPR-13406 public void testApplyMessageSourceResolvableToStringArgumentValueWithResolvedLogicalFieldName() { TestBean testBean = new TestBean(); testBean.setPassword("password"); testBean.setConfirmPassword("PASSWORD"); BeanPropertyBindingResult errors = new BeanPropertyBindingResult(testBean, "testBean"); validatorAdapter.validate(testBean, errors); assertThat(errors.getFieldErrorCount("password"), is(1)); assertThat(errors.getFieldValue("password"), is("password")); FieldError error = errors.getFieldError("password"); assertNotNull(error); assertThat(messageSource.getMessage(error, Locale.ENGLISH), is("Password must be same value as Password(Confirm)")); assertTrue(error.contains(ConstraintViolation.class)); assertThat(error.unwrap(ConstraintViolation.class).getPropertyPath().toString(), is("password")); }
@Test // SPR-15123 public void testApplyMessageSourceResolvableToStringArgumentValueWithAlwaysUseMessageFormat() { messageSource.setAlwaysUseMessageFormat(true); TestBean testBean = new TestBean(); testBean.setEmail("test@example.com"); testBean.setConfirmEmail("TEST@EXAMPLE.IO"); BeanPropertyBindingResult errors = new BeanPropertyBindingResult(testBean, "testBean"); validatorAdapter.validate(testBean, errors); assertThat(errors.getFieldErrorCount("email"), is(1)); assertThat(errors.getFieldValue("email"), is("test@example.com")); assertThat(errors.getFieldErrorCount("confirmEmail"), is(1)); FieldError error1 = errors.getFieldError("email"); FieldError error2 = errors.getFieldError("confirmEmail"); assertNotNull(error1); assertNotNull(error2); assertThat(messageSource.getMessage(error1, Locale.ENGLISH), is("email must be same value as confirmEmail")); assertThat(messageSource.getMessage(error2, Locale.ENGLISH), is("Email required")); assertTrue(error1.contains(ConstraintViolation.class)); assertThat(error1.unwrap(ConstraintViolation.class).getPropertyPath().toString(), is("email")); assertTrue(error2.contains(ConstraintViolation.class)); assertThat(error2.unwrap(ConstraintViolation.class).getPropertyPath().toString(), is("confirmEmail")); }
assertEquals("typeMismatch", ageError.getCode()); assertEquals("32x", ageError.getRejectedValue()); assertTrue(ageError.contains(TypeMismatchException.class)); assertTrue(ageError.contains(NumberFormatException.class)); assertTrue(ageError.unwrap(NumberFormatException.class).getMessage().contains("32x")); assertEquals(0, tb.getAge()); assertEquals("methodInvocation", touchyError.getCode()); assertEquals("m.y", touchyError.getRejectedValue()); assertTrue(touchyError.contains(MethodInvocationException.class)); assertTrue(touchyError.unwrap(MethodInvocationException.class).getCause().getMessage().contains("a .")); assertNull(tb.getTouchy());