package org.axway.grapes.server.webapp.resources; import com.sun.jersey.api.client.ClientResponse; import com.sun.jersey.api.client.WebResource; import com.yammer.dropwizard.testing.ResourceTest; import com.yammer.dropwizard.views.ViewMessageBodyWriter; import org.axway.grapes.commons.api.ServerAPI; import org.axway.grapes.server.config.GrapesServerConfig; import org.axway.grapes.server.core.graphs.AbstractGraph; import org.axway.grapes.server.core.graphs.ModuleGraph; import org.axway.grapes.server.core.graphs.TreeNode; import org.axway.grapes.server.db.RepositoryHandler; import org.axway.grapes.server.db.datamodel.DbModule; import org.eclipse.jetty.http.HttpStatus; import org.junit.Test; import javax.ws.rs.core.MediaType; import java.net.UnknownHostException; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; public class SequoiaTest extends ResourceTest { private RepositoryHandler repositoryHandler; @Override protected void setUpResources() throws Exception { repositoryHandler = mock(RepositoryHandler.class); Sequoia resource = new Sequoia(repositoryHandler, mock(GrapesServerConfig.class)); addProvider(ViewMessageBodyWriter.class); addResource(resource); } @Test public void getModuleGraph() throws UnknownHostException { when(repositoryHandler.getModule(anyString())).thenReturn(new DbModule()); WebResource resource = client().resource("/" + ServerAPI.SEQUOIA_RESOURCE + "/graph/module/1"); ClientResponse response = resource.accept(MediaType.APPLICATION_JSON).get(ClientResponse.class); assertNotNull(response); assertEquals(HttpStatus.OK_200, response.getStatus()); AbstractGraph graph = response.getEntity(ModuleGraph.class); assertNotNull(graph); } @Test public void getTreeGraph() throws UnknownHostException { when(repositoryHandler.getModule(anyString())).thenReturn(new DbModule()); WebResource resource = client().resource("/" + ServerAPI.SEQUOIA_RESOURCE + "/tree/module/1"); ClientResponse response = resource.accept(MediaType.APPLICATION_JSON).get(ClientResponse.class); assertNotNull(response); assertEquals(HttpStatus.OK_200, response.getStatus()); TreeNode tree = response.getEntity(TreeNode.class); assertNotNull(tree); } @Test public void notFound() throws UnknownHostException { when(repositoryHandler.getModule(anyString())).thenReturn(null); WebResource resource = client().resource("/" + ServerAPI.SEQUOIA_RESOURCE + "/graph/module/1"); ClientResponse response = resource.accept(MediaType.APPLICATION_JSON).get(ClientResponse.class); assertNotNull(response); assertEquals(HttpStatus.NOT_FOUND_404, response.getStatus()); resource = client().resource("/" + ServerAPI.SEQUOIA_RESOURCE + "/tree/module/1"); response = resource.accept(MediaType.APPLICATION_JSON).get(ClientResponse.class); assertNotNull(response); assertEquals(HttpStatus.NOT_FOUND_404, response.getStatus()); } }