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.CommunityConfig;
import org.axway.grapes.server.config.GrapesServerConfig;
import org.axway.grapes.server.db.RepositoryHandler;
import org.axway.grapes.server.db.datamodel.DbModule;
import org.eclipse.jetty.http.HttpStatus;
import org.junit.Assert;
import org.junit.Test;
import javax.ws.rs.core.MediaType;
import java.net.UnknownHostException;
import static junit.framework.TestCase.assertEquals;
import static junit.framework.TestCase.assertNull;
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 WebAppResourcesTest extends ResourceTest {
private RepositoryHandler repositoryHandler;
@Override
protected void setUpResources() throws Exception {
repositoryHandler = mock(RepositoryHandler.class);
WebAppResource resource = new WebAppResource(repositoryHandler, mock(GrapesServerConfig.class));
addProvider(ViewMessageBodyWriter.class);
addResource(resource);
}
@Test
public void getMainPage() throws UnknownHostException {
when(repositoryHandler.getModule(anyString())).thenReturn(new DbModule());
WebResource resource = client().resource("/" + ServerAPI.WEBAPP_RESOURCE);
ClientResponse response = resource.accept(MediaType.TEXT_HTML).get(ClientResponse.class);
assertNotNull(response);
Assert.assertEquals(HttpStatus.OK_200, response.getStatus());
}
@Test
public void checkConfiguration(){
final CommunityConfig communityConfiguration = new CommunityConfig();
communityConfiguration.setIssueTracker("issueTracker");
communityConfiguration.setOnlineHelp("onlineHelp");
final GrapesServerConfig config = mock(GrapesServerConfig.class);
when(config.getCommunityConfiguration()).thenReturn(communityConfiguration);
final RepositoryHandler repoHandler = mock(RepositoryHandler.class);
final WebAppResource resource = new WebAppResource(repoHandler, config);
assertEquals("issueTracker", resource.getIssueTrackerUrl());
assertEquals("onlineHelp", resource.getOnlineDocumentation());
}
@Test
public void checkEmptyConfiguration(){
final GrapesServerConfig config = mock(GrapesServerConfig.class);
final RepositoryHandler repoHandler = mock(RepositoryHandler.class);
final WebAppResource resource = new WebAppResource(repoHandler, config);
assertNull(resource.getIssueTrackerUrl());
assertNull(resource.getOnlineDocumentation());
}
}