package org.zend.webapi.test.connection.services; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.net.MalformedURLException; import java.util.HashMap; import java.util.List; import junit.framework.Assert; import org.junit.After; import org.junit.Test; import org.zend.webapi.core.WebApiException; import org.zend.webapi.core.connection.data.ApplicationInfo; import org.zend.webapi.core.connection.data.ApplicationServers; import org.zend.webapi.core.connection.data.ApplicationsList; import org.zend.webapi.core.connection.data.values.ApplicationStatus; import org.zend.webapi.core.connection.request.NamedInputStream; import org.zend.webapi.core.connection.response.ResponseCode; import org.zend.webapi.test.AbstractTestServer; import org.zend.webapi.test.Configuration; import org.zend.webapi.test.DataUtils; import org.zend.webapi.test.server.utils.ServerUtils; public class TestDeploymentServices extends AbstractTestServer { public static final String DEPLOY_FOLDER = "deploy/"; private int appId = 0; private ApplicationInfo appInfo; private void deployApplication() throws MalformedURLException, WebApiException, FileNotFoundException { initMock(handler.applicationDeploy(), "applicationDeploy", ResponseCode.ACCEPTED); File app = new File(ServerUtils.createFileName(DEPLOY_FOLDER + "test-1.0.0.zpk")); if (app.exists()) { String baseUrl = "http://test.com"; ApplicationInfo applicationInfo = Configuration.getClient() .applicationDeploy(new NamedInputStream(app), baseUrl); DataUtils.checkValidApplicationInfo(applicationInfo); appId = applicationInfo.getId(); appInfo = applicationInfo; } else { Assert.fail("Cannot find file: " + app.getAbsolutePath()); } } private void deployParamApplication() throws MalformedURLException, WebApiException, FileNotFoundException { initMock(handler.applicationDeploy(), "applicationDeploy", ResponseCode.ACCEPTED); File app = new File(ServerUtils.createFileName(DEPLOY_FOLDER + "testParam-1.0.0.zpk")); if (app.exists()) { String baseUrl = "http://testDeployParam.com"; HashMap<String, String> params = new HashMap<String, String>(); params.put("some_parameter", "test"); ApplicationInfo applicationInfo = Configuration.getClient() .applicationDeploy(new NamedInputStream(app), baseUrl, params); DataUtils.checkValidApplicationInfo(applicationInfo); appId = applicationInfo.getId(); appInfo = applicationInfo; } else { Assert.fail("Cannot find file: " + app.getAbsolutePath()); } } @After public void removeApplication() throws MalformedURLException, WebApiException { removeApplication(appId); } private void removeApplication(int id) throws MalformedURLException, WebApiException { if (isDeployed()) { initMock(handler.applicationRemove(), "applicationRemove", ResponseCode.ACCEPTED); ApplicationInfo applicationInfo = Configuration.getClient() .applicationRemove(id); DataUtils.checkValidApplicationInfo(applicationInfo); } } private boolean isDeployed() throws MalformedURLException, WebApiException { initMock(handler.applicationGetStatus(), "applicationGetStatus", ResponseCode.OK); ApplicationStatus status = ApplicationStatus.STAGING; while (status != ApplicationStatus.DEPLOYED) { ApplicationsList applicationGetStatus = Configuration.getClient() .applicationGetStatus(String.valueOf(appId)); List<ApplicationInfo> infos = applicationGetStatus .getApplicationsInfo(); for (ApplicationInfo applicationInfo : infos) { if (applicationInfo.getId() == appId) { status = applicationInfo.getStatus(); } } } return true; } @Test public void testApplicationGetStatus() throws WebApiException, MalformedURLException, FileNotFoundException { deployApplication(); initMock(handler.applicationGetStatus(), "applicationGetStatus", ResponseCode.OK); ApplicationsList applicationGetStatus = Configuration.getClient() .applicationGetStatus(); DataUtils.checkValidApplicationsList(applicationGetStatus); } @Test public void testApplicationGetStatusId() throws WebApiException, MalformedURLException, FileNotFoundException { deployApplication(); initMock(handler.applicationGetStatus(), "applicationGetStatus", ResponseCode.OK); ApplicationsList applicationGetStatus = Configuration.getClient() .applicationGetStatus(String.valueOf(appId)); DataUtils.checkValidApplicationsList(applicationGetStatus); } @Test public void testApplicationDeploy() throws WebApiException, IOException { initMock(handler.applicationDeploy(), "applicationDeploy", ResponseCode.ACCEPTED); File app = new File(ServerUtils.createFileName(DEPLOY_FOLDER + "testParam-1.0.0.zpk")); if (app.exists()) { String baseUrl = "http://deployParams1.com"; HashMap<String, String> params = new HashMap<String, String>(); params.put("some_parameter", "test"); ApplicationInfo applicationInfo = Configuration.getClient() .applicationDeploy(new NamedInputStream(app), baseUrl, true, params, "appName", false, false); DataUtils.checkValidApplicationInfo(applicationInfo); appId = applicationInfo.getId(); appInfo = applicationInfo; } else { Assert.fail("Cannot find file: " + app.getAbsolutePath()); } } @Test public void testApplicationDeploy2() throws WebApiException, IOException { initMock(handler.applicationDeploy(), "applicationDeploy", ResponseCode.ACCEPTED); File app = new File(ServerUtils.createFileName(DEPLOY_FOLDER + "test-1.0.0.zpk")); if (app.exists()) { String baseUrl = "http://deploy2.com"; ApplicationInfo applicationInfo = Configuration.getClient() .applicationDeploy(new NamedInputStream(app), baseUrl, true); DataUtils.checkValidApplicationInfo(applicationInfo); appId = applicationInfo.getId(); appInfo = applicationInfo; } } @Test public void testApplicationDeploy5() throws WebApiException, IOException { initMock(handler.applicationDeploy(), "applicationDeploy", ResponseCode.ACCEPTED); File app = new File(ServerUtils.createFileName(DEPLOY_FOLDER + "test-1.0.0.zpk")); if (app.exists()) { String baseUrl = "http://deploy5.com"; ApplicationInfo applicationInfo = Configuration.getClient() .applicationDeploy(new NamedInputStream(app), baseUrl, "deploy5"); DataUtils.checkValidApplicationInfo(applicationInfo); appId = applicationInfo.getId(); appInfo = applicationInfo; } } @Test public void testApplicationDeploy6() throws WebApiException, IOException { initMock(handler.applicationDeploy(), "applicationDeploy", ResponseCode.ACCEPTED); File app = new File(ServerUtils.createFileName(DEPLOY_FOLDER + "testParam-1.0.0.zpk")); if (app.exists()) { String baseUrl = "http://deploy6.com"; HashMap<String, String> params = new HashMap<String, String>(); params.put("some_parameter", "test"); ApplicationInfo applicationInfo = Configuration.getClient() .applicationDeploy(new NamedInputStream(app), baseUrl, params, "appName"); DataUtils.checkValidApplicationInfo(applicationInfo); appId = applicationInfo.getId(); appInfo = applicationInfo; } else { Assert.fail("Cannot find file: " + app.getAbsolutePath()); } } @Test public void testApplicationDeploy7() throws WebApiException, IOException { initMock(handler.applicationDeploy(), "applicationDeploy", ResponseCode.ACCEPTED); File app = new File(ServerUtils.createFileName(DEPLOY_FOLDER + "testParam-1.0.0.zpk")); if (app.exists()) { String baseUrl = "http://deploy7.com"; HashMap<String, String> params = new HashMap<String, String>(); params.put("some_parameter", "test"); ApplicationInfo applicationInfo = Configuration.getClient() .applicationDeploy(new NamedInputStream(app), baseUrl, true, params); DataUtils.checkValidApplicationInfo(applicationInfo); appId = applicationInfo.getId(); appInfo = applicationInfo; } else { Assert.fail("Cannot find file: " + app.getAbsolutePath()); } } @Test public void testApplicationDeploy8() throws WebApiException, IOException { initMock(handler.applicationDeploy(), "applicationDeploy", ResponseCode.ACCEPTED); File app = new File(ServerUtils.createFileName(DEPLOY_FOLDER + "test-1.0.0.zpk")); if (app.exists()) { String baseUrl = "http://deploy8.com"; ApplicationInfo applicationInfo = Configuration.getClient() .applicationDeploy(new NamedInputStream(app), baseUrl, true, "deploy8"); DataUtils.checkValidApplicationInfo(applicationInfo); appId = applicationInfo.getId(); appInfo = applicationInfo; } } @Test public void testApplicationUpdate() throws WebApiException, IOException { deployParamApplication(); initMock(handler.applicationUpdate(), "applicationUpdate", ResponseCode.ACCEPTED); File app = new File(ServerUtils.createFileName(DEPLOY_FOLDER + "testParam-1.0.0.zpk")); if (app.exists()) { HashMap<String, String> params = new HashMap<String, String>(); params.put("some_parameter", "test"); ApplicationInfo applicationInfo = Configuration.getClient() .applicationUpdate(appId, new NamedInputStream(app), true, params); DataUtils.checkValidApplicationInfo(applicationInfo); } else { Assert.fail("Cannot find file: " + app.getAbsolutePath()); } } @Test public void testApplicationUpdateNullUserParam() throws WebApiException, IOException { deployApplication(); initMock(handler.applicationUpdate(), "applicationUpdate", ResponseCode.ACCEPTED); File app = new File(ServerUtils.createFileName(DEPLOY_FOLDER + "test-1.0.0.zpk")); if (app.exists()) { ApplicationInfo applicationInfo = Configuration.getClient() .applicationUpdate(appId, new NamedInputStream(app), true); DataUtils.checkValidApplicationInfo(applicationInfo); } else { Assert.fail("Cannot find file: " + app.getAbsolutePath()); } } @Test public void testApplicationUpdateNullIgnoreAndUserParam() throws WebApiException, IOException { deployApplication(); initMock(handler.applicationUpdate(), "applicationUpdate", ResponseCode.ACCEPTED); File app = new File(ServerUtils.createFileName(DEPLOY_FOLDER + "test-1.0.0.zpk")); if (app.exists()) { ApplicationInfo applicationInfo = Configuration.getClient() .applicationUpdate(appId, new NamedInputStream(app)); DataUtils.checkValidApplicationInfo(applicationInfo); } else { Assert.fail("Cannot find file: " + app.getAbsolutePath()); } } @Test public void testApplicationUpdateNullIgnore() throws WebApiException, IOException { deployParamApplication(); initMock(handler.applicationUpdate(), "applicationUpdate", ResponseCode.ACCEPTED); File app = new File(ServerUtils.createFileName(DEPLOY_FOLDER + "testParam-1.0.0.zpk")); if (app.exists()) { HashMap<String, String> params = new HashMap<String, String>(); params.put("some_parameter", "test"); ApplicationInfo applicationInfo = Configuration.getClient() .applicationUpdate(appId, new NamedInputStream(app), params); DataUtils.checkValidApplicationInfo(applicationInfo); } else { Assert.fail("Cannot find file: " + app.getAbsolutePath()); } } @Test public void testApplicationRedeploy() throws WebApiException, IOException { deployApplication(); if (isDeployed()) { initMock(handler.applicationRedeploy(), "applicationSynchronize", ResponseCode.ACCEPTED); ApplicationServers servers = appInfo.getServers(); Assert.assertTrue(servers.getApplicationServers().size() > 0); int serverId = servers.getApplicationServers().get(0).getId(); ApplicationInfo applicationInfo = Configuration .getClient() .applicationSynchronize(appId, false, String.valueOf(serverId)); DataUtils.checkValidApplicationInfo(applicationInfo); } } @Test public void testApplicationRedeployNoServers() throws WebApiException, IOException { deployApplication(); if (isDeployed()) { initMock(handler.applicationRedeploy(), "applicationSynchronize", ResponseCode.ACCEPTED); ApplicationInfo applicationInfo = Configuration.getClient() .applicationSynchronize(appId, false); DataUtils.checkValidApplicationInfo(applicationInfo); } } @Test public void testApplicationRedeployNoServersAndIgnore() throws WebApiException, IOException { deployApplication(); if (isDeployed()) { initMock(handler.applicationRedeploy(), "applicationSynchronize", ResponseCode.ACCEPTED); ApplicationInfo applicationInfo = Configuration.getClient() .applicationSynchronize(appId); DataUtils.checkValidApplicationInfo(applicationInfo); } } @Test public void testApplicationRedeployNoIgnore() throws WebApiException, IOException { deployApplication(); if (isDeployed()) { initMock(handler.applicationRedeploy(), "applicationSynchronize", ResponseCode.ACCEPTED); ApplicationServers servers = appInfo.getServers(); Assert.assertTrue(servers.getApplicationServers().size() > 0); int serverId = servers.getApplicationServers().get(0).getId(); ApplicationInfo applicationInfo = Configuration.getClient() .applicationSynchronize(appId, String.valueOf(serverId)); DataUtils.checkValidApplicationInfo(applicationInfo); } } @Test public void testApplicationRollback() throws WebApiException, IOException { deployApplication(); if (isDeployed()) { initMock(handler.applicationRollback(), "applicationRollback", ResponseCode.ACCEPTED); ApplicationServers servers = appInfo.getServers(); Assert.assertTrue(servers.getApplicationServers().size() > 0); ApplicationInfo applicationInfo = Configuration.getClient() .applicationRollback(appId); DataUtils.checkValidApplicationInfo(applicationInfo); } } }