1 package it.com.atlassian.rest.validation;
2
3 import com.atlassian.plugins.rest.common.validation.ValidationErrors;
4 import com.atlassian.plugins.rest.validation.Person;
5 import com.atlassian.plugins.rest.validation.PersonResponse;
6 import com.atlassian.rest.jersey.client.WebResourceFactory;
7 import com.sun.jersey.api.client.UniformInterfaceException;
8 import com.sun.jersey.api.client.WebResource;
9 import org.junit.Before;
10 import org.junit.Test;
11
12 import javax.ws.rs.core.MediaType;
13
14 import static junit.framework.Assert.assertTrue;
15 import static org.junit.Assert.assertEquals;
16 import static org.junit.Assert.assertNotNull;
17 import static org.junit.Assert.fail;
18
19 public class ValidatedResourceTest
20 {
21 private WebResource webResource;
22
23 @Before
24 public void setUp()
25 {
26 webResource = WebResourceFactory.authenticated();
27 }
28
29 @Test
30 public void testValidationPassed()
31 {
32 Person goodPerson = new Person();
33 goodPerson.setName("Jim");
34
35 PersonResponse response = webResource.path("validatedResource.xml").entity(goodPerson, MediaType.APPLICATION_XML).post(PersonResponse.class);
36 assertTrue(response.getName().equals("Jim"));
37 }
38
39 @Test
40 public void testValidationFailed()
41 {
42 Person badPerson = new Person();
43 badPerson.setName("a");
44
45 try
46 {
47 webResource.path("validatedResource.xml").entity(badPerson, MediaType.APPLICATION_XML).post(ValidationErrors.class);
48 fail();
49 }
50 catch (UniformInterfaceException ex)
51 {
52 ValidationErrors errors = ex.getResponse().getEntity(ValidationErrors.class);
53 assertNotNull(errors);
54 assertEquals(1, errors.getErrors().size());
55 assertEquals("The name must be between 2 and 10 characters", errors.getErrors().get(0).getMessage());
56 }
57
58
59 }
60 }