/**
* The contents of this file are subject to the OpenMRS Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://license.openmrs.org
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations
* under the License.
*
* Copyright (C) OpenMRS, LLC. All Rights Reserved.
*/
package org.openmrs.module;
import java.net.URL;
import junit.framework.Assert;
import org.junit.Ignore;
import org.junit.Test;
import org.openmrs.test.BaseContextSensitiveTest;
import org.openmrs.test.Verifies;
/**
* Tests methods on the {@link ModuleUtil} class
*/
@Ignore
public class ModuleUtilTest extends BaseContextSensitiveTest {
/**
* This test requires a connection to the internet to pass
*
* @see {@link ModuleUtil#getURLStream(URL)}
*/
@Test
@Verifies(value = "should return a valid input stream for old module urls", method = "getURLStream(URL)")
public void getURLStream_shouldReturnAValidInputStreamForOldModuleUrls() throws Exception {
ModuleUtil.getURLStream(new URL("https://dev.openmrs.org/modules/download/formentry/update.rdf"));
}
/**
* This test requires a connection to the internet to pass
*
* @see {@link ModuleUtil#getURL(URL)}
*/
@Test
@Ignore
@Verifies(value = "should return an update rdf page for old https dev urls", method = "getURL(URL)")
public void getURL_shouldReturnAnUpdateRdfPageForOldHttpsDevUrls() throws Exception {
String url = "https://dev.openmrs.org/modules/download/formentry/update.rdf";
String updateRdf = ModuleUtil.getURL(new URL(url));
Assert.assertTrue("Unable to fetch module update url: " + url, updateRdf.contains("<updates"));
}
/**
* This test requires a connection to the internet to pass
*
* @see {@link ModuleUtil#getURL(URL)}
*/
@Test
@Ignore
@Verifies(value = "should return an update rdf page for old https module urls", method = "getURL(URL)")
public void getURL_shouldReturnAnUpdateRdfPageForOldHttpsModuleUrls() throws Exception {
String url = "https://modules.openmrs.org/modules/download/formentry/update.rdf";
String updateRdf = ModuleUtil.getURL(new URL(url));
Assert.assertTrue("Unable to fetch module update url: " + url, updateRdf.contains("<updates"));
}
/**
* This test requires a connection to the internet to pass
*
* @see {@link ModuleUtil#getURL(URL)}
*/
@Test
@Ignore
@Verifies(value = "should return an update rdf page for module urls", method = "getURL(URL)")
public void getURL_shouldReturnAnUpdateRdfPageForModuleUrls() throws Exception {
String url = "http://modules.openmrs.org/modules/download/formentry/update.rdf";
String updateRdf = ModuleUtil.getURL(new URL(url));
Assert.assertTrue("Unable to fetch module update url: " + url, updateRdf.contains("<updates"));
}
/**
* @see {@link ModuleUtil#checkMandatoryModulesStarted()}
*/
@Test(expected = MandatoryModuleException.class)
@Verifies(value = "should throw ModuleException if a mandatory module is not started", method = "checkMandatoryModulesStarted()")
public void checkMandatoryModulesStarted_shouldThrowModuleExceptionIfAMandatoryModuleIsNotStarted() throws Exception {
executeDataSet("org/openmrs/module/include/mandatoryModulesGlobalProperties.xml");
ModuleUtil.checkMandatoryModulesStarted();
}
/**
* @see {@link ModuleUtil#checkOpenmrsCoreModulesStarted()}
*/
@Test(expected = OpenmrsCoreModuleException.class)
@Verifies(value = "should throw ModuleException if a core module is not started", method = "checkOpenmrsCoreModulesStarted()")
public void checkMandatoryModulesStarted_shouldThrowModuleExceptionIfACoreModuleIsNotStarted() throws Exception {
runtimeProperties.setProperty(ModuleConstants.IGNORE_CORE_MODULES_PROPERTY, "false");
try {
ModuleUtil.checkOpenmrsCoreModulesStarted();
}
finally {
runtimeProperties.setProperty(ModuleConstants.IGNORE_CORE_MODULES_PROPERTY, "true");
}
}
/**
* @see {@link ModuleUtil#getMandatoryModules()}
*/
@Test
@Verifies(value = "should return mandatory module ids", method = "getMandatoryModules()")
public void getMandatoryModules_shouldReturnMandatoryModuleIds() throws Exception {
executeDataSet("org/openmrs/module/include/mandatoryModulesGlobalProperties.xml");
Assert.assertEquals(1, ModuleUtil.getMandatoryModules().size());
Assert.assertEquals("firstmodule", ModuleUtil.getMandatoryModules().get(0));
}
/**
* @see {@link ModuleUtil#matchRequiredVersions(String,String)}
*/
@Test
@Verifies(value = "should allow ranged required version", method = "matchRequiredVersions(String,String)")
public void matchRequiredVersions_shouldAllowRangedRequiredVersion() throws Exception {
String openmrsVersion = "1.4.3";
String requiredOpenmrsVersion = "1.2.3 - 1.4.4";
Assert.assertTrue(ModuleUtil.matchRequiredVersions(openmrsVersion, requiredOpenmrsVersion));
}
/**
* @see {@link ModuleUtil#matchRequiredVersions(String,String)}
*/
@Test
@Verifies(value = "should allow ranged required version with wild card", method = "matchRequiredVersions(String,String)")
public void matchRequiredVersions_shouldAllowRangedRequiredVersionWithWildCard() throws Exception {
String openmrsVersion = "1.4.3";
String requiredOpenmrsVersion = "1.2.* - 1.4.*";
Assert.assertTrue(ModuleUtil.matchRequiredVersions(openmrsVersion, requiredOpenmrsVersion));
}
/**
* @see {@link ModuleUtil#matchRequiredVersions(String,String)}
*/
@Test
@Verifies(value = "should allow ranged required version with wild card on one end", method = "matchRequiredVersions(String,String)")
public void matchRequiredVersions_shouldAllowRangedRequiredVersionWithWildCardOnOneEnd() throws Exception {
String openmrsVersion = "1.4.3";
String requiredOpenmrsVersion = "1.2.3 - 1.4.*";
Assert.assertTrue(ModuleUtil.matchRequiredVersions(openmrsVersion, requiredOpenmrsVersion));
requiredOpenmrsVersion = "1.4.* - 1.4.5";
Assert.assertTrue(ModuleUtil.matchRequiredVersions(openmrsVersion, requiredOpenmrsVersion));
}
/**
* @see {@link ModuleUtil#matchRequiredVersions(String,String)}
*/
@Test
@Verifies(value = "should allow single entry for required version", method = "matchRequiredVersions(String,String)")
public void matchRequiredVersions_shouldAllowSingleEntryForRequiredVersion() throws Exception {
String openmrsVersion = "1.4.3";
String requiredOpenmrsVersion = "1.4.2";
Assert.assertTrue(ModuleUtil.matchRequiredVersions(openmrsVersion, requiredOpenmrsVersion));
}
/**
* @see {@link ModuleUtil#matchRequiredVersions(String,String)}
*/
@Test
@Verifies(value = "should allow required version with wild card", method = "matchRequiredVersions(String,String)")
public void matchRequiredVersions_shouldAllowRequiredVersionWithWildCard() throws Exception {
String openmrsVersion = "1.4.3";
String requiredOpenmrsVersion = "1.4.*";
Assert.assertTrue(ModuleUtil.matchRequiredVersions(openmrsVersion, requiredOpenmrsVersion));
}
/**
* @see {@link ModuleUtil#matchRequiredVersions(String,String)}
*/
@Test
@Verifies(value = "should allow non numeric character required version", method = "matchRequiredVersions(String,String)")
public void matchRequiredVersions_shouldAllowNonNumericCharacterRequiredVersion() throws Exception {
String openmrsVersion = "1.4.3";
String requiredOpenmrsVersion = "1.4.3a";
Assert.assertTrue(ModuleUtil.matchRequiredVersions(openmrsVersion, requiredOpenmrsVersion));
}
/**
* @see {@link ModuleUtil#matchRequiredVersions(String,String)}
*/
@Test
@Verifies(value = "should allow ranged non numeric character required version", method = "matchRequiredVersions(String,String)")
public void matchRequiredVersions_shouldAllowRangedNonNumericCharacterRequiredVersion() throws Exception {
String openmrsVersion = "1.4.3";
String requiredOpenmrsVersion = "1.4.1a - 1.4.3a";
Assert.assertTrue(ModuleUtil.matchRequiredVersions(openmrsVersion, requiredOpenmrsVersion));
}
/**
* @see {@link ModuleUtil#matchRequiredVersions(String,String)}
*/
@Test
@Verifies(value = "should allow ranged non numeric character with wild card", method = "matchRequiredVersions(String,String)")
public void matchRequiredVersions_shouldAllowRangedNonNumericCharacterWithWildCard() throws Exception {
String openmrsVersion = "1.4.3";
String requiredOpenmrsVersion = "1.3.*a - 1.4.*a";
Assert.assertTrue(ModuleUtil.matchRequiredVersions(openmrsVersion, requiredOpenmrsVersion));
}
/**
* @see {@link ModuleUtil#matchRequiredVersions(String,String)}
*/
@Test
@Verifies(value = "should allow ranged non numeric character with wild card on one end", method = "matchRequiredVersions(String,String)")
public void matchRequiredVersions_shouldAllowRangedNonNumericCharacterWithWildCardOnOneEnd() throws Exception {
String openmrsVersion = "1.4.3";
String requiredOpenmrsVersion = "1.2.3 - 1.4.*a";
Assert.assertTrue(ModuleUtil.matchRequiredVersions(openmrsVersion, requiredOpenmrsVersion));
requiredOpenmrsVersion = "1.4.*a - 1.4.5a";
Assert.assertTrue(ModuleUtil.matchRequiredVersions(openmrsVersion, requiredOpenmrsVersion));
}
/**
* @see {@link ModuleUtil#matchRequiredVersions(String,String)}
*/
@Test
@Verifies(value = "should return false when openmrs version beyond wild card range", method = "matchRequiredVersions(String,String)")
public void matchRequiredVersions_shouldReturnFalseWhenOpenmrsVersionBeyondWildCardRange() throws Exception {
String openmrsVersion = "1.4.3";
String requiredOpenmrsVersion = "1.3.*";
Assert.assertFalse(ModuleUtil.matchRequiredVersions(openmrsVersion, requiredOpenmrsVersion));
requiredOpenmrsVersion = "1.5.*";
Assert.assertFalse(ModuleUtil.matchRequiredVersions(openmrsVersion, requiredOpenmrsVersion));
}
/**
* @see {@link ModuleUtil#matchRequiredVersions(String,String)}
*/
@Test
@Verifies(value = "should return false when required version beyond openmrs version", method = "matchRequiredVersions(String,String)")
public void matchRequiredVersions_shouldReturnFalseWhenRequiredVersionBeyondOpenmrsVersion() throws Exception {
String openmrsVersion = "1.4.3";
String requiredOpenmrsVersion = "1.5.*";
Assert.assertFalse(ModuleUtil.matchRequiredVersions(openmrsVersion, requiredOpenmrsVersion));
}
/**
* @see {@link ModuleUtil#matchRequiredVersions(String,String)}
*/
@Test
@Verifies(value = "should return false when required version with wild card beyond openmrs version", method = "matchRequiredVersions(String,String)")
public void matchRequiredVersions_shouldReturnFalseWhenRequiredVersionWithWildCardBeyondOpenmrsVersion()
throws Exception {
String openmrsVersion = "1.4.3";
String requiredOpenmrsVersion = "1.5.* - 1.6.*";
Assert.assertFalse(ModuleUtil.matchRequiredVersions(openmrsVersion, requiredOpenmrsVersion));
}
/**
* @see {@link ModuleUtil#matchRequiredVersions(String,String)}
*/
@Test
@Verifies(value = "should return false when required version with wild card on one end beyond openmrs version", method = "matchRequiredVersions(String,String)")
public void matchRequiredVersions_shouldReturnFalseWhenRequiredVersionWithWildCardOnOneEndBeyondOpenmrsVersion()
throws Exception {
String openmrsVersion = "1.4.3";
String requiredOpenmrsVersion = "1.4.5 - 1.5.*";
Assert.assertFalse(ModuleUtil.matchRequiredVersions(openmrsVersion, requiredOpenmrsVersion));
requiredOpenmrsVersion = "1.5.* - 1.6.0";
Assert.assertFalse(ModuleUtil.matchRequiredVersions(openmrsVersion, requiredOpenmrsVersion));
}
/**
* @see {@link ModuleUtil#matchRequiredVersions(String,String)}
*/
@Test
@Verifies(value = "should return false when single entry required version beyond openmrs version", method = "matchRequiredVersions(String,String)")
public void matchRequiredVersions_shouldReturnFalseWhenSingleEntryRequiredVersionBeyondOpenmrsVersion() throws Exception {
String openmrsVersion = "1.4.3";
String requiredOpenmrsVersion = "1.5.0";
Assert.assertFalse(ModuleUtil.matchRequiredVersions(openmrsVersion, requiredOpenmrsVersion));
}
/**
* @see {@link ModuleUtil#matchRequiredVersions(String,String)}
*
*/
@Test
@Verifies(value = "should allow release type in the version", method = "matchRequiredVersions(String,String)")
public void matchRequiredVersions_shouldAllowReleaseTypeInTheVersion() throws Exception {
String openmrsVersion = "1.4.3";
String requiredOpenmrsVersion = "1.4.1-dev - 1.5.*-alpha";
Assert.assertTrue(ModuleUtil.matchRequiredVersions(openmrsVersion, requiredOpenmrsVersion));
requiredOpenmrsVersion = "1.5.*-dev - 1.6.0-dev";
Assert.assertFalse(ModuleUtil.matchRequiredVersions(openmrsVersion, requiredOpenmrsVersion));
}
/**
* @see {@link ModuleUtil#getPathForResource(Module,String)}
*/
@Test
@Verifies(value = "should handle ui springmvc css ui dot css example", method = "getPathForResource(Module,String)")
public void getPathForResource_shouldHandleUiSpringmvcCssUiDotCssExample() throws Exception {
Module module = new Module("Unit test");
module.setModuleId("ui.springmvc");
String path = "/ui/springmvc/css/ui.css";
Assert.assertEquals("/css/ui.css", ModuleUtil.getPathForResource(module, path));
}
/**
* @see {@link ModuleUtil#getModuleForPath(String)}
*/
@Test
@Verifies(value = "should handle ui springmvc css ui dot css when ui dot springmvc module is running", method = "getModuleForPath(String)")
public void getModuleForPath_shouldHandleUiSpringmvcCssUiDotCssWhenUiDotSpringmvcModuleIsRunning() throws Exception {
ModuleFactory.getStartedModulesMap().clear();
Module module = new Module("For Unit Test");
module.setModuleId("ui.springmvc");
ModuleFactory.getStartedModulesMap().put(module.getModuleId(), module);
String path = "/ui/springmvc/css/ui.css";
Assert.assertEquals(module, ModuleUtil.getModuleForPath(path));
}
/**
* @see {@link ModuleUtil#getModuleForPath(String)}
*/
@Test
@Verifies(value = "should handle ui springmvc css ui dot css when ui module is running", method = "getModuleForPath(String)")
public void getModuleForPath_shouldHandleUiSpringmvcCssUiDotCssWhenUiModuleIsRunning() throws Exception {
ModuleFactory.getStartedModulesMap().clear();
Module module = new Module("For Unit Test");
module.setModuleId("ui");
ModuleFactory.getStartedModulesMap().put(module.getModuleId(), module);
String path = "/ui/springmvc/css/ui.css";
Assert.assertEquals(module, ModuleUtil.getModuleForPath(path));
}
/**
* @see {@link ModuleUtil#getModuleForPath(String)}
*/
@Test
@Verifies(value = "should return null for ui springmvc css ui dot css when no relevant module is running", method = "getModuleForPath(String)")
public void getModuleForPath_shouldReturnNullForUiSpringmvcCssUiDotCssWhenNoRelevantModuleIsRunning() throws Exception {
ModuleFactory.getStartedModulesMap().clear();
String path = "/ui/springmvc/css/ui.css";
Assert.assertNull(ModuleUtil.getModuleForPath(path));
}
/**
* @see {@link ModuleUtil#checkRequiredVersion(String, String)}
*/
@Test(expected = ModuleException.class)
@Verifies(value = "should throw ModuleException if openmrs version beyond wild card range", method = "checkRequiredVersion(String, String)")
public void checkRequiredVersion_shouldThrowModuleExceptionIfOpenmrsVersionBeyondWildCardRange() throws Exception {
String openmrsVersion = "1.4.3";
String requiredOpenmrsVersion = "1.3.*";
ModuleUtil.checkRequiredVersion(openmrsVersion, requiredOpenmrsVersion);
}
/**
* @see {@link ModuleUtil#checkRequiredVersion(String, String)}
*/
@Test(expected = ModuleException.class)
@Verifies(value = "should throw ModuleException if required version beyond openmrs version", method = "checkRequiredVersion(String, String)")
public void checkRequiredVersion_shouldThrowModuleExceptionIfRequiredVersionBeyondOpenmrsVersion() throws Exception {
String openmrsVersion = "1.4.3";
String requiredOpenmrsVersion = "1.5.*";
ModuleUtil.checkRequiredVersion(openmrsVersion, requiredOpenmrsVersion);
}
/**
* @see {@link ModuleUtil#checkRequiredVersion(String, String)}
*/
@Test(expected = ModuleException.class)
@Verifies(value = "should throw ModuleException if required version with wild card beyond openmrs version", method = "checkRequiredVersion(String, String)")
public void checkRequiredVersion_shouldThrowModuleExceptionIfRequiredVersionWithWildCardBeyondOpenmrsVersion()
throws Exception {
String openmrsVersion = "1.4.3";
String requiredOpenmrsVersion = "1.5.* - 1.6.*";
ModuleUtil.checkRequiredVersion(openmrsVersion, requiredOpenmrsVersion);
}
/**
* @see {@link ModuleUtil#checkRequiredVersion(String, String)}
*/
@Test(expected = ModuleException.class)
@Verifies(value = "should throw ModuleException if required version with wild card on one end beyond openmrs version", method = "checkRequiredVersion(String, String)")
public void checkRequiredVersion_shouldThrowModuleExceptionIfRequiredVersionWithWildCardOnOneEndBeyondOpenmrsVersion()
throws Exception {
String openmrsVersion = "1.4.3";
String requiredOpenmrsVersion = "1.4.5 - 1.5.*";
ModuleUtil.checkRequiredVersion(openmrsVersion, requiredOpenmrsVersion);
}
/**
* @see {@link ModuleUtil#checkRequiredVersion(String, String)}
*/
@Test(expected = ModuleException.class)
@Verifies(value = "should throw ModuleException if single entry required version beyond openmrs version", method = "checkRequiredVersion(String, String)")
public void checkRequiredVersion_shouldThrowModuleExceptionIfSingleEntryRequiredVersionBeyondOpenmrsVersion()
throws Exception {
String openmrsVersion = "1.4.3";
String requiredOpenmrsVersion = "1.5.0";
ModuleUtil.checkRequiredVersion(openmrsVersion, requiredOpenmrsVersion);
}
/**
* @see {@link ModuleUtil#compareVersion(String,String)}
*
*/
@Test
@Verifies(value = "should correctly comparing two version number", method = "compareVersion(String,String)")
public void compareVersion_shouldCorrectlyComparingTwoVersionNumber() throws Exception {
String olderVersion = "2.1.1";
String newerVersion = "2.1.10";
ModuleUtil.compareVersion(olderVersion, newerVersion);
}
}