package com.google.sitebricks.acceptance;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableSet;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.sitebricks.acceptance.util.AcceptanceTest;
import com.google.sitebricks.client.Web;
import com.google.sitebricks.client.WebResponse;
import com.google.sitebricks.client.transport.Json;
import com.google.sitebricks.conversion.Converter;
import com.google.sitebricks.conversion.ConverterRegistry;
import com.google.sitebricks.conversion.StandardTypeConverter;
import com.google.sitebricks.example.model.Person;
/**
*
*/
@Test(suiteName = AcceptanceTest.SUITE)
public class RestfulWebServiceValidatingAcceptanceTest {
public void shouldValidateGet() {
Person person = new Person();
person.setFirstName("firstName");
person.setLastName("lastName");
person.setAge(20);
WebResponse response = createInjector().getInstance(Web.class)
.clientOf(AcceptanceTest.baseUrl() + "/restvalidating")
.transports(Person.class).over(Json.class).get();
assert response.toString().contains(person.getLastName());
}
public void shouldValidatePost() {
Person person = new Person();
person.setFirstName("firstName");
person.setLastName("lastName");
person.setAge(20);
WebResponse response = createInjector().getInstance(Web.class)
.clientOf(AcceptanceTest.baseUrl() + "/restvalidating")
.transports(Person.class).over(Json.class).post(person);
assert response.toString().contains(person.getLastName());
}
public void shouldReceiveExceptionValidatePost() {
Person person = new Person();
person.setFirstName(null);
person.setLastName("lastName");
person.setAge(20);
WebResponse response = createInjector().getInstance(Web.class)
.clientOf(AcceptanceTest.baseUrl() + "/restvalidating")
.transports(Person.class).over(Json.class).post(person);
assert response.toString().contains("constraintViolationNullFirstName");
}
private Injector createInjector() {
return Guice.createInjector(new AbstractModule() {
protected void configure() {
bind(ConverterRegistry.class).toInstance(new StandardTypeConverter(ImmutableSet.<Converter> of()));
}
});
}
}