@Test
public void testReturnValues() throws Exception
{
// Valid native constraint
ClientRequest request = new ClientRequest("http://localhost:8080/Validation-test/rest/return/native");
Foo foo = new Foo("a");
request.body("application/foo", foo);
ClientResponse<?> response = request.post(Foo.class);
Assert.assertEquals(200, response.getStatus());
Assert.assertEquals(foo, response.getEntity());
// Valid imposed constraint
request = new ClientRequest("http://localhost:8080/Validation-test/rest/return/imposed");
foo = new Foo("abcde");
request.body("application/foo", foo);
response = request.post(Foo.class);
Assert.assertEquals(200, response.getStatus());
Assert.assertEquals(foo, response.getEntity());
// Valid native and imposed constraints.
request = new ClientRequest("http://localhost:8080/Validation-test/rest/return/nativeAndImposed");
foo = new Foo("abc");
request.body("application/foo", foo);
response = request.post(Foo.class);
Assert.assertEquals(200, response.getStatus());
Assert.assertEquals(foo, response.getEntity());
{
// Invalid native constraint
request = new ClientRequest("http://localhost:8080/Validation-test/rest/return/native");
request.body("application/foo", new Foo("abcdef"));
response = request.post();
Assert.assertEquals(500, response.getStatus());
String header = response.getResponseHeaders().getFirst(Validation.VALIDATION_HEADER);
Assert.assertNotNull(header);
Assert.assertTrue(Boolean.valueOf(header));
MediaType mediaType = response.getMediaType();
Assert.assertEquals(SerializableProvider.APPLICATION_SERIALIZABLE_TYPE, mediaType);
Object entity = response.getEntity(Serializable.class);
System.out.println("entity: " + entity);
Assert.assertTrue(entity instanceof ResteasyViolationException);
ResteasyViolationException exception = ResteasyViolationException.class.cast(entity);
ResteasyConstraintViolation violation = exception.getReturnValueViolations().iterator().next();
System.out.println("violation: " + violation);
Assert.assertTrue(violation.getMessage().equals("s must have length: 1 <= length <= 3"));
Assert.assertEquals("Foo[abcdef]", violation.getValue());
}
{
// Invalid imposed constraint
request = new ClientRequest("http://localhost:8080/Validation-test/rest/return/imposed");
request.body("application/foo", new Foo("abcdef"));
response = request.post(Foo.class);
Assert.assertEquals(500, response.getStatus());
String header = response.getResponseHeaders().getFirst(Validation.VALIDATION_HEADER);
Assert.assertNotNull(header);
Assert.assertTrue(Boolean.valueOf(header));
MediaType mediaType = response.getMediaType();
Assert.assertEquals(SerializableProvider.APPLICATION_SERIALIZABLE_TYPE, mediaType);
Object entity = response.getEntity(Serializable.class);
System.out.println("entity: " + entity);
Assert.assertTrue(entity instanceof ResteasyViolationException);
ResteasyViolationException exception = ResteasyViolationException.class.cast(entity);
countViolations(exception, 1, 0, 0, 0, 0, 1);
ResteasyConstraintViolation violation = exception.getReturnValueViolations().iterator().next();
System.out.println("violation: " + violation);
Assert.assertTrue(violation.getMessage().equals("s must have length: 3 <= length <= 5"));
Assert.assertEquals("Foo[abcdef]", violation.getValue());
}
{
// Invalid native and imposed constraints
request = new ClientRequest("http://localhost:8080/Validation-test/rest/return/nativeAndImposed");
request.body("application/foo", new Foo("abcdef"));
response = request.post(Foo.class);
Assert.assertEquals(500, response.getStatus());
String header = response.getResponseHeaders().getFirst(Validation.VALIDATION_HEADER);
Assert.assertNotNull(header);
Assert.assertTrue(Boolean.valueOf(header));