package microservices.sample.user;
import microservices.sample.ServiceBuilder;
import microservices.sample.base.AvailablePortProvider;
import microservices.sample.persistence.ratpack.PersistenceServer;
import microservices.sample.user.ratpack.UserServer;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
import static org.hamcrest.Matchers.equalTo;
import static org.junit.Assert.*;
import static org.junit.Assume.assumeTrue;
/**
* Full functional test
*
* @author mamad
* @since 18/03/15.
*/
public class UserServiceTest {
public static final int USER_SERVER_PORT = AvailablePortProvider.between(2000, 3000).nextPort();
public static final int PERSISTENCE_SERVER_PORT = AvailablePortProvider.between(4100, 5000).nextPort();
public static final String IP_ADDRESS = "localhost";
private UserServer userServer;
private PersistenceServer persistenceServer;
private UserService userService;
@Before
@SuppressWarnings("unchecked")
public void setUp() throws Exception {
userServer = new UserServer(USER_SERVER_PORT);
userServer.start();
persistenceServer = new PersistenceServer(PERSISTENCE_SERVER_PORT, IP_ADDRESS);
persistenceServer.start();
assumeTrue(userServer.isRunning());
assumeTrue(persistenceServer.isRunning());
userService = ServiceBuilder.create(UserService.class).build(IP_ADDRESS, USER_SERVER_PORT);
}
@After
public void tearDown() throws Exception {
persistenceServer.stop();
userServer.stop();
}
@Test
public void testUserService() throws Exception {
User u1 = new User("James Bond", "");
String id1 = userService.addUser(u1).getId();
User u2 = new User("King Kong", "");
String id2 = userService.addUser(u2).getId();
userService.connect(id1, id2);
List<User> users = userService.listDirectConnections(id1);
assertNotNull(users);
assertFalse(users.isEmpty());
assertThat(users.size(), equalTo(1));
assertThat(users.get(0).getName(), equalTo(u2.getName()));
}
}