package net.lr.tutorial.karaf.cxf.personservice.impl;
import java.io.InputStream;
import javax.ws.rs.core.Response;
import net.lr.tutorial.karaf.cxf.personrest.impl.PersonServiceImpl;
import net.lr.tutorial.karaf.cxf.personrest.model.Person;
import net.lr.tutorial.karaf.cxf.personrest.model.PersonService;
import org.apache.cxf.endpoint.Server;
import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
import org.apache.cxf.jaxrs.client.JAXRSClientFactory;
import org.apache.cxf.jaxrs.client.WebClient;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
public class PersonServiceRestTest {
private static final String PERSONSERVICE_TESTURL = "http://localhost:8282/person";
private static Server server;
@BeforeClass
public static void startServer() {
PersonService personService = new PersonServiceImpl();;
JAXRSServerFactoryBean factory = new JAXRSServerFactoryBean();
factory.setAddress(PERSONSERVICE_TESTURL);
factory.setServiceBean(personService);
server = factory.create();
server.start();
}
@Test
public void testInterface() {
PersonService personService = JAXRSClientFactory.create(PERSONSERVICE_TESTURL, PersonService.class);
Person person = new Person();
person.setId("1002");
person.setName("Christian Schneider");
personService.updatePerson("1002", person);
Person person2 = personService.getPerson("1002");
assertCorrectPerson(person2);
}
@Test
public void testWebClient() {
WebClient client = WebClient.create(PERSONSERVICE_TESTURL + "/1001");
putPerson(client);
Person person = client.get(Person.class);
assertCorrectPerson(person);
}
private void putPerson(WebClient client) {
InputStream is = this.getClass().getResourceAsStream("/person1.xml");
Response resp = client.put(is);
System.out.println(resp);
}
@AfterClass
public static void stopServer() {
server.stop();
}
private void assertCorrectPerson(Person person) {
Assert.assertNotNull(person);
Assert.assertEquals("Christian Schneider", person.getName());
}
}