mirror of
https://github.com/ctripcorp/zeus.git
synced 2024-09-21 16:16:09 +08:00
add test case
This commit is contained in:
parent
490d6fbd31
commit
606cd74263
|
@ -281,7 +281,7 @@ public class OperationResource {
|
|||
if (domain == null || domain.isEmpty()) {
|
||||
throw new ValidationException("Domain info is required.");
|
||||
}
|
||||
String[] domainMembers = domain.split("|");
|
||||
String[] domainMembers = domain.split("\\|");
|
||||
Arrays.sort(domainMembers);
|
||||
domain = Joiner.on("|").join(domainMembers);
|
||||
|
||||
|
@ -313,11 +313,11 @@ public class OperationResource {
|
|||
boolean grayscale = ips == null;
|
||||
ips = configureIps(vsId, ips);
|
||||
|
||||
String[] domainMembers = domain.split("|");
|
||||
String[] domainMembers = domain.split("\\|");
|
||||
Arrays.sort(domainMembers);
|
||||
domain = Joiner.on("|").join(domainMembers);
|
||||
|
||||
Long certId = certificateService.upload(cert, key, domain,
|
||||
Long certId = certificateService.uploadByReplace(cert, key, domain,
|
||||
grayscale ? CertificateConfig.GRAYSCALE : CertificateConfig.ONBOARD);
|
||||
return responseHandler.handle("Certificate uploaded. New cert-id is " + certId + ". Contact slb team with the given cert-id to install the new certificate.", hh.getMediaType());
|
||||
// certificateService.command(vsId, ips, certId);
|
||||
|
|
|
@ -19,6 +19,8 @@ public interface VirtualServerRepository {
|
|||
|
||||
void deleteVirtualServer(Long virtualServerId) throws Exception;
|
||||
|
||||
void installCertificate(VirtualServer virtualServer) throws Exception;
|
||||
|
||||
@Deprecated
|
||||
List<Long> portVirtualServerRel() throws Exception;
|
||||
|
||||
|
|
|
@ -102,6 +102,12 @@ public class SlbRepositoryImpl implements SlbRepository {
|
|||
autoFiller.autofill(slb);
|
||||
slbEntityManager.add(slb);
|
||||
|
||||
for (VirtualServer virtualServer : slb.getVirtualServers()) {
|
||||
if (virtualServer.getSsl().booleanValue()) {
|
||||
virtualServerRepository.installCertificate(virtualServer);
|
||||
}
|
||||
}
|
||||
|
||||
for (SlbServer slbServer : slb.getSlbServers()) {
|
||||
nginxServerDao.insert(new NginxServerDo()
|
||||
.setIp(slbServer.getIp())
|
||||
|
|
|
@ -124,7 +124,8 @@ public class VirtualServerRepositoryImpl implements VirtualServerRepository {
|
|||
virtualServerEntityManager.port(vs);
|
||||
}
|
||||
|
||||
private void installCertificate(VirtualServer virtualServer) throws Exception {
|
||||
@Override
|
||||
public void installCertificate(VirtualServer virtualServer) throws Exception {
|
||||
List<String> ips = slbQuery.getSlbIps(virtualServer.getSlbId());
|
||||
List<Domain> vsDomains = virtualServer.getDomains();
|
||||
String[] domains = new String[vsDomains.size()];
|
||||
|
|
|
@ -20,7 +20,16 @@ public class CertificateConfig {
|
|||
return installDir + vsId;
|
||||
}
|
||||
|
||||
public void setInstallDir(String installDir) {
|
||||
this.installDir = installDir;
|
||||
}
|
||||
|
||||
public boolean getWriteFileOption() {
|
||||
return writeFileOption;
|
||||
}
|
||||
|
||||
public void setWriteFileOption(boolean writeFileOption) {
|
||||
this.writeFileOption = writeFileOption;
|
||||
}
|
||||
|
||||
}
|
|
@ -13,6 +13,8 @@ public interface CertificateService {
|
|||
|
||||
Long upload(InputStream cert, InputStream key, String domain, boolean state) throws Exception;
|
||||
|
||||
Long uploadByReplace(InputStream cert, InputStream key, String domain, boolean state) throws Exception;
|
||||
|
||||
void command(Long vsId, List<String> ips, Long certId) throws Exception;
|
||||
|
||||
void recall(Long vsId, List<String> ips) throws Exception;
|
||||
|
|
|
@ -60,8 +60,24 @@ public class CertificateServiceImpl implements CertificateService {
|
|||
|
||||
@Override
|
||||
public Long upload(InputStream cert, InputStream key, String domain, boolean state) throws Exception {
|
||||
if (cert == null || key == null)
|
||||
throw new ValidationException("Cert or key file is null.");
|
||||
List<CertificateDo> existing = certificateDao.findByDomainAndState(new String[]{domain}, state, CertificateEntity.READSET_FULL);
|
||||
if (existing.size() > 0)
|
||||
throw new ValidationException("Certificate exists.");
|
||||
CertificateDo d = new CertificateDo()
|
||||
.setCert(IOUtils.getBytes(cert)).setKey(IOUtils.getBytes(key)).setDomain(domain).setState(state);
|
||||
certificateDao.insert(d);
|
||||
return d.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long uploadByReplace(InputStream cert, InputStream key, String domain, boolean state) throws Exception {
|
||||
if (cert == null || key == null)
|
||||
throw new ValidationException("Cert or key file is null.");
|
||||
List<CertificateDo> abandoned = certificateDao.findByDomainAndState(new String[]{domain}, state, CertificateEntity.READSET_FULL);
|
||||
certificateDao.deleteById(abandoned.toArray(new CertificateDo[abandoned.size()]));
|
||||
if (abandoned.size() > 0)
|
||||
certificateDao.deleteById(abandoned.toArray(new CertificateDo[abandoned.size()]));
|
||||
CertificateDo d = new CertificateDo()
|
||||
.setCert(IOUtils.getBytes(cert)).setKey(IOUtils.getBytes(key)).setDomain(domain).setState(state);
|
||||
certificateDao.insert(d);
|
||||
|
|
40
src/test/java/com/ctrip/zeus/AbstractServerTest.java
Normal file
40
src/test/java/com/ctrip/zeus/AbstractServerTest.java
Normal file
|
@ -0,0 +1,40 @@
|
|||
package com.ctrip.zeus;
|
||||
|
||||
import com.ctrip.zeus.util.S;
|
||||
import org.codehaus.plexus.component.repository.exception.ComponentLifecycleException;
|
||||
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
|
||||
import org.junit.After;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.Before;
|
||||
import org.junit.BeforeClass;
|
||||
import org.unidal.dal.jdbc.datasource.DataSourceManager;
|
||||
import org.unidal.dal.jdbc.transaction.TransactionManager;
|
||||
import org.unidal.lookup.ContainerLoader;
|
||||
import support.AbstractSpringTest;
|
||||
import support.MysqlDbServer;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
* Created by zhoumy on 2015/11/5.
|
||||
*/
|
||||
public abstract class AbstractServerTest extends AbstractSpringTest {
|
||||
protected static MysqlDbServer mysqlDbServer;
|
||||
|
||||
@BeforeClass
|
||||
public static void setUpDb() throws ComponentLookupException, ComponentLifecycleException {
|
||||
S.setPropertyDefaultValue("CONF_DIR", new File("").getAbsolutePath() + "/conf/test");
|
||||
mysqlDbServer = new MysqlDbServer();
|
||||
mysqlDbServer.start();
|
||||
}
|
||||
|
||||
@AfterClass
|
||||
public static void tearDownDb() throws InterruptedException, ComponentLookupException, ComponentLifecycleException {
|
||||
mysqlDbServer.stop();
|
||||
|
||||
DataSourceManager ds = ContainerLoader.getDefaultContainer().lookup(DataSourceManager.class);
|
||||
ContainerLoader.getDefaultContainer().release(ds);
|
||||
TransactionManager ts = ContainerLoader.getDefaultContainer().lookup(TransactionManager.class);
|
||||
ContainerLoader.getDefaultContainer().release(ts);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,69 @@
|
|||
package com.ctrip.zeus.service;
|
||||
|
||||
import com.ctrip.zeus.AbstractServerTest;
|
||||
import com.ctrip.zeus.dal.core.RCertificateSlbServerDao;
|
||||
import com.ctrip.zeus.dal.core.RCertificateSlbServerEntity;
|
||||
import com.ctrip.zeus.dal.core.RelCertSlbServerDo;
|
||||
import com.ctrip.zeus.exceptions.ValidationException;
|
||||
import com.ctrip.zeus.model.entity.*;
|
||||
import com.ctrip.zeus.service.model.SlbRepository;
|
||||
import com.ctrip.zeus.service.nginx.CertificateConfig;
|
||||
import com.ctrip.zeus.service.nginx.CertificateInstaller;
|
||||
import com.ctrip.zeus.service.nginx.CertificateService;
|
||||
import com.ctrip.zeus.service.nginx.impl.CertificateServiceImpl;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by zhoumy on 2015/11/5.
|
||||
*/
|
||||
public class CertificateServiceTest extends AbstractServerTest {
|
||||
@Resource
|
||||
private CertificateService certificateService;
|
||||
@Resource
|
||||
private SlbRepository slbRepository;
|
||||
|
||||
@Test
|
||||
public void testUploadCertificate() throws Exception {
|
||||
InputStream cert = this.getClass().getClassLoader().getResourceAsStream("com.ctrip.zeus.service/CertTest.crt");
|
||||
InputStream key = this.getClass().getClassLoader().getResourceAsStream("com.ctrip.zeus.service/CertTest.key");
|
||||
|
||||
Long onBoardId = certificateService.upload(cert, key, "localhost", CertificateConfig.ONBOARD);
|
||||
Long grayscaleId = certificateService.upload(cert, key, "localhost", CertificateConfig.GRAYSCALE);
|
||||
Long noiseId = certificateService.upload(cert, key, "testUploadCertificate.noise.com", CertificateConfig.ONBOARD);
|
||||
|
||||
Long pickedId = certificateService.pickCertificate(new String[]{"localhost"});
|
||||
|
||||
Assert.assertFalse(onBoardId.longValue() == grayscaleId.longValue()
|
||||
|| grayscaleId.longValue() == noiseId.longValue()
|
||||
|| onBoardId.longValue() == noiseId.longValue());
|
||||
Assert.assertEquals(onBoardId, pickedId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInstallCertificate() throws Exception {
|
||||
Slb tmpSlb = new Slb().setName("testInstallCertificate").setVersion(1).setStatus("TEST")
|
||||
.addVip(new Vip().setIp("127.0.0.1"))
|
||||
.addSlbServer(new SlbServer().setIp("127.0.0.1").setHostName("LOCALHOST"))
|
||||
.addVirtualServer(new VirtualServer().setName("www.testInstallCertificate.com_443").setSsl(true).setPort("443")
|
||||
.addDomain(new Domain().setName("www.testInstallCertificate.com")));
|
||||
try {
|
||||
tmpSlb = slbRepository.add(tmpSlb);
|
||||
Assert.assertFalse(true);
|
||||
} catch (Exception ex) {
|
||||
Assert.assertTrue(ex instanceof ValidationException);
|
||||
System.out.println(ex.getMessage());
|
||||
}
|
||||
|
||||
InputStream cert = this.getClass().getClassLoader().getResourceAsStream("com.ctrip.zeus.service/CertTest.crt");
|
||||
InputStream key = this.getClass().getClassLoader().getResourceAsStream("com.ctrip.zeus.service/CertTest.key");
|
||||
certificateService.upload(cert, key, "www.testInstallCertificate.com", CertificateConfig.ONBOARD);
|
||||
tmpSlb = slbRepository.add(tmpSlb);
|
||||
Assert.assertNotNull(slbRepository.getById(tmpSlb.getId()));
|
||||
}
|
||||
}
|
|
@ -1,23 +1,15 @@
|
|||
package com.ctrip.zeus.service;
|
||||
|
||||
import com.ctrip.zeus.AbstractServerTest;
|
||||
import com.ctrip.zeus.exceptions.ValidationException;
|
||||
import com.ctrip.zeus.model.entity.*;
|
||||
import com.ctrip.zeus.service.model.*;
|
||||
import com.ctrip.zeus.service.query.GroupCriteriaQuery;
|
||||
import com.ctrip.zeus.service.query.VirtualServerCriteriaQuery;
|
||||
import com.ctrip.zeus.util.ModelAssert;
|
||||
import com.ctrip.zeus.util.S;
|
||||
import org.codehaus.plexus.component.repository.exception.ComponentLifecycleException;
|
||||
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
|
||||
import org.junit.*;
|
||||
import org.unidal.dal.jdbc.datasource.DataSourceManager;
|
||||
import org.unidal.dal.jdbc.transaction.TransactionManager;
|
||||
import org.unidal.lookup.ContainerLoader;
|
||||
import support.AbstractSpringTest;
|
||||
import support.MysqlDbServer;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
@ -26,10 +18,7 @@ import java.util.Set;
|
|||
/**
|
||||
* Created by zhoumy on 2015/3/24.
|
||||
*/
|
||||
public class ModelServiceTest extends AbstractSpringTest {
|
||||
|
||||
private static MysqlDbServer mysqlDbServer;
|
||||
|
||||
public class ModelServiceTest extends AbstractServerTest {
|
||||
@Resource
|
||||
private GroupRepository groupRepository;
|
||||
@Resource
|
||||
|
@ -47,19 +36,18 @@ public class ModelServiceTest extends AbstractSpringTest {
|
|||
private Group testGroup;
|
||||
private long insertedTestGroupId;
|
||||
|
||||
@BeforeClass
|
||||
public static void setUpDb() throws ComponentLookupException, ComponentLifecycleException {
|
||||
S.setPropertyDefaultValue("CONF_DIR", new File("").getAbsolutePath() + "/conf/test");
|
||||
mysqlDbServer = new MysqlDbServer();
|
||||
mysqlDbServer.start();
|
||||
}
|
||||
|
||||
@Before
|
||||
public void fillDb() throws Exception {
|
||||
addSlb();
|
||||
addGroups();
|
||||
}
|
||||
|
||||
@After
|
||||
public void clearDb() throws Exception {
|
||||
deleteGroups();
|
||||
deleteSlb();
|
||||
}
|
||||
|
||||
/**
|
||||
* ****************** test SlbRepository ********************
|
||||
*/
|
||||
|
@ -460,24 +448,4 @@ public class ModelServiceTest extends AbstractSpringTest {
|
|||
Archive archive = archiveService.getLatestSlbArchive(defaultSlb.getId());
|
||||
Assert.assertTrue(archive.getVersion() > 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* ****************** test end ********************
|
||||
*/
|
||||
|
||||
@After
|
||||
public void clearDb() throws Exception {
|
||||
deleteGroups();
|
||||
deleteSlb();
|
||||
}
|
||||
|
||||
@AfterClass
|
||||
public static void tearDownDb() throws InterruptedException, ComponentLookupException, ComponentLifecycleException {
|
||||
mysqlDbServer.stop();
|
||||
|
||||
DataSourceManager ds = ContainerLoader.getDefaultContainer().lookup(DataSourceManager.class);
|
||||
ContainerLoader.getDefaultContainer().release(ds);
|
||||
TransactionManager ts = ContainerLoader.getDefaultContainer().lookup(TransactionManager.class);
|
||||
ContainerLoader.getDefaultContainer().release(ts);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
package com.ctrip.zeus.service.nginx;
|
||||
|
||||
import com.ctrip.zeus.dal.core.RCertificateSlbServerDao;
|
||||
import com.ctrip.zeus.dal.core.RCertificateSlbServerEntity;
|
||||
import com.ctrip.zeus.dal.core.RelCertSlbServerDo;
|
||||
import com.ctrip.zeus.service.nginx.impl.CertificateServiceImpl;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by zhoumy on 2015/11/5.
|
||||
*/
|
||||
public class CertificateTestService extends CertificateServiceImpl {
|
||||
@Resource
|
||||
private RCertificateSlbServerDao rCertificateSlbServerDao;
|
||||
@Resource
|
||||
private CertificateInstaller certificateInstaller;
|
||||
|
||||
@Override
|
||||
public void install(Long vsId) throws Exception {
|
||||
List<RelCertSlbServerDo> dos = rCertificateSlbServerDao.findByVs(vsId, RCertificateSlbServerEntity.READSET_FULL);
|
||||
for (RelCertSlbServerDo d : dos) {
|
||||
if (d.getCertId() == d.getCommand())
|
||||
continue;
|
||||
certificateInstaller.localInstall(vsId, d.getCommand());
|
||||
}
|
||||
}
|
||||
}
|
1
src/test/resources/com.ctrip.zeus.service/CertTest.crt
Normal file
1
src/test/resources/com.ctrip.zeus.service/CertTest.crt
Normal file
|
@ -0,0 +1 @@
|
|||
CertTest.crt
|
1
src/test/resources/com.ctrip.zeus.service/CertTest.key
Normal file
1
src/test/resources/com.ctrip.zeus.service/CertTest.key
Normal file
|
@ -0,0 +1 @@
|
|||
CertTest.key
|
|
@ -17,4 +17,5 @@
|
|||
<!--For unit tests-->
|
||||
<import resource="classpath*:spring-context.xml"/>
|
||||
<bean id="applicationContextProvider" class="support.SpringApplicationContextProvider"/>
|
||||
<bean id="certificateService" class="com.ctrip.zeus.service.nginx.CertificateTestService"/>
|
||||
</beans>
|
||||
|
|
Loading…
Reference in a new issue