package org.zend.webapi.test; import static org.junit.Assert.fail; import static org.mockito.Mockito.when; import java.io.IOException; import java.net.MalformedURLException; import java.net.URI; import java.net.URISyntaxException; import org.junit.After; import org.junit.Before; import org.mockito.Mockito; import org.restlet.data.Protocol; import org.zend.webapi.core.WebApiException; import org.zend.webapi.core.connection.response.ResponseCode; import org.zend.webapi.test.server.RequestHandler; import org.zend.webapi.test.server.ZendSystem; import org.zend.webapi.test.server.response.ServerResponse; import org.zend.webapi.test.server.utils.ResponseFactory; import org.zend.webapi.test.server.utils.ServerType; public abstract class AbstractTestServer { protected RequestHandler handler = Mockito.mock(RequestHandler.class); @Before public void startupServer() throws MalformedURLException, WebApiException { // init client Configuration.getClient(); // init embedded server if (Configuration.getType() == ServerType.EMBEDDED) { try { URI uri = new URI(Configuration.getHost()); ZendSystem server = ZendSystem.initializeServer( Configuration.getEdition(), getProtocol(uri.getScheme()), uri.getPort(), handler); server.startServer(); } catch (URISyntaxException e) { fail("Incorrect host address: " + Configuration.getHost()); } catch (Exception e) { fail("Cannot start embedded server on " + Configuration.getHost()); } } } @After public void shutdownServer() { if (Configuration.getType() == ServerType.EMBEDDED) { try { ZendSystem.getInstance().stopServer(); } catch (Exception e) { fail("Cannot stop embedded server on " + Configuration.getHost()); } } Configuration.clean(); } protected void initMock(ServerResponse toMock, String operation, ResponseCode code) { if (Configuration.getType() == ServerType.EMBEDDED) { try { when(toMock).thenReturn( ResponseFactory.createResponse(operation, code)); } catch (IOException e) { fail(e.getMessage()); } } } protected void initFileMock(ServerResponse toMock, String operation, ResponseCode code, String folder, String name) { if (Configuration.getType() == ServerType.EMBEDDED) { try { when(toMock).thenReturn( ResponseFactory.createFileResponse(operation, code, folder, name)); } catch (IOException e) { fail(e.getMessage()); } } } protected void initErrorMock(ServerResponse toMock, String operation, ResponseCode code) { if (Configuration.getType() == ServerType.EMBEDDED) { try { when(toMock).thenReturn( ResponseFactory.createErrorResponse(operation, code)); } catch (IOException e) { fail(e.getMessage()); } } } private Protocol getProtocol(String host) { if (host.startsWith("https")) { return Protocol.HTTPS; } return Protocol.HTTP; } }