1 package org.cateproject.controller.common;
2
3 import org.cateproject.controller.common.AnnotationValidator;
4 import org.cateproject.controller.sanitize.AntiSamyServiceImpl;
5 import org.junit.Assert;
6 import org.junit.Before;
7 import org.junit.Test;
8 import org.springframework.core.io.ClassPathResource;
9 import org.springframework.validation.BindException;
10 import org.springframework.validation.Errors;
11 import org.springframework.validation.FieldError;
12 import org.unitils.UnitilsJUnit4;
13
14 import eu.etaxonomy.cdm.model.common.Annotation;
15
16 public class AnnotationFormValidatorTest extends UnitilsJUnit4 {
17
18 private AnnotationValidator annotationValidator;
19 private Annotation annotation;
20 private Errors errors;
21
22 @Before
23 public void setUp() {
24 annotationValidator = new AnnotationValidator();
25
26 AntiSamyServiceImpl antiSamyService = new AntiSamyServiceImpl();
27 antiSamyService.setPolicyFile(new ClassPathResource("org/cateproject/controller/antisamy-policy.xml"));
28 annotationValidator.setAntiSamyService(antiSamyService);
29
30 annotation = Annotation.NewDefaultLanguageInstance("");
31 annotation.setText("Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin eros lacus, dictum molestie, laoreet vitae, pharetra vitae, enim. Praesent vel nisi. Vestibulum at quam. Sed nisi augue, imperdiet sit amet, blandit ac, mattis ac, ante. Curabitur malesuada dignissim dui. Suspendisse potenti. Maecenas sagittis nisi. Aliquam et ante commodo quam hendrerit condimentum. Morbi quam ante, vestibulum quis, scelerisque vitae, viverra eleifend, lectus. Sed eu magna eget ante porttitor porta. Ut vitae tortor. Etiam vel est et mauris rutrum mattis. In hac habitasse platea dictumst.");
32 errors = new BindException(annotation, "target");
33 }
34
35 @Test
36 public void testValidatorWithCorrectData() {
37 Errors errors = new BindException(annotation, "target");
38 annotationValidator.validate(annotation, errors);
39 Assert.assertFalse(errors.hasErrors());
40 }
41
42 @Test
43 public void testValidatorWithNoText() {
44 annotation.setText(null);
45
46 annotationValidator.validate(annotation, errors);
47 Assert.assertTrue(errors.hasErrors());
48 Assert.assertTrue(errors.hasFieldErrors("text"));
49 FieldError fieldError = errors.getFieldError("text");
50 Assert.assertEquals(fieldError.getCode(),"text.required");
51 }
52
53 @Test
54 public void testValidatorWithXSSComment() {
55 annotation.setText("Lorem ipsum dolor sit amet, <i onMouseOver=\"alert(\'Hello World\')\">consectetuer adipiscing elit</i>.");
56 annotationValidator.validate(annotation, errors);
57 Assert.assertTrue(errors.hasErrors());
58
59 annotation.getText().equals("Lorem ipsum dolor sit amet, <i>consectetuer adipiscing elit</i>.");
60 }
61
62 }