@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));
String entity = response.getEntity(String.class);
System.out.println("entity: " + entity);
ViolationReport r = new ViolationReport(entity);
ResteasyConstraintViolation violation = r.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));
String entity = response.getEntity(String.class);
System.out.println("entity: " + entity);
ViolationReport r = new ViolationReport(entity);
countViolations(r, 0, 0, 0, 0, 1);
ResteasyConstraintViolation violation = r.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));