package com.aol.micro.server.rest.jersey;
import static org.hamcrest.Matchers.hasItem;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import java.util.HashMap;
import java.util.stream.Collectors;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import com.aol.micro.server.rest.jackson.JacksonFeature;
import com.aol.micro.server.servers.ServerThreadLocalVariables;
public class JerseyRestApplicationTest {
@Before
public void setup(){
ServerThreadLocalVariables.getContext().set(Thread.currentThread().getName());
JerseyRestApplication.getResourcesMap().put(Thread.currentThread().getName(), Arrays.asList(new ServletStatusResource()));
JerseyRestApplication.getPackages().put(Thread.currentThread().getName(), Arrays.asList());
JerseyRestApplication.getResourcesClasses().put(Thread.currentThread().getName(), Arrays.asList(JacksonFeature.class));
JerseyRestApplication.getServerPropertyMap().put(Thread.currentThread().getName(), new HashMap<>());
}
@Test
public void testDefaultConstructor() {
JerseyRestApplication app = new JerseyRestApplication();
assertTrue(app.isRegistered(ServletStatusResource.class));
assertThat( app.getApplication().getClasses().stream().map(c -> c.getName()).collect(Collectors.toSet()),hasItem("com.aol.micro.server.rest.jackson.JacksonFeature".intern()));
}
@Test
public void testDefaultConstructorCleared() {
JerseyRestApplication.getResourcesMap().clear();
ServerThreadLocalVariables.getContext().set(Thread.currentThread().getName());
JerseyRestApplication app = new JerseyRestApplication();
assertThat(app.getApplication().getClasses().stream().map(c -> c.getName()).collect(Collectors.toSet()),hasItem("com.aol.micro.server.rest.jackson.JacksonFeature"));
assertFalse(app.isRegistered(ServletStatusResource.class));
}
@Test @Ignore //fix up after spring / jersey integration
public void testConstructor() {
JerseyRestApplication.getResourcesMap().clear();
JerseyRestApplication app = new JerseyRestApplication(Arrays.asList(new ServletStatusResource()),
Arrays.asList(),Arrays.asList(JacksonFeature.class), new HashMap<>());
assertThat(app.getApplication().getClasses().size(),is(1));
assertTrue(app.isRegistered(ServletStatusResource.class));
}
}