package org.cagrid.mms.test;
import static junit.framework.Assert.assertNotNull;
import static org.junit.Assert.assertEquals;
import static org.ops4j.pax.exam.CoreOptions.maven;
import gov.nih.nci.cagrid.metadata.ServiceMetadata;
import gov.nih.nci.cagrid.metadata.security.ServiceSecurityMetadata;
import java.io.File;
import org.apache.karaf.tooling.exam.options.KarafDistributionConfigurationFileExtendOption;
import org.apache.karaf.tooling.exam.options.KarafDistributionConfigurationFileReplacementOption;
import org.cagrid.mms.service.MMS;
import org.cagrid.mms.service.MetadataModelService;
import org.cagrid.mms.test.utils.MMSTestUtils;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.ops4j.pax.exam.Option;
import org.ops4j.pax.exam.junit.Configuration;
import org.ops4j.pax.exam.junit.ExamReactorStrategy;
import org.ops4j.pax.exam.junit.JUnit4TestRunner;
import org.ops4j.pax.exam.spi.reactors.AllConfinedStagedReactorFactory;
@RunWith(JUnit4TestRunner.class)
@ExamReactorStrategy(AllConfinedStagedReactorFactory.class)
public class MMSInstallTest extends CaGridTestSupport {
@Override
@Configuration
public Option[] config() {
Option[] options = new Option[] {
new KarafDistributionConfigurationFileReplacementOption(MMSTestUtils.SERVICEMETADATA, new File("src/test/resources/serviceMetadata.xml")),
new KarafDistributionConfigurationFileReplacementOption(MMSTestUtils.SERVICESECURITYMETADATA, new File("src/test/resources/serviceSecurityMetadata.xml")),
// Had to install the hibernate stuff at boot
new KarafDistributionConfigurationFileExtendOption("etc/org.apache.karaf.features.cfg", "featuresRepositories", "," + maven().groupId("org.cagrid").artifactId("cagrid-features").versionAsInProject().classifier("features").type("xml").getURL()),
new KarafDistributionConfigurationFileExtendOption("etc/org.apache.karaf.features.cfg", "featuresBoot", ",cagrid-third-party"),
};
return CaGridTestSupport.concatAll(super.config(), options);
}
@Test
public void testInstallMMS() throws Exception {
installAndAssertFeature("cagrid-mms", 30000L);
System.err.println(executeCommand("features:list"));
assertBundleInstalled("cagrid-mms-api");
assertBundleInstalled("cagrid-mms-cadsr-impl");
assertBundleInstalled("cagrid-mms-service");
assertBundleInstalled("cagrid-mms-wsrf");
MMS mmsImpl = getOsgiService(MMS.class, 30000L);
assertNotNull(mmsImpl);
MetadataModelService mmsService = getOsgiService(MetadataModelService.class, 30000L);
assertNotNull(mmsService);
// grab its metadata
ServiceMetadata metadata = mmsService.getServiceMetadata();
Assert.assertNotNull(metadata);
assertEquals("Service metadata name was not as expected.", "MetadataModelService", metadata.getServiceDescription().getService().getName());
ServiceSecurityMetadata securityMetadata = mmsService.getServiceSecurityMetadata();
Assert.assertNotNull(securityMetadata);
}
}